Hello,
I made EggSPEED, an Android application for programming Bafang BBS01, BBS02, and BBSHD mid-drive controllers, communicating directly with the controller over UART via the standard USB OTG programming cable. It was built as a single tool covering both firmware ecosystems, so you don't need separate apps depending on what's flashed to your controller.

Supported Firmware
The application supports two firmware variants, switchable in Settings: factory OEM Bafang firmware, and bbs-fw, the open firmware developed by Daniel Nilsson. Both are handled by the same app and the same cable - switching firmware on the controller only requires selecting the matching mode in the app, nothing else changes on the phone side.
Functionality
Source and Download
Google Play
Source code and the latest builds are available at: GitHub - moskil2/EggSPEED
Feedback
Bug reports, corrections, and feature requests are welcome - happy to discuss functionality or help troubleshoot if you run into issues with your specific controller.
I made EggSPEED, an Android application for programming Bafang BBS01, BBS02, and BBSHD mid-drive controllers, communicating directly with the controller over UART via the standard USB OTG programming cable. It was built as a single tool covering both firmware ecosystems, so you don't need separate apps depending on what's flashed to your controller.

Supported Firmware
The application supports two firmware variants, switchable in Settings: factory OEM Bafang firmware, and bbs-fw, the open firmware developed by Daniel Nilsson. Both are handled by the same app and the same cable - switching firmware on the controller only requires selecting the matching mode in the app, nothing else changes on the phone side.
Functionality
- Live dashboard replacing the factory display (speed, battery level, power, brake status)
- Full read and write access to controller configuration, including while riding
- Dedicated configuration screens for bbs-fw, matching the layout of the official Windows configuration tool
- Current and voltage calibration for controllers with a shunt mod or a known pack voltage offset
- Battery range and energy usage estimates based on riding history
- Named configuration profiles that can be saved, exported, and imported, with a check that blocks loading a profile onto the wrong firmware
- Value validation before any write, with confirmation that the controller actually accepted it
- No firmware flashing capability - configuration read/write only
- Language support expanded from 2 to 11 (German, French, Spanish, Portuguese, Italian, Dutch, Swedish, Czech, Slovak added), including the bbs-fw configuration screens
- Battery SAG measurement: passive background estimate from normal riding, plus a guided rest/load/rest test for a controlled, repeatable reading
- Speed calibration multiplier, same approach as the existing current calibration, with an optional GPS speed comparison on the dashboard
- Lock screen / AOD display via a media-session notification, so the phone can sleep instead of keeping the screen lit while riding
- Time-series charts for power, current, voltage, and speed, 0.5s sampling with 10 minutes of history, per-series toggles and a scrub cursor
- Light theme and high-contrast mode for outdoor readability
Source and Download
Google Play
Source code and the latest builds are available at: GitHub - moskil2/EggSPEED
Feedback
Bug reports, corrections, and feature requests are welcome - happy to discuss functionality or help troubleshoot if you run into issues with your specific controller.
Attachments
Last edited:
