Sunra ROBO-S — BMS↔controller protocol decoded and emulated
Verfasst: Mo 13. Jul 2026, 17:26
Nach einiger Arbeit mit Oszilloskop und Logic Analyzer habe ich die RS485-Kommunikation zwischen BMS und Steuergerät des ROBO-S entschlüsselt.
Ich habe außerdem einen BMS-Emulator auf einem ESP32-S3 gebaut: Das Board gibt sich als Batterie aus und antwortet auf die Abfragen des Steuergeräts mit gültigen Frames. Das Steuergerät akzeptiert sie und liest die Batteriedaten, die ich ihm vorgebe.
Nächster Schritt, noch auf der Straße zu testen: ob das ausreicht, um den Roller aus dem Reserve-/Notlaufmodus zu holen. Sobald ich ein Ergebnis habe, poste ich ein Update.
Gerne tausche ich mich mit anderen aus, die am selben Roller arbeiten.
After a good amount of work with an oscilloscope and a logic analyzer, I've decoded the RS485 communication between the BMS and the controller on the ROBO-S.
I've also built a BMS emulator on an ESP32-S3: the board impersonates a battery and replies to the controller's polls with valid frames. The controller accepts them and reads the battery data I feed it.
Next step, still to be tested on the road: whether this is enough to bring the scooter out of reserve/limp mode. I'll post an update once I have a result.
Happy to compare notes with anyone working on the same scooter.
https://www.youtube.com/watch?v=U6mFvLMetHE
Ich habe außerdem einen BMS-Emulator auf einem ESP32-S3 gebaut: Das Board gibt sich als Batterie aus und antwortet auf die Abfragen des Steuergeräts mit gültigen Frames. Das Steuergerät akzeptiert sie und liest die Batteriedaten, die ich ihm vorgebe.
Nächster Schritt, noch auf der Straße zu testen: ob das ausreicht, um den Roller aus dem Reserve-/Notlaufmodus zu holen. Sobald ich ein Ergebnis habe, poste ich ein Update.
Gerne tausche ich mich mit anderen aus, die am selben Roller arbeiten.
After a good amount of work with an oscilloscope and a logic analyzer, I've decoded the RS485 communication between the BMS and the controller on the ROBO-S.
I've also built a BMS emulator on an ESP32-S3: the board impersonates a battery and replies to the controller's polls with valid frames. The controller accepts them and reads the battery data I feed it.
Next step, still to be tested on the road: whether this is enough to bring the scooter out of reserve/limp mode. I'll post an update once I have a result.
Happy to compare notes with anyone working on the same scooter.
https://www.youtube.com/watch?v=U6mFvLMetHE