Ultimate Guide on How to Flash Firmware on Your Electric Scooter
Looking to upgrade your electric scooter with new firmware? This ultimate guide explains the detailed steps on how to safely flash firmware on your electric scooter for improved performance and features.
Flashing firmware on your electric scooter is the process of updating or replacing the software that controls your scooter's electronic systems, including the motor controller, battery management system (BMS), and dashboard. This advanced procedure can unlock new features, improve performance, fix software bugs, or customize your riding experience. However, it's a technical process that requires careful preparation and understanding of both the benefits and risks involved.
Whether you're looking to restore factory settings, upgrade to the latest manufacturer firmware, or install custom firmware for enhanced capabilities, this comprehensive guide will walk you through everything you need to know about safely flashing firmware on your electric scooter.
Understanding Firmware and Why You Might Flash It
Firmware is the low-level software embedded in your scooter's electronic components. Unlike apps on your phone that you can easily update, firmware operates at the hardware level, controlling fundamental aspects of how your scooter functions. The main components that contain flashable firmware include:
- Motor Controller (ESC/DRV): Manages motor power, acceleration curves, and speed limits
- Battery Management System (BMS): Controls charging, monitors cell voltage, and protects battery health
- Dashboard (BLE): Handles the display, Bluetooth connectivity, and user interface
Common reasons for flashing firmware include fixing manufacturer bugs, unlocking region-restricted speed limits, improving battery efficiency, customizing acceleration and braking behavior, restoring functionality after a failed update, or downgrading from problematic firmware versions.
Before You Begin: Critical Considerations
Warranty and Legal Implications
Flashing custom firmware or modifying manufacturer settings will void your warranty in most cases. Manufacturers can detect firmware modifications, and any future repairs may be denied or charged at full price. Additionally, modifying your scooter to exceed legal speed limits in your region may result in fines, confiscation by law enforcement, or legal liability in accidents.
Modified scooters that exceed their design specifications often lack appropriate safety features for higher speeds. Brakes, tires, and suspension components are engineered for specific performance ranges, and operating beyond these limits significantly increases accident risk. Insurance coverage may also be invalidated if you're riding a modified scooter, leaving you financially responsible for any damages or injuries.
Understanding the Risks
Firmware flashing carries several technical risks that you must understand before proceeding:
- Bricking: If the flashing process is interrupted or incorrect firmware is installed, your scooter may become completely non-functional, requiring specialized recovery procedures or hardware replacement
- Component Damage: Installing firmware with improper power settings can damage the motor, controller, or battery, potentially causing overheating or electrical failures
- Safety Hazards: Incorrect configuration can lead to unexpected behavior such as sudden acceleration, brake failure, or battery issues
- Data Loss: All custom settings and calibrations may be permanently erased during the flashing process
Recent reports from 2025 highlight growing concerns about modifications and their connection to safety incidents. Many fires and failures have been linked to incompatible components, faulty modifications, or the use of non-certified parts purchased from unreliable sources.
Step 1: Identify Your Scooter and Check Compatibility
Before attempting to flash firmware, you need detailed information about your scooter model and current firmware versions. Different brands and models use different processors, communication protocols, and firmware formats.
Popular Models and Their Flashing Ecosystems
Xiaomi Mi M365 Series: Including M365, M365 Pro, 1S, Mi 3, Pro 2, and Lite/Essential models. These scooters have the most developed custom firmware community, with tools specifically designed for easy modification.
Ninebot Max G30 Series: The G30 and G30L models support custom firmware, but compatibility depends heavily on the DRV (motor controller) version. Scooters with DRV version 1.7.3 or below can typically be flashed over Bluetooth, while versions above 1.7.3 require hardware connection via ST-Link.
Ninebot F-Series: Models F20, F25, and F30 have limited custom firmware support. Older firmware versions (DRV below 5.7.0) can be flashed via Bluetooth, but newer versions require ST-Link hardware.
Other Brands: Many other scooters use similar controllers and may be compatible with generic firmware tools, but always verify compatibility before attempting any modifications. Brands like Kugoo, Gotrax, and various generic models may have limited or no custom firmware support.
Checking Your Current Firmware Versions
To check your current firmware versions, connect your scooter to the manufacturer's official app (such as the Xiaomi Home app or Segway-Ninebot app). Navigate to the scooter settings or "About" section to find version numbers for the BLE (Bluetooth/Dashboard), DRV (Motor Controller), and BMS (Battery Management System). Write down these version numbers, as they determine which flashing methods and tools you can use.
For Xiaomi scooters, if the BLE version is 1.5.5 or above, you'll need to use ST-Link hardware to downgrade the dashboard before custom firmware can be installed. For Ninebot G30 models, DRV versions above 1.7.3 will also require ST-Link hardware for flashing.
Step 2: Gather Necessary Tools and Software
The tools you need depend on your scooter model and the complexity of the modification you're attempting.
Software Tools and Apps
For Mobile Flashing (Android/iOS):
- ScooterHacking Utility: The most comprehensive and recommended app for flashing custom firmware on Xiaomi and Ninebot scooters. Available for Android with extensive compatibility
- Luna: Alternative flashing app with iOS support, providing wider device compatibility
- Ninebot IAP: Advanced flashing software built on official Ninebot code, supporting both BLE (Bluetooth) and UART (serial) connections. Available at iap.scooterhacking.org
- m365 DownG: An automated app that selects the correct firmware version for your specific scooter configuration
For Desktop/Web-Based Configuration:
- ScooterHacking CFW Builder (cfw.sh): Web-based custom firmware generator where you can configure speed limits, acceleration curves, power settings, and other parameters
- Xiaomi Mijia M365 Custom Firmware Toolkit (m365.botox.bz): Web tool with built-in safety checks for creating custom M365 firmware
- ScooterHacking ReFlasher: Desktop software for recovery and advanced flashing scenarios using ST-Link hardware
Hardware Tools for Advanced Flashing
If your scooter's firmware version cannot be updated over Bluetooth, or if you've bricked your scooter and it won't connect wirelessly, you'll need hardware tools:
- ST-Link V2: A hardware programmer that connects to the SWD (Serial Wire Debug) interface on your scooter's circuit boards. This is the most reliable method for flashing and can recover scooters that are otherwise non-functional
- USB-to-TTL Serial Adapter: For UART communication with some scooter models
- Appropriate Cables: USB cables for computer connection, and dupont wires or jumpers for connecting to circuit board test points
Modern scooter controllers expose SWD interfaces without firmware readback protection, meaning the square pad is GND (ground), the middle pad is SWDCLK (clock), and the last pad is SWDIO (data input/output). Even a Raspberry Pi Pico can function as an SWD adapter for flashing.
Step 3: Backup Your Current Firmware
Before making any changes, creating a backup of your current firmware is absolutely essential. This backup allows you to restore your scooter to its original state if something goes wrong or if you're unhappy with the results of the modification.
Using your chosen flashing tool (such as Ninebot IAP or ScooterHacking Utility), connect to your scooter and look for a "Read" or "Backup" option. Save the backup files to your computer or phone with a clearly labeled filename including the date and current firmware version (for example: "M365_BLE155_DRV126_backup_2025-10-30"). Store these backup files in a safe location, preferably with cloud backup as well.
Some advanced users also photograph or document their current settings within the manufacturer's app, including speed modes, cruise control behavior, and any customizations. This documentation helps you reconfigure the scooter after flashing if needed.
Step 4: Download and Prepare Firmware Files
Firmware files must come from trustworthy sources to avoid malware or improperly configured files that could damage your scooter.
Official Firmware Sources
For manufacturer firmware updates, always download directly from the official brand website or through the official mobile app. Xiaomi and Segway-Ninebot both provide firmware repositories, though they may restrict access to older versions.
Custom Firmware Sources
For custom firmware, the ScooterHacking community is the most established and trusted source:
- ScooterHacking.org: Primary forum and knowledge base with extensive guides and community support
- cfw.sh (ScooterHacking CFW Hub): Official custom firmware builder with pre-configured safety parameters
- GitHub repositories: Open-source firmware projects, including community-developed options for various models
When downloading custom firmware, you'll typically receive a .zip file (for Ninebot models) or .bin/.bin.enc file (for Xiaomi models). For Ninebot scooters, always use the .enc file extension, as this matches the encryption format expected by the controller.
Verify the firmware file size and checksum if provided. Corrupted or incomplete downloads can cause flashing failures or damage. Never decompress .zip firmware files before flashing unless specifically instructed by the tool you're using.
Step 5: Connect Your Scooter for Flashing
The connection method varies depending on your scooter's compatibility and the tools you're using.
Bluetooth (BLE) Connection (Easiest Method)
For compatible firmware versions, Bluetooth flashing is the most convenient approach:
- Ensure your scooter battery is charged above 40% (minimum 36V for most models). Low battery during flashing can cause failures or partial updates
- Power on your scooter and enable Bluetooth connectivity
- Open your flashing app (ScooterHacking Utility, Ninebot IAP, or Luna)
- Wait for the app to detect your scooter and establish a connection
- Verify that the app displays the correct model and current firmware versions
Keep your phone or tablet close to the scooter throughout the entire flashing process to maintain a stable Bluetooth connection. Connection interruptions can brick your scooter.
UART (Serial) Connection
Some advanced scenarios require connecting to the scooter's serial interface using a USB-to-TTL adapter. This method requires opening the scooter deck to access the internal circuit boards. Specific pinout diagrams are available on ScooterHacking.org for various models, showing which wires or pads correspond to TX, RX, and GND connections.
SWD / ST-Link Connection (Most Reliable)
For scooters that cannot be flashed over Bluetooth, or for recovery of bricked units, the ST-Link hardware method is necessary:
- Disassemble your scooter deck to access the controller board (BLE/dashboard) or motor controller (DRV/ESC) depending on which component you're flashing
- Locate the SWD test pads on the circuit board. These are typically labeled or documented in community guides
- Connect the ST-Link V2 device to these pads: square pad to GND, middle pad to SWDCLK, last pad to SWDIO
- Connect the ST-Link to your computer via USB
- Ensure WinUSB driver is installed (required for ST-Link to communicate with flashing software)
- Ensure .NET Core v3.1 is installed (required for ScooterHacking ReFlasher)
- Battery must remain connected and charged during ST-Link flashing
Work in a dry, well-lit environment when performing hardware connections. Wear non-conductive gloves and safety glasses when handling circuit boards. Never touch exposed electrical components while the battery is connected.
Step 6: Flash the Firmware
With your scooter connected and firmware files prepared, you're ready to begin the actual flashing process.
Bluetooth Flashing Procedure
- In your flashing app, select the "Flash" or "Update Firmware" option
- Browse to and select your firmware file (ensure it's in the correct format: .zip for Ninebot, .bin.enc for Xiaomi)
- Review any warnings or confirmations presented by the app
- Initiate the flash by tapping the "Flash" or "Start" button
- The app will display progress as the firmware is transferred and written to your scooter
- Typical flashing time ranges from 30 seconds to 5 minutes depending on the component being updated
During the flash, you may see your scooter's display turn off, flash, or show unusual symbols. This is normal. The critical rule is: Do not disconnect, power off, or interrupt the process in any way. Interrupting a firmware flash is the most common cause of bricking a scooter.
When the app displays "Flash Complete," "Success," or "All Done," wait an additional 10-15 seconds before disconnecting to ensure all data has been written and verified.
ST-Link Flashing Procedure
- Launch ScooterHacking ReFlasher or your chosen ST-Link flashing software
- Select the correct COM port for your ST-Link device
- From the "Diagrams" menu, select your scooter model to view pinout information
- Load your firmware file into the software
- Click "Flash" to begin the hardware programming process
- The software will show detailed progress including memory addresses being written
- Wait for "Flash Successful" or similar confirmation message
ST-Link flashing is slower than Bluetooth flashing and may take 5-15 minutes. Never disconnect the ST-Link device or power off the scooter during this process.
Step 7: Post-Flash Configuration and Verification
After successfully flashing new firmware, proper configuration and testing are critical to ensure everything works correctly and safely.
Initial Power-Up
Disconnect your scooter from the flashing tool and power it off completely. Wait 30 seconds, then power it back on. The display should show the normal startup sequence. If you see error codes or the display remains blank, refer to the troubleshooting section below.
Reconnecting to the Official App
Download and install the official manufacturer app (Xiaomi Home for Xiaomi scooters, Segway-Ninebot app for Ninebot models). When the app prompts you to update firmware, always click "Later" or "Skip." Accepting official firmware updates will overwrite your custom firmware and potentially lock you out of future modifications if the new version includes downgrade protection.
This is why version spoofing is commonly configured in custom firmware to prevent the app from detecting that you're running modified software.
Functional Testing
Before riding at normal speeds or in traffic, perform comprehensive testing in a safe, controlled environment:
- Stationary Tests: Verify that the throttle, brake, lights, and display all respond correctly while the scooter is on a stand or held off the ground
- Low-Speed Test: Ride slowly in a parking lot or empty area, testing acceleration, braking, and steering response
- Speed Limit Verification: If you've modified speed limits, gradually test higher speeds in a safe area to ensure the scooter behaves predictably
- Battery Monitoring: Check that the battery percentage displays accurately and that the BMS is functioning correctly
- Error Codes: Ensure no error codes appear during normal operation
Fine-Tuning Settings
Many custom firmware options allow you to adjust parameters after installation. Common adjustments include motor power curves for smoother acceleration, brake regeneration strength for better energy recovery, cruise control activation speed and behavior, and battery capacity settings for accurate percentage display.
Make changes incrementally and test thoroughly after each adjustment. Extreme settings can damage components or create safety hazards.
Troubleshooting Common Issues
Scooter Won't Connect for Flashing
- Ensure Bluetooth is enabled on both your device and the scooter
- Close other apps that might be using Bluetooth connections
- Try restarting both the scooter and your phone/computer
- Verify that your scooter model is compatible with the flashing tool you're using
- Check that battery voltage is above the minimum required level (typically 36V or 40% charge)
Flash Fails Midway
- Charge the battery fully and try again (low battery is a common cause)
- Ensure stable Bluetooth connection by keeping phone very close to scooter
- Try a different firmware file in case the original is corrupted
- For Ninebot models with DRV 1.7.3, select "Attempt Downgrade" option before flashing
- If Bluetooth flashing continues to fail, you may need to use ST-Link hardware method
Scooter Is Bricked (Won't Turn On After Flash)
- Don't panic – most "bricked" scooters can be recovered with ST-Link hardware
- Follow ST-Link connection procedures described earlier in this guide
- Use ScooterHacking ReFlasher to write stock firmware back to the controller
- If you're uncomfortable with hardware recovery, seek help from experienced community members on ScooterHacking.org forums or from professional repair services
Custom Firmware Works But Performance Is Wrong
- Double-check that you downloaded firmware for the correct scooter model and variant
- Verify custom settings in the CFW builder match your intentions
- Some firmware requires calibration or learning cycles (ride for 5-10 minutes at varied speeds)
- Review parameters in community forums to see recommended settings for your specific use case
Advanced Topics and Considerations
Firmware Version Spoofing
Custom firmware often includes version spoofing to make the official app believe you're running the latest official firmware. This prevents the app from repeatedly prompting you to update, which would overwrite your custom firmware. Version spoofing numbers should be configured in the CFW builder to match or exceed the latest official release.
BMS Emulation for Custom Batteries
If you've upgraded to a custom battery pack, BMS emulation features in custom firmware can calculate charge level based on voltage rather than relying on battery management system communication. This allows compatibility with third-party batteries, though it reduces accuracy compared to integrated BMS communication.
Multi-Component Flashing
Complete customization often requires flashing multiple components:
- DRV (Motor Controller): Controls performance, speed, and power
- BLE (Dashboard): Controls display and Bluetooth features
- BMS (Battery): Controls charging and battery protection (rarely modified due to safety concerns)
Each component must be flashed separately, and compatibility between versions must be maintained. Mismatched firmware versions across components can cause communication errors or prevent the scooter from operating.
Legal and Ethical Considerations
Before modifying your scooter's firmware, research your local laws regarding electric scooter specifications. Many jurisdictions have strict limits on motor power (typically 250W-500W) and maximum speed (often 15-25 km/h or 9-15 mph). Exceeding these limits can result in fines, confiscation, or criminal charges.
When using shared paths or roads, consider the safety of others. A scooter modified to speeds beyond its design capabilities becomes a serious safety hazard to both the rider and pedestrians or other vehicles.
Recent safety campaigns, including the UK government's "Buy Safe, Be Safe" initiative launched in October 2024, emphasize purchasing only from reputable sellers and avoiding counterfeit or non-compliant modifications that lack proper safety certifications (UKCA or CE marks).
Community Resources and Support
The electric scooter firmware modification community is active and helpful. Key resources include:
- ScooterHacking.org Forum: The primary community for Xiaomi and Ninebot custom firmware, with detailed guides, troubleshooting help, and active developers
- ScooterHacking Discord: Real-time chat support for flashing issues and technical questions
- GitHub Repositories: Open-source firmware projects where you can report bugs, request features, or contribute code
- Reddit communities: r/ElectricScooters and model-specific subreddits offer peer support and experience sharing
- YouTube tutorials: Visual step-by-step guides for specific scooter models and flashing scenarios
When seeking help, always provide detailed information including your exact scooter model, current firmware versions (BLE, DRV, BMS), the firmware file you're attempting to flash, the flashing tool you're using, and a description of the specific problem or error message.
Final Thoughts and Safety Reminders
Flashing firmware on your electric scooter opens up possibilities for customization and performance enhancement, but it comes with significant responsibilities. The process requires technical knowledge, careful attention to detail, and acceptance of the associated risks.
Always prioritize safety over performance. Modifications that increase speed or power beyond the scooter's design specifications accelerate wear on mechanical components, reduce braking effectiveness, and increase the likelihood of accidents. Components like brakes, tires, and suspension are engineered for specific performance ranges and may fail catastrophically when operated beyond those limits.
Warranty implications are permanent. Once you flash custom firmware or even downgrade official firmware, most manufacturers will be able to detect the modification and will deny warranty service. Factor repair costs into your decision-making process.
Stay informed about safety recalls and updates. While custom firmware can be beneficial, occasionally manufacturers release critical safety updates that address serious issues. Monitor official channels and community forums for such announcements, and consider whether accepting an official update (which would overwrite your custom firmware) is necessary for your safety.
If you're uncomfortable with any part of this process, it's perfectly reasonable to leave firmware modifications to professionals. Some electric scooter repair shops and specialized services offer firmware flashing with proper testing and safety verification.
Remember that we provide this information to help electric scooter enthusiasts understand the firmware flashing process, but all modifications are performed at your own risk. We are not responsible for any damage to your scooter, personal injury, or legal consequences that may result from firmware modifications.
Ride safely, modify responsibly, and always follow local laws and regulations regarding electric scooter use.


