RP ✔️ Neuer Controller V3.1 bei aktuellen Xiaomi Rollern: Brickgefahr bei DRV Downgrade / Vorgehen

Status
Für weitere Antworten geschlossen.
2 Januar 2022
590
2.264
E-Scooter
Xiaomi Mi 1S
Alle Xiaomi Roller, die nach Dezember 2021 produziert worden sind, kommen mit der neuen Controller (ESC) Version 3.1.
Diese Controller Version besitzt einen anderen Mikrocontroller, wie in diesem Thread gezeigt. Vielen Dank an L leelt für die dort bereitgestellten Informationen.

Zu diesem Beitrag bitte auch den Haftungsausschluss der Nutzungsbedingungen - Pkt.8 beachten!

Achtung: Bespielt/Flasht man diesen Controller mit älteren Firmware Dateien, also macht z.B. ein DRV Downgrade, dann führt das unweigerlich zum BRICK!
1651963845758.png
Update 06.01.23: Das neue open-source , welches in neuen SHU Versionen bereits zum Einsatz kommt, garantiert, dass nur Firmware Dateien aufgespielt werden können, die zum jeweiligen Controller gehören. Um einen Brick zu verhindern, empfiehlt sich daher das Flashen mit einer neuen SHU Version (wie z.B. 2.1.1) - und nicht das Legacy Zip Format zu verwenden!

Der neue Controller wird mit zwei unterschiedlichen MCUs geliefert und je nach MCU ist der Brick mehr oder weniger tragisch: Bei Controller mit GD32E MCU (Typ 1) erhält man nach dem Flashversuch abwechselnd die Fehler 27 und 35. Der Controller lässt sich dann nur noch per ST-Link über ein spezielles gd32rec Skript retten (siehe Abschnitt unten). Bei Controllern mit GD32F MCU (Typ 2) gibt es keinen irreversiblen Brick, sondern lediglich ein Fehlverhalten vom Dashboard / ESC (z.B. Roller schaltet sich automatisch wieder ein), was sich aber durch ein Flashen der aktuellen DRVs beheben lässt.

Update 27.06.22: Neben dem ESC kommt auch das BMS Board inzwischen mit einer neuen MCU (Cortex-M statt STM8L), Infos dazu siehe hier. Ist die BMS Version vierstellig, so darf diese nicht gedowngraded werden, ansonsten wird es zu einem BMS Brick kommen!

Neuen Roller gekauft: Aktivieren
Um die Authenzität des Rollers in der deutschen Region sicherzustellen, ist die Erstverbindung des Rollers mit der offiziellen MiHome App notwendig. D.h. den Roller auswählen und verbinden: sobald der Roller erfolgreich in der App angelegt wurde, ist die Erstverbindung abgeschlossen und die Funktion des Rollers mit der offiziellen MiHome App sichergestellt.

Die Aktivierung des Rollers kann nun wahlweise per MiHome App oder durch Drittanbieter Apps wie m365 downG oder SHU durchgeführt werden (der Vorgang unterscheidet sich nicht). Da inzwischen alle Roller mit der aktuellen Firmware ausgeliefert werden, spielt das keine Rolle und man aktiviert den Roller wie gewohnt in der MiHome App.

Die MiHome App kann nach der Erstverbindung / Aktivierung wieder deinstalliert werden. Bitte vorher drauf achten, den Roller aus dem Account zu löschen, für den Fall, dass man das Passwort vergisst oder falls jemand anders den Roller später übernimmt. Es geht bei der Aktivierung nicht darum, den Roller am Account gebunden zu haben, sondern den Aktivierungsschlüssel zwischen Xiaomi Server und Roller zu synchronisieren.

Hintergrund: Der Roller bekommt von der MiHome App einen einizartigen Aktivierungsschlüssel ("BLTID") zugewiesen, der beim Registrieren auf Xiaomi Servern hinterlegt wird und anhand dessen die Authenzität des Roller geprüft werden kann. Verbindet man den Roller nicht zuerst über die offizielle App, so lässt sich der Roller später nicht mehr mit dieser verbinden (Fehler -28 / -29). Damit die Verbindung mit der MiHome App wieder klappt und um den Auslieferungszustand wiederherzustellen, müssen dann extra Schritte unternommen werden.

Controller Version feststellen
Wer die DRV flashen möchte, sich aber keinen Brick holen will, kann wiefolgt vorgehen:
  1. Die App "m365 downG" downloaden, dort unter Tools die UUID nachschauen
    1. Enthält die UUID nicht die Zeichen FF, handelt es sich um den neuen Controller: Flashen von alter DRV* führt zu Brick!!
    2. Enthält die UUID die Zeichen FF, handelt es sich um den alten Controller: Flashen unproblematisch
  2. Weiterhin im Hauptfenster von downG die BLE Version nachschauen
    1. BLE Version >= 155: Flashen von CFW ist blockiert (ECDSA PK Kryptographie)
    2. BLE Version < 155: Flashen der DRV möglich**
  3. Zuletzt in downG die BMS Version prüfen:
    1. BMS Version >= 1000: BMS Downgrade führt zu Brick!
    2. BMS Version < 1000: BMS Downgrade unproblematisch
*: Nur alte DRVs sind inkompatibel, neuere DRVs funktionieren einwandfrei. Mehr dazu im nächsten Abschnitt.
**: Bei neueren DRVs, z.B. DRV016 (=DRV316 in downG) beim Mi3, wird das Flashen durch die dahingehend blockiert, dass nur DRVs mit der korrekten Scooter Kennung geflasht werden können. Um eine CFW zu flashen, kann z.B. zuerst eine ältere Vanilla DRV geflasht werden, sofern diese die o.g. Kriterien erfüllt und nicht zum Brick führt. Die öffentliche Version der m365 Plus App bietet Möglichkeiten für höhere DRV Versionen.

Controller Version / Typ herausfinden
Die HomeMi bzw. m365 Plus App kann genutzt werden, um den genauen Controller-Typ herauszufinden (siehe "Details zum Controller"). Das Öffnen des Rollers, um die Beschriftung auf dem Controller abzulesen ist damit vollkommen unnötig. Die App ist außerdem für diejenigen interessant, die die grundsätzlichen Roller Funktionen steuern, aber die offizielle App nicht nutzen möchten (Datenschutz, Updates, etc.).

Lässt sich Controller V3.1 flashen?
Ja! Egal welcher Controller drin ist, man kann in jedem Fall eine aktuelle DRV flashen - auf die Roller bezogen können also DRVs ab folgenden Versionsnummern geflasht werden:
  • 1S: min. DRV319
  • Pro2: min. DRV247
  • Lite/Essential: min. DRV242
  • Mi3: min. DRV015
Alle Versionen, die darunter liegen, führen zu Problemen (Typ 2: GD32F) oder gar zum Brick (Typ 1: GD32E).

Welche CFWs gibt es für Controller V3.1?
Derzeit verfügbare CFWs für den Controller V3.1 sind:
Bemerkenswert: Zum aktuellen Zeitpunkt ist keine andere CFW ist mit dem neuen Controller kompatibel, auch nicht XiaoDash! Mods / Offsets für diese DRVs habe ich im März zuerst im VLT Thread veröffentlicht. Damit ist VLT die erste CFW, die mit dem neuen Controller funktioniert hat, gefolgt von NGFW.
Wahrscheinlich ist, dass die SHFW bald ebenso für den Controller V3.1 verfügbar ist: diese wird auf Basis der DRV247 aufgesetzt mit erweiterter Größe auf 128kB.

Controller V3.1 nach einem Brick retten
Zunächst muss man herausfinden, welchen Controller Typ man hat. Dafür muss entweder die Beschriftung auf dem Chip untersucht werden oder alternativ nutzt man hierfür die HomeMi bzw. m365 Plus App.

Besitzer des Controller Typ 1 (GD32E) müssen zur Wiederherstellung über ST-Link flashen. Dafür kann man das von Conejo am 23.5. veröffentlichte Programm "gd32rec" nutzen. Dieses ist ursprünglich für den Mi3 gedacht, kann aber leicht für den Pro2 (DRV247) / 1S (DRV319) angepasst werden.
--> Anleitung: "gd32rec"

Besitzer des Controller Typ 2 (GD32F) können zur Wiederherstellung ebenfalls gd32rec nutzen, aber in diesem Fall kann die aktuelle DRV auch über SHU oder downG geflasht werden! Denn: Das Flashen über Bluetooth funktioniert bei diesem Controller Typ 2 (GD32F) in der Regel noch, bei Controller Typ 1 (GD32E) aber nicht.

Update 15.08.
(Ungetestet) Eventuell ist es möglich, den Controller auch ohne ST-Link zu retten. Die Methode wurde erstmalig hier von H hydrocoter veröffentlicht. Dafür wird ein USB-UART Adapter und das benötigt.

Details zum Controller / Chip (MCU)
Alle Xiaomi Controller bis einschließlich V3.0 verwenden die STM32F103CBT6 MCU. Beim Controller V3.1 wird die GD32E103CBT6 MCU eingesetzt.
Update 11-06-2022: Die Firmware kennt noch eine zweite neue MCU, diese wurde hier als GD32F103CBT6 identifiziert (Danke an VooDooShamane VooDooShamane für das Teilen der Info) und hier bestätigt (Danke an D Donthorto).

Hauptunterschied ist ein anderer Prozessor mit anderer Taktrate und die RAM-Größe.
TypMCUProzessorTaktrateFlashRAMPreis p. Stück (ca.)
0STM32F103CBT6ARM Cortex-M372 mHz128 kB20 kB> 5 USD
1GD32E103CBT6ARM Cortex-M4108 mHz128 kB32 kB2-3 USD
2GD32F103CBT6ARM Cortex-M3108 mHz128 kB32 kB2-3 USD

Laut sind alle Chips untereinander PIN-kompatibel, d.h. man kann den einen Chip durch den anderen Austauschen ohne etwas am PCB Layout zu verändern. Der ARM Cortex-M4 unterstützt alle ARM Cortex-M3 Instruktionen, beide nutzen dieselbe ARMV7M Architektur. Einziger Unterschied ist, dass der Cortex-M4 Kern eine DSP (Digital Signal Prozessing) Erweiterung und eine zusätzliche FPU (Floating Point Unit) an Bord hat - Infos siehe .

Im ARM Compiler (armcc) lässt sich , mit welchen Kernen / Architekturen die Firmware kompatibel sein soll, d.h. es wird beim Zeitpunkt der Erstellung der Firmware festgelegt, ob Cortex-M3 oder Cortex-M4 oder beides unterstützt werden soll.

(Meine Annahme: Die DRV321 bzw. DRV248 wurde mit Cortex-M3 und Cortex-M4 (neuer Chip) Kompatibilität kompiliert, die Firmwares davor allerdings nur für Cortex-M3! Das würde erklären, wieso keine separaten Firmware Files über die offizielle App verteilt werden: die App prüft, so hatte ich nach langer Recherche herausgefunden, für den Abruf der Files lediglich das Modell (1S, Pro2, ...), welches über eine Produkt Kennung (pid) in den Service Daten des BLE hinterlegt ist.) --> Inzwischen bestätigt

Zusammenfassung
1654415442672.png

(Gerne teilen, feel free to share!)


Update 16.05.
Es sollte möglich sein anhand der UID / UUID zu prüfen, ob es sich um einen V3.1 Controller handelt. Enthält die UID nicht die Zeichen FF, ist dies ein Hinweis auf den neuen GD32 Chip! Um die UID auszulesen, kann man entweder downG oder SHU nutzen. In downG geht man dafür auf Tools und bekommt dann die "UUID" direkt angezeigt. In SHU muss man auf das Menü oben rechts und dann "Copy UID" anklicken und diese dann irgendwo hinkopieren.
Dies aber bitte aufgrund fehlender Daten nicht als einiziges Indiz nutzen, stattdessen wie hier beschrieben physisch kontrollieren, ob der V3.1 Controller verbaut ist, bevor geflasht wird!

Update 25.05.
Erste Bestätigung
der Korellation UID und Controller Version dank Pepe_DVC Pepe_DVC von Seiten der spanischen Roller Community. Kommentar: In Spanien sind vor allem die "Mi Essential" (Lite) Modelle betroffen, es werden also mit Sicherheit nicht nur die Pro2 Modelle mit dem neuen Controller ausgestattet. Es ist zu erwarten, dass alle Xiaomi Roller mit Produktionsdatum 2022 den neuen Controller besitzen. Den Titel des Threads habe ich vorsorglich angepasst.

Update 05.06
Infos zum Controller und Firmware sowie Flow-Chart hinzugefügt.

Update 07.06
GD32 Dump inkl. Unlock Skript wurde von Conejo am 23.5. im XiaoDash Kanal veröffentlicht. Recovery ist damit nun möglich!

Update 09.06
Eindeutige Feststellung des Controller Typen per App.

Update 11.06
Infos zur zweiten Variante.

Update 24.06
Beide MCU Typen sind kompatibel mit der DRV247 (wie eingangs angenommen), danke L leelt und I Ignatius für die Bestätigung!

Update 27.06
Release Tutorial zur Wiederherstellung von gebricktem Xiaomi Mi3, Pro2, 1S, Lite

Update 06.07
Release NextGen Firmware: erste Firmware weltweit mit Unterstützung von V3.1 Controller für alle Xiaomi Roller

Update 22.07
Hinweise und Anleitung zur Aktivierung hinzugefügt
 
Zuletzt bearbeitet von einem Moderator:
Einfach gesagt gibt es nun einen neuen Controller. (Steuerplatine im Trittbrett)
Der neue Controller hat die Version v3.1 und wird ab Scooter Baudatum Dezember 2021 verbaut.
Der neue v3.1 Controller kann folgende Mikrocontroller verbaut haben:
  • (ARM Cortex-M4)
  • (ARM Cortex-M3)
Auf beiden Mikrocontroller ist es nur möglich DRV Firmwares ab DRV319(1s) oder DRV247(Pro2) oder DRV016(Mi 3) zu flashen.
Also ist mit diesem schon jetzt eine VLT-Firmware auf Basis der DRV247 oder DRV319 möglich.

Gesichtet wurde der neue v3.1 Controller nun in folgenden Scootern:
  • Mi Pro2
  • Mi 1s
  • Mi 3

Um den Mikrocontroller zu überprüfen geht ihr am besten so vor:

Update:
Mittlerweile kann die ScooterHacking Utility den controller Typ auch identifizieren.
Dazu in SHU oben rechts auf die 3 Punkte, und dann "show HW-info" tippen.

Zuerst solltet ihr nach dem Produktionsdatum schauen.
Das könnt ihr auf der Plakette tun welche rechts vorne an der Unterseite des Scooter angebracht ist.
Plakette.png



Aber auch mit M365 tools kann das Produktionsdatum des Akku ein Anhaltspunkt sein.
In der Offiziellen Xiaomi Mi Home App kann das Produktionsdatum ebenfalls eingesehen werden.
Screenshot_20210928-212935_m365 Tools.png
Screenshot_20210816-161854_Mi Home.png


Das Produktionsdatum ist allerdings nur ein Anhaltspunkt!
100% Sicherheit hat man erst, wenn man die untere Abdeckung abschraubt.
Erst dann kann man den Controller sehen und sich von dem Mikrocontroller-Typ versichern.
Da die Controller eine durchsichtige Plastikabdeckung haben, können wir das erkennen ohne das wir das Garantiesiegel entfernen müssen.
Wenn man nun schräg unter die Gummilippe schaut, sollte man den v3.0 Schriftzug erkennen können.
Wenn das nicht geht, kann man auch einen Zahnstocher oder etwas anderes dünnes, nicht elektrisch leitendes nehmen,
und durch die Öffnung von den Steckern die Gummilippe vorsichtig beiseite drücken.
Aber zieht besser vorher den Akku-Stecker ab, bevor ihr da mit etwas drin herum stochert!
Wie schon erwähnt, sind die neuen Mikrocontroller (GD32E103CBT6 oder GD32F103CBT6) mit sehr hoher Wahrscheinlichkeit ab Controller Version v3.1 verbaut worden.
Controller.png

Controller_Version.png


Leider haben die Controller Platinen einen Klarlack über alle Teile gesprüht bekommen.
Dieser Klarlack ist recht stark spiegelnd.
Das erschwert es den Aufdruck des Mikrocontroller direkt zu erkennen.
Geht aber, wenn man etwas mit den Lichtverhältnissen spielt, und sich die Spiegelung des Klarlack zu nutze macht.
20220502_173002.jpg
20220502_173007.jpg

Nun kann man oben links in der Ecke den STM Schriftzug erkennen.
Mit etwas tricksen bekommt man auch noch die unteren Zeilen zu sehen.

Wenn ihr einen Controller mit dem neuen Mikrocontroller (GD32E103CBT6 oder GD32F103CBT6) verbaut habt, dürfen keine alten DRV Firmwares geflasht werden.
Sonst brick.
Erst ab DRV247 (Pro2) oder DRV319 (1s) funktionieren sie fehlerfrei.


Mikrocontroller an Hand der UUID bestimmen:
In der ScooterHacking Utility (SHU) verbindest du dich dazu mit deinem Scooter. Im INFO-Screen siehst du jetzt die Modellbezeichnung, die BLE-, die DRV- und die BMS-Version deines Scooters, sowie die Seriennummer, die Region und eventuell vorhandene Errorcodes. Nun drückst du mal oben rechts auf die drei Punkte und wählst dort Hardware details aus. Am Ende des nun angezeigten Textes, findest du nun die UID des Microchips auf deinem Controller.
Bei m365 downG wählt man dazu zuerst CONNECT aus und verbindet sich mit seinem Scooter. Zum Pairen wirst du wahrscheinlich aufgefordert, den Power-Button am Scooter zu drücken. Wenn das erfolgreich war, siehst du nun die Seriennummer, die DRV-, die BMS- und die BLE-Version deines Scooters.
Nun betätige mal den TOOLS Button in der App und voilà - du siehst jetzt u.a. auch deine UUID.
Hast du bei m365 downG an der 2. Stelle "FF" (Byte-Paar) oder in der SHU an der 1. Stelle das "FF", deutet das auf den alten (bisherigen) STM32 Microchip hin.
 
Zuletzt bearbeitet:
Sorry for writing in English (I'm from Mexico) , I don't known German, I was referred to this post in Scooter Hack Utility Telegram Group, I have this new controller 3.1 and I have the error 27/35 In a completely new scooter since I didn't know and I tryed to Flash it, Is there a way to recover it? Thanks so much I appreciate any help and please sorry if I broke the forum rules for writing in English!

Entschuldigung, dass ich auf Englisch schreibe (ich komme aus Mexiko), ich kann kein Deutsch, ich wurde auf diesen Beitrag in der Scooter Hack Utility Telegram Group verwiesen, ich habe diesen neuen Controller 3.1 und ich habe den Fehler 27/35 in einem vollständig neuen Roller, da ich es nicht wusste und versucht habe, ihn zu flashen. Gibt es eine Möglichkeit, ihn wiederherzustellen? Vielen Dank. Ich bin für jede Hilfe dankbar und bitte entschuldigen Sie, wenn ich gegen die Forenregeln zum Schreiben auf Englisch verstoßen habe!
 
X Xenons Es ist schön, dass du dich hier angemeldet hast, um zu berichten und dich auch um einen Übersetzer bemüht hast. Zu deinem Anliegen: Leider lässt sich da nichts machen. Um den V3.1 Controller zu retten bräuchte man einen Full-Dump vom verbauten GD32 bzw. Chip. Die Wahrscheinlichkeit, dass ein solcher Dump in naher Zukunft erstellt wird ist gering.

Allgemeiner Rat an diejenigen, die ihren V3.1 Controller geflasht haben und nun abwechselnd Fehler 27 / 35 bekommen: Den V3.1 Controller ausbauen, beiseite legen und einen Ersatz V3.0 Controller bestellen.

Aktueller Beitrag aus dem SH FAQ
My Xiaomi was made in, or after 12/2021
Your main board (ESC) is likely equipped with different processor (GD32). This platform is currently unsupported. Do not attempt to flash custom firmware, unless you are 100% sure that the board you're flashing over is v3.0 (can be checked visually on the ESC board itself). ESC v3.1, if flashed over, will be rendered unrecoverable (with currently available methods) You can order a clone board from Aliexpress (Bywish as trusted seller) and swap it, while keeping your original one intact.
 
Zuletzt bearbeitet:
  • Hilfreich!
Reaktionen: Xenons
T Tugfun Nein. Zum Thema Zwangsupdate gibt es alle Infos in dem unten verlinkten Thread.
 
Status
Für weitere Antworten geschlossen.