Currently maintained by BX LR (Lothean) and Topol.

[Download v1.4.2 | Latest version]
ReFlasher can check for updates and automatically install them starting from v1.3. Just run the app and follow the prompts!
Version history and changelog:
[v1.4.2], April 27th, 2024 - Fixed a bug with F series DRV flashing.
[v1.4.1], April 20th, 2024 - Fixed G2 flashing, added missing diagrams and fixed a user data flashing bug
[v1.4], April 18th, 2024 - Improved F-series support, added D-series and added G2 DRV
[v1.3], January 31st, 2023 - Added support for GD32 Xiaomi ESCs, AT32 Ninebot Max and F-series ESCs, added self-updater, added diagrams
[v1.2], May 9th, 2022 - Added support for BLE boards & Ninebot F-series
[v1.1], March 26th, 2022 - Initial release
ReFlasher supports the following vehicles and boards:
- Ninebot ESx/E/F/D/G30 - all BLE boards, all STM32 & AT32 DRV boards
- Xiaomi M365 & Mi Scooter Lite/1S/Pro/Pro 2/3 - all BLE boards, all STM32 & GD32 DRV boards
- Ninebot G2 - DRV board
How-to:
- Get an ST-Link programmer (even the cheap V2 clones will work - here's an example of how they look like)
- Check the Important notes section at the bottom of the post.
- Launch ReFlasher and hook up the device you want to flash to the ST-Link. You can find per-board pinouts in the "Diagrams" menu at the top of the ReFlasher app. Soldering is recommended, but you should be able to just hold jumper wires on the debug pads if you are patient enough.
- Once the target board is hooked up to the ST-Link, plug the ST-Link into your computer and select your scooter model, BLE or DRV, and input the additional details. Data such as serial number, mileage, or scooter name can be set arbitrarily and don't have to match the previous settings of your vehicle.
- Check the AT32 / GD32 ? section below.
- Hit "Launch recovery" and wait for ReFlasher to finish. If you encounter any error, you can enable the console in the Settings menu for additional verbose.
- Make sure ReFlasher says "All done". Reassemble your board into your scooter just enough to make sure the recovery went well. If it did, finish reassembling. If you flashed a Xiaomi BLE board, you might need to wipe the data of the ScooterHacking Utility Android app before being able to connect over Bluetooth after a recovery. This bug is known and we're working on a fix.
AT32 / GD32 ?:
Newer Xiaomi Ninebot DRV boards ship with ST micro-processor clones - AT branded on Ninebot boards, and GD branded on Xiaomi ones. To check whether or not you should tick the checkbox, you can read the branding on the chip.
If you don't want to remove the conformal coating or if your sight doesn't allow you to, you can tell by the board revision:
- Max DRV, revision 1.1 or above, tick AT32
- F-series DRV, revision 0.9 or above, tick AT32
- Xiaomi DRV, revision 3.1 or above, tick GD32
Additionally, if you can still connect your scooter to the ScooterHacking Utility Android app, the Hardware details dialog in the top right corner menu can tell you what MCU is on board. This data can be wrong if you installed incompatible firmware tho!
IMPORTANT NOTES:
- The WinUSB driver must be installed for your ST-Link to work with this software as it uses OpenOCD.
Download the Zadig utility from the official link, then in "Options", select "List all devices", and install WinUSB
- NET Core v3.1 must be installed for ReFlasher to run. You can get the x64 installer from here or from Microsoft.
Enjoy!
OLD POST TEXT - ignore:
I had this software laying around for a few months now - never got around to finishing the BLE part. But since Segway-Ninebot and Xiaomi decided they wanted to keep modders out of their scooters, I figured making ST-Link flashing easier wouldn't hurt. So I'm releasing this version with DRV flashing only. Depending on how many of you use the software and need new functionalities, I'll see how much time I'll allocate to improve it. Update May 9th, 2022: BLE flashing now added, thanks Topol
It's fairly easy to use, just connect your ST-Link to the SWD pads of your controller. Identifying them is universal across different scooters, there's only one group of 3 pads on those boards. The square pad is GND, the middle one is SWDCLK, the last one is SWDIO. Users - feel free to post pictures of your boards with the correct pinout: I don't have any on hand.
Once all hooked up properly, select your scooter model, enter your desired serial number, put your mileage and click "Start recovery". If it doesn't work, make sure to check the console (can be displayed through the Settings drop-down menu) to read the verbose and see what went wrong.