RP ✔️ MiDu-Flasher 🔌 ST-Link Downgrade & Unbrick

VooDooShamane

Moderator
Teammitglied
19 August 2021
2.424
5.365
E-Scooter
mi Pro2/9bot F2 Pro
Preview.png


Inhaltsverzeichnis

Vorstellung MiDu-Flasher
Hallo liebe RollerPlauscher!

Heute kann ich euch mit Stolz mein neues Programm vorstellen.
Den MiDu-Flasher.

Was kann MiDu-Flasher?
  • Downgrade ohne löten und Ausbau des Dashboard
  • Debug Exploit durchführen, um Ausleseschutz zu umgehen
  • Firmware spoofing
  • Automatische Fehler Erkennung (Verbindungsabbrüche)
Dadurch vereinfacht MiDu-Flasher den Prozess des Downgraden und Unbricken aller 3 Komponenten (Dashboard, Controller, BMS) in unseren Scootern enorm.
In der aktuellen Version 1.0.5 wird erstmal "nur" das Dashboard unterstützt.
Ich habe MiDu-Flasher aber so designt, das ich später den Funktionsumfang erweitern kann.
Selbst die neuen v3.1 Controller mit GD32E Mikrocontrollern werden eine Möglichkeit zum Flashen bekommen.
Die Voraussetzungen dafür habe ich schon geschaffen.

Welche Scooter werden unterstützt?
In MiDu-Flasher direkt eingebaut habe ich die Unterstützung für folgende Scooter:
  • mi m365 classic
  • mi Pro
  • mi 1s
  • mi Pro 2
  • Mi3 (seit v1.0.2)
Im Grunde werden aber alle Scooter unterstützt die den gleichen Mikrocontroller verbaut haben.
Bei dem Dashboard sind das 2 verschiedene.
Soweit mir bekannt, ist der N51822x in allen original Dashboards verbaut.
Der N51802x wird vorwiegend in den Clone Dashboards verbaut die man z.b. von Aliexpress kaufen kann.
Wenn man sich nicht sicher ist, welchen Mikrocontroller sein Dashboard verbaut hat,
kann man einfach die Aufschrift darauf ablesen.
N51802QFAAA.jpg
N51822QFACA.png


Dashboard Funktionsumfang (MiDu-Flasher v1.0.5)
Für das Dashboard gibt es aktuell 3 Funktionen in MiDu-Flasher:
  • Downgrade (Pro2 / 1s / Mi3)
  • Dump Flash (Alle mi Scooter)
  • Write Flash (m365 / Pro / 1s / Pro2 / Mi3)
Downgrade
In den Downgrade-Vorgang habe ich verschiedenste kleine Kniffel und Tricks eingebaut.
Diese Schritte werden ausgeführt:
  1. Verbindung zum Dashboard aufbauen
  2. Dumpen des UICR und FICR Flash Speicher Bereich
  3. Gedumpten UICR Bereich auswerten (prüfen ob Ausleseschutz gesetzt wurde) (Standard bei BLE157)
  4. Wenn Ausleseschutz gesetzt, dump des app config Bereich via Debug-Exploit (app cofig = blt id, login Token, Scooter-Name usw...)
  5. Flash-speicher zum schreiben vorbereiten (mass erase)
  6. Softdevice schreiben (Mikrocontroller Hersteller Bibliothek welche die BLE Firmware benötigt) (
    Bitte verwende, Anmelden oder Registrieren zum Anzeigen von URL-Inhalten!
    )
  7. BLE Firmware mit oder ohne spoofing schreiben (je nach vorheriger Auswahl)
  8. Zuvor ausgelesenen app config Bereich schreiben
  9. Bootloader schreiben
  10. UICR schreiben (deaktivierter ausleseschutz)
MiDu-Flasher überprüft bei jedem Schritt ob er auch erfolgreich war, und wiederholt diesen wenn z.b. ein Verbindungs-Fehler aufgetreten ist.
Das ermöglicht es unter anderem den Downgrade des Dashboard durchzuführen ohne das man es vorher ausbauen, und/oder Löten muss.
Man muss nur oben die Dashboard-Abdeckung ab nehmen, und den ST-Link an die 3 Kontakte halten.
Nichtmal der c2 Kondensator muss entfernt, oder dessen Leiterbahn gekappt werden.
Denn MiDu-Flasher zählt die fehlgeschlagenen Verbindungen, und schraubt automatisch die Geschwindigkeit runter.
Wenn der Ausleseschutz des Flash-speicher gesetzt wurde, wird ein spezieller Debug-Exploit für das Auslesen verwendet. (
Bitte verwende, Anmelden oder Registrieren zum Anzeigen von URL-Inhalten!
) (danke Lutscher Lutscher für den Hinweis)
MiDu-Flasher macht alles automatisch und gibt Feedback zu den einzelnen Schritten.
Dieses Feedback wird außer in dem Programm selbst, noch als Sound ausgegeben.
Somit kann man ganz in Ruhe sich darauf konzentrieren eine Verbindung zwischen ST-Link und Dashboard zu bekommen.
Beispielsweise bekommt man ein Audio Feedback wenn die Verbindung steht, oder gestört wurde.
Selbst wenn zwischendurch mal die Verbindung abbricht, dann ist das auch kein großes Problem.
Weder während dem lesen oder Schreibvorgang.
Denn MiDu-Flasher bemerkt das alles von selbst, und wiederholt den jeweiligen fehlgeschlagenen Schritt dann direkt nach einem kurzen 5 Sekunden Timeout.


Dump Flash
Macht genau das wie es heißt, es dumpt den kompletten Flash-Speicher. 😁
Abgespeichert wird der Dump in dem Hauptverzeichnis von MiDu-Flasher.
Hier macht sich MiDu-Flasher auch den Debug-Exploit zu nutze, sollte der Speicher einen gesetzten Ausleseschutz haben.

Write Flash
Schreibt alle 3 Hauptkomponenten des Flash-Speicher einzeln.
  • Softdevice (m365 & Pro = S110 / Pro2, 1s & Mi3 = S130)
  • App aka BLE
  • Bootloader
Somit kann man also wählen, welche BLE Version geflasht werden soll.
Und muss nicht immer eine komplette .rec Datei aufspielen.
Dadurch erhöht sich auch die Geschwindigkeit des Flash-vorgang.
Da ja hier nur die benötigten Bereiche geschrieben werden, und nicht 1x alles drüber gebügelt wird.

Wenn man eine eigene BLE Version flashen möchte, kann man diese einfach in dem entsprechenden Ordner,
unter MiDu-Flasher\Resource\files\BLE\App\N51822x\(Scooter)\App.bin ablegen.
Wenn MiDu-Flasher dort eine App.bin findet, nimmt er diese als Basis für die "Write Flash" oder "Downgrade" Funktion.
Somit kann man auch einen Downgrade auf eine eigene BLE version durchführen.
Sogar das Spoofen der eigenen BLE sollte funktionieren.
Da MiDu-Flasher nach einem bestimmten Byte-Muster sucht, um die richtige Stelle in der App.bin zum spoofen zu finden.

Das ist die komplette Ordnerstruktur von MiDu-Flasher:
Code:
Bitte verwende, Anmelden oder Registrieren um den Inhalt der Codes anzuzeigen!

MiDu-Flasher Download



Update 15.07.2022 (v1.0.5)
Changelog:
Code:
Bitte verwende, Anmelden oder Registrieren um den Inhalt der Codes anzuzeigen!

Bitte verwende, Anmelden oder Registrieren zum Anzeigen von URL-Inhalten!


Einfach die Zip entpacken, und die Verknüpfung im Hauptverzeichnis starten.
Die Firmware Files die für den Flash benötigt werden, wird MiDu-Flasher dann runterladen.
Natürlich erst, nachdem ihr dem Herunterladen zugestimmt habt.

Wenn euch dieser Beitrag gefällt, denkt bitte darüber nach eine Spende für den RollerPlausch da zu lassen.
Das Geld geht nicht an mich, aber ihr unterstützt damit diese wundervolle Plattform.
Auch über ein Klick auf den Hilfreich Button freue ich mich jedes mal und spornt mich an weiter zu machen.
Danke ❤️
 
Zuletzt bearbeitet:

VooDooShamane

Moderator
Teammitglied
19 August 2021
2.424
5.365
E-Scooter
mi Pro2/9bot F2 Pro
Anleitung Dashboard ST-Link Flash - Downgrade & Unbrick
⚠️Disclaimer schrieb:
Jegliche Modifikation die ihr an eurem e-Scooter vornehmt, kann ein entwerten der ABE (Allgemeine Betriebserlaubnis) zufolge haben.
Informiert euch stets zu den aktuell geltenden Rechten und Pflichten eurer Region zu dem betreiben eines e-Scooter im öffentlichen Straßenverkehr.
Alles, was ihr tut, geht auf eure eigene Verantwortung!
Weder ich noch RollerPlausch noch irgendjemand anderes übernimmt eine Haftung dazu.
Bitte lest euch auch vor Beginn diesen Haftungsausschluss der Nutzungsbedingungen - Pkt.8 beachten! und diesen
"Firmware-Distanzierung Warum RP keine Firmwares hostet..." Thread durch.
Jeder ist für sein Handeln selbst verantwortlich!

⚠️Wenn der Downgrade-vorgang gestartet wurde, gibt es kein zurück mehr!
Diese Session muss dann durchgezogen werden.
Es darf nicht das Dashboard den Strom verlieren, oder MiDu-Flasher beendet werden.
Wenn eines der 2 Dinge doch passiert, ist das Dashboard erstmal ohne Funktion und nicht nutzbar!
Um es aus diesem Zustand zu retten, solltet ihr die Verbindung zwischen Dashboard und ST-LINK löten, und die "write flash" Funktion in MiDu-Flasher ausführen.
[Optional] Wenn die Lötpads/Kontakte beschädigt sind, hier ein Diagramm zum löten an der Rückseite:
SCO_BLE_v3.2_N51822QFAC_SWD.png
Bitte lest euch die Anleitung erstmal komplett durch und überlegt ob ihr euch das zutraut.
Erst wenn die Antwort darauf "ja" lautet solltet ihr beginnen.

Wer sich das nicht zutraut, oder ein Problem mit der Durchführung hat, kann es auch machen lassen.
Hierzu gibt es die "Rollerplauscher, hilft Rollerplauscher!" Rubrik.

⚠️Wichtig!!!
Der Scooter muss vor dem Downgrade aktiviert sein.


BLE15(x) Downgrade
(1s / Pro2 / Mi3)

Eines noch vorab:
Solltet ihr an einer Stelle Hilfe benötigen und ihr bittet in diesem Thread um Hilfe,
dann muss zu eurem Post der Inhalt der MiDu.log Datei (Resource Ordner) in einem solchen Code SPOILER gepostet werden!
code_spioler_rp-png.19047

Code:
Bitte verwende, Anmelden oder Registrieren um den Inhalt der Codes anzuzeigen!
Bitte versucht auch euer Vorgehen und das Fehlerbild so detailliert wie es nur geht zu beschreiben.
Am besten auch mit Bildern.

Was wird benötigt:

Video Tutorial (mit Löten)
Danke an @Siurbutis für das tolle Video!
ℹ️
In diesem Video (Windows 11) werden ein paar Kleinigkeiten anders als in meine Anleitung gemacht.
Aber das Endergebnis ist das gleiche.

Youtube Datenschutzhinweis
Hier werden durch das Abspielen und Einbinden Cookies auf dem Endgerät gespeichert, wenn das gestattet sein soll klicke auf zulassen, danach kann das Video geladen um abgespielt werden.

Herstellen eines Stecker (Lötfreie Variante)
Eine Büroklammer oder ähnliches Stück Draht in 3 gleich lange 1,5 cm Stücke schneiden.
20220429_115510.jpg
20220429_115811.jpg
20220429_120911.jpg


Steckt die 3 Drähte in die Dupont Kabel von eurem ST-Link.
(Kabel müssen natürlich nicht wie auf diesem Bild durchgeschnitten werden)
20220429_121635.jpg


Für bessere Stabilität, klebt ihr die 3 Dupont Stecker zusammen.
Legt die Stecker so dicht beieinander wie es geht, und träufelt ein wenig Sekundenkleber oben drauf.
20220429_121742.jpg


Um sie in dieser Postion zu fixieren, klebt ihr direkt danach ein Stück Tesafilm drüber.
20220429_121920.jpg


Wenn alles fest ist, steckt die Drähte so weit in die Dupont-Stecker wie es geht.
Und biegt die 2 äußeren ein wenig in Richtung Mitte.
Sollten die 3 Drähte nun nicht die gleiche Länge haben, schneidet sie zurecht.

Wer mag, kann nun noch über das ganze einen Schrumpfschlauch ziehen.
Der fertige Stecker sollte dann in etwa so aussehen:

20220429_124322.jpg


Steckt die Kabel an dem ST-Link so an das sie mit diesem Diagramm übereinstimmen:
Wiring.png



Schritt 1
MiDu-Flasher_v1.0.5.zip runter laden und entpacken.
Die USB Treiber für den ST-Link aus dem Ordner "MiDu-Flasher_v1.0.5\Driver\ST-LINK_USB_V2_1_Driver\" installieren.
In dem Ordner befinden sich die Treiber für ein x64 und x32 Bit System.
Am besten startet ihr einfach die "stlink_winusb_install.bat".
Driver_install1.PNG

Dann wird automatisch ausgewählt welcher Treiber der richtige für euer System ist.
Jetzt könnt ihr den ST-Link Adapter mit dem USB-Verlängerungskabel zusammen anstecken.

Danach solltet ihr den ST-Link Adapter selbst updaten.
Dazu startet ihr die "ST-LinkUpgrade.exe" aus dem "MiDu-Flasher_v1.0.5\Driver\ST-LINK_FirmwareUpgrade_V2.J37.S7\" Ordner.
ST-Link_upgrade1.PNG

ST-Link_upgrade2.PNG

Jetzt klickt ihr auf "Device Connect".
Sollte nun diese Meldung erscheinen:
ST-Link_upgrade3.PNG

Trennt den ST-Link vom USB Anschluss, und steckt ihn neu ein.
Danach sollte das Verbinden funktionieren.
Wenn ihr verbunden seid, könnt ihr unten rechts auf "Yes >>>>" klicken,
und das Firmwareupdate des ST-Link Adapter wird durchgeführt.

Schritt 2
Zuerst Muss die Displayabdeckung entfernt werden.
Diese ist nur geklebt.
Damit sich der Kleber besser lösen lässt, solltet ihr nun vorsichtig die Displayabdeckung mit einem Haarfön erwärmen.
Nehmt nur die kleinste Stufe an dem Haarfön und mit kreisenden Bewegungen die Stelle langsam erhitzen.
Wir wollen die Displayabdeckung ja nicht schmelzen, sondern nur den Kleber darunter erwärmen.
Dann geht ihr mit dem Plektrum in den Spalt zwischen Abdeckung/Rahmen, und hebelt vorsichtig die Abdeckung runter.
Immer ringsherum und dann ein wenig Hebeln.
Lasst euch Zeit dafür, und wenn der Kleber sich nicht richtig lösen lässt, lieber nochmals mit dem Haarfön erwärmen.

Schritt 3
Kontakte reinigen.
Die 3 Kontakte an dem Dashboard sind teilweise mit einer Art Klarlack versiegelt.
Kontakte.jpg

Für bessere Konnektivität muss dieser Lack vorher runter.
Dazu am besten mit einem Brillenputztuch, oder anderer alkoholischen Lösung sorgfältig reinigen.
⚠️Achtung!
Der Scooter sollte dazu ausgeschaltet sein.
Er darf erst wieder eingeschaltet werden wenn die Reinigungsflüssigkeit komplett verdunstet ist.


Schritt 4
Um eine stabile Verbindung zu bekommen, solltet ihr nun mit dem Skalpell die Leiterbahn zu dem c2 Kondensator durchtrennen.
c2_cut.png


Ihr könnt es allerdings auch zuerst ohne durchtrennen der c2 Leiterbahn probieren.
MiDu-Flasher wird das erkennen, und automatisch die Geschwindigkeit runter schrauben.
Nach 5 fehlgeschlagenen Verbindungen stellt MiDu-Flasher die Geschwindigkeit auf 400 und ab 20 auf 100 runter.

Schritt 5
Den e-Scooter sperren, damit das Display länger mit 5 Volt versorgt wird.
Wenn ihr den e-Scooter nicht sperrt, geht er nach 5 Minuten idle Zeit aus.
Das reicht normalerweise aus, aber sicher ist sicher.
Also könnt ihr nun in der offiziellen Xiaomi Home App den e-Scooter sperren.
Screenshot_20220531-011715_Mi Home.jpg


Beendet die Xiaomi Home App, und deaktiviert das Bluetooth nun an eurem Handy.

Schritt 6
MiDu-Flasher starten und Dashboard auswählen ( 1 ).
MiDu-Flasher_01.PNG


Im nächsten Schritt wählen wir Downgrade aus ( 1 ).
MiDu-Flasher_02.PNG


Jetzt wählt ihr euren Scooter aus.
( 1 für 1s / 2 für Pro2 / 3 für Mi3 )
MiDu-Flasher_03.PNG


Im letzten Schritt wählt ihr den Mikrocontroller des Dashboard aus.
MiDu-Flasher_04.PNG

Da ihr eine BLE157 (1s / Pro2) oder BLE155 (Mi3) drauf habt, muss das wohl ein original Dashboard mit "NRF51822QFAC" Mikrocontroller sein.
Also wählt ihr an dieser Stelle wieder ( 1 ) aus.

Danach wird MiDu-Flasher euch sagen das er keine entsprechende Firmware für diesen e-Scooter finden kann.
Und diese heruntergeladen werden muss.
Bestätigt diese Aufforderung mit einer beliebigen Taste.
Wenn der download der BLE Firmware erfolgreich war, wird noch der 1s/Pro2/Mi3 Bootloader benötigt.
Auch diesen möchte MiDu-Flasher nun herunterladen.
Bestätigt auch diesen Download mit einer beliebigen Taste.

Nun fragt MiDu-Flasher ob die neue BLE auf 157 (Pro2/1s) oder 155 (Mi3) gespooft werden soll.
Spoofen bedeutet hier, das die Versionsnummer der BLE die heruntergeladen wurde auf 157 bzw 155 geändert werden soll.
Es ist empfohlen diese Frage mit ( y ) also ja zu bestätigen.
Somit schaut es nach dem Downgrade so aus, als ob immer noch eine BLE157/155 drauf ist.
Allerdings muss ich auch erwähnen, das mit der neuesten SHU App (2.0.4) das Flashen dann nicht mehr funktioniert.
Die neuste Version der SHU App verweigert dann das Flashen der BLE und DRV.
Das ist natürlich nur eine falsche Annahme von SHU, aber es wurde leider so in die neuste SHU Version eingebaut.
Mit Downg, oder einer älteren SHU Version (z.b. 2.0.3 und darunter), können aber trotzdem wie gewohnt BLE's und DRV's geflasht werden.


Wenn die Spoofing Entscheidung getroffen und erledigt ist, landet ihr hier:
MiDu-Flasher_05.PNG


Ab dieser Stelle startet nach einem Tastendruck der letzte initial Countdown von 30 Sekunden.
Diese Zeit könnt ihr dann nutzen um ganz gemütlich den gebastelten Stecker, auf den Kontakten des Dashboard zu platzieren.
Wiring.jpg


Nach den 30 Sekunden wird MiDu-Flasher versuchen das erste mal eine Verbindung aufzubauen.
Wenn das nicht direkt funktioniert, bekommt ihr eine ERROR Meldung.
Das ist aber nicht weiter tragisch.
Es bedeutet nur, das die Verbindung zwischen eurem Stecker und Dashboard nicht hergestellt werden konnte.
Oder, die Verbindung nicht stabil genug ist, weil ihr die Leiterbahn zu c2 nicht durchtrennt habt.
In jedem Falle wird MiDu-Flasher nach 5 fehlgeschlagenen Verbindungen die Geschwindigkeit auf 400 runter schrauben.
Nach weiteren 15 fehlgeschlagenen Verbindungen, wird dann auf 100 gestellt.
Spätestens dann, sollte die Verbindung auch mit c2 aufgebaut werden können.

Wenn c2 jedoch aus der Schaltung ausgeschlossen wurde,
probiert den Stecker in einem anderen Winkel zu halten und erhöht etwas den Anpressdruck.
MiDu-Flasher wird dann alle 5 Sekunden einen neuen Versuch starten die Verbindung herzustellen.
Wenn das gelungen ist, bekommt ihr eine "connected" Meldung.
Sowohl auf dem Bildschirm, als auch via Audio ausgegeben.
Das bedeutet nun das ihr den Stecker so ruhig wie möglich in dieser Position halten müsst, bis MiDu-Flasher fertig mit dem Downgrade ist.

Wenn zwischendurch wieder ein Abbruch der Verbindung (ERROR) aufkommt, ist das auch nicht weiter schlimm.
Einfach Ruhe bewahren und den Stecker neu platzieren, um die Verbindung wieder herzustellen.

Wenn der Downgrade fertig ist, gibt MiDu-Flasher das Audio Signal "done" aus.
Auf dem Bildschirm sollte das so aussehen.
Downgrade_Successful.png


Jetzt nur noch den e-Scooter wieder in der offiziellen Home oder SHU App entsperren, und ihr seid fertig :)

Wer dennoch ein Problem mit der Durchführung hat, kann es auch machen lassen.
Hierzu gibt es die "Rollerplauscher, hilft Rollerplauscher!" Rubrik.

Solltet ihr an einer Stelle Hilfe benötigen und ihr bittet in diesem Thread um Hilfe,
dann muss zu eurem Post der Inhalt der MiDu.log Datei (Resource Ordner) in einem solchen Code SPOILER gepostet werden!
code_spioler_rp-png.19047

Code:
Bitte verwende, Anmelden oder Registrieren um den Inhalt der Codes anzuzeigen!
Bitte versucht auch euer Vorgehen und das Fehlerbild so detailliert wie es nur geht zu beschreiben.
Am besten auch mit Bildern.

Wenn euch dieser Beitrag gefällt, denkt bitte darüber nach eine Spende für den RollerPlausch da zu lassen.
Das Geld geht nicht an mich, aber ihr unterstützt damit diese wundervolle Plattform.
Auch über ein Klick auf den Hilfreich Button freue ich mich jedes mal und spornt mich an weiter zu machen.
Danke ❤️
 
Zuletzt bearbeitet:

S1m0n

Content-Creator
12 Juli 2021
866
855
E-Scooter
Pro 2 / Legend Lite
Hab keinen pro2 mehr aber vermisse die Xioami Gemeinde.. ständig ist Entwicklung im Gange. Sehr sehr geil 😎🤘
 
  • Hilfreich!
Reaktionen: VooDooShamane

VooDooShamane

Moderator
Teammitglied
19 August 2021
2.424
5.365
E-Scooter
mi Pro2/9bot F2 Pro
Danke an alle für die lieben Worte! ❤

Die ausführliche Anleitung zum Dashboard Downgrade werde ich wohl erst ab Montag schreiben können, da ich über das WE nicht zu Hause bin.
Grob sollte der Ablauf schon jetzt klar sein.
Hab ja schon viel erklärt in dem Zwangsupdate Thread.

Wird es Unterstützung für Mi3 geben?
Im Grunde gibt es die sogar schon.
Aber ja, ich werde den Mi 3 scooter auch noch direkt mit rein nehmen.
So das man ihn in dem Hauptmenü auch auswählen kann.

LG
VooDoo
 
17 Juli 2021
411
174
E-Scooter
Xiaomi Scooter Pro 2
Top gemacht. Habe das Teil direkt mal testen müssen. Sehr übersichtlich und einfach gehalten. Sogar die entsprechenden Dateien downloadet das Programm.

Ich konnte allerdings nur Flashen, durch entfernen des C2 Widerstand. Bleibt dieser dran, versucht er alle 5 Sekunden ein neuen Versuch. Auch wenn die Geschindigkeit aufs Minimum ist. Als ich den C2 entfernt habe, ging es wunderbar. Aber das ist ja kein großer Akt.

Vielen Dank für deine Mühe und Entwicklung dieses tollen Tools
 

VooDooShamane

Moderator
Teammitglied
19 August 2021
2.424
5.365
E-Scooter
mi Pro2/9bot F2 Pro
Danke für das Feedback.

Ja die Verbindung ist leider nicht sehr gut wenn c2 noch zwischen funkt.
In meinen Tests konnte ich ab Adapter speed 400 ab und zu eine Verbindung bekommen.
Besser ist es jedoch wenn c2 aus der schaltung ausgeschlossen wird.

Kannst mir gerne mal deine MiDu.log Datei per pn schicken.
Oder wenn es dir nichts ausmacht das komplette Dateipfade angezeigt werden, hier in einem Code spoiler posten.
 
  • Hilfreich!
Reaktionen: REDOFF und mhdot