RP ✔️ 🛠️ ST-Link Tutorial Ninebot G30D/G30D II ESC mit dem ReFlasher unbricken (einfachste Methode)

GeoBot

Moderator
Teammitglied
16 Juli 2021
2.338
3.301
Liebe zum Escooter
E-Scooter
G30D II, MAX G2
Rollerplausch ReFlasher ST-Link Titel.png

Diese Anleitung wurde für den Ninebot G30D / G30D II geschrieben.
Diese Firmware / Anleitung kann ❌ nicht für Xiaomi E-Scooter genutzt werden

ST-Link V2 - Flashen/Downgraden der Firmware des ESC mit dem ScooterHacking ReFlasher


Nach dieser Anleitung ist es möglich, die Betriebssoftware des G30D/G30DII mit einem ST-Link-Modul downzugraden. (englisch downgrade = zurückstufen)
Diese Variante der Firmwareinstallation wird nötig, wenn man über Bluetooth (BT) keine Verbindung mehr zum Scooter aufbauen kann.

WICHTIG! Beim Ninebot G30 Baujahr 2022 ist ein neuer Controllertyp (G30_New Generation_V1.1) aufgetaucht, der nicht mehr über den altbekannten STM32-Chip, sondern einen AT32-Chip verfügt. Dieser neue AT32-Microcontroller wird nun natürlich auch im ReFlasher unterstützt. Dazu musst du unbedingt wissen, welchen Microchip du auf deinem Controller verbaut hast. Das findest du ganz einfach durch das Auslesen der UUID heraus.

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.

Auch das Thema "Errorcode 10" werden wir hier aufgreifen. Dieser Fehler zeigt einen Kommunikationsfehler zwischen Dashboard und Controller an.
Oftmals lässt sich der Controller aber durch das Flashen einer Firmware mit einem ST-Link Programmierer über den PC wieder retten.
Man kann natürlich auch käuflich einen neuen Controller erwerben, das ist aber die etwas kostspieligere Variante diesen Fehler loszuwerden.

Dazu muss der Controller (ESC) aus dem Scooter ausgebaut werden. Ein De-/Montagevideo für den ESC findet ihr => <=.

Wer sich das nicht zutraut, kann sich gerne mal in der Rubrik "Rollerplauscher, hilft Rollerplauscher!" umsehen.
Dort gibt es eine Liste mit Rollerplauschern, die gegen eine kleine Aufwandsentschädigung nebst Rückporto soetwas gerne für euch erledigen.
Das primäre Ziel dieser Anleitung ist allerdings, ihr erledigt das nach der folgenden Anleitung selbst.

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

Benötigt:

Vorwort:

Bisher war es so, dass man ein komplettes Speicherabbild (esc126_fulldump.bin) mit der STM32 ST-LINK Utility in den Scooter geflasht hat.
Nun kann man mit dem arbeiten. Einfacher geht es wirklich nicht.

Bau des Kabels:
ST Link (1).png


Das ist zunächst mal der Plan mit der Pin-Belegung. Links könnt ihr die Belegung eures ST-Link V2 erkennen.
In der Mitte ist das 5-polige Dupont Jumperkabel zu sehen, wir benötigen davon nur vier Litzen. Die nicht benötigte
Litze könnt ihr aber leicht aus dem Stecker entfernen. Dazu mit einem kleinen Schraubendreher die Lasche vom
Stecker leicht anheben und das Kabel nach hinten herausziehen. Dieser Stecker wird später an der Anschlussleiste des ST-Link V2 angesteckt.

Rechts ist der 7-polige JST PAP-07V-S Stecker abgebildet. Dieser wird später auf den Controller gesteckt und liefert
dem ESC die zum ReFlashen benötigte Spannung. Nun werden die beiden Steckerleisten gemäß des Anschlussplans zusammengelötet.
Am Ende des Kabels für SWDIO und SWCLK wird jeweils eine Stecknadel angelötet und mit einem Schrumpfschlauch oder Isolierband
zu etwa einem Drittel isoliert. Die Spitzen der Nadeln bleiben dabei frei.
Die Controller sind mit einem transparenten Silikon überzogen.
Zum ReFlashen stechen wir später die Nadeln hindurch und stellen so einen Kontakt auf der Platine her.


Die unterschiedlichen ESC-Modelle:

Als nächstes stellen wir mal fest, welcher Controller (ESC) bei uns verbaut ist.
Es gibt folgende Modelle, die sich alle etwas unterscheiden.

Der G30 Controller (flashbar) (anklicken zum vergrößern)
G30 Controller.png


Der G30D Controller (flashbar) (anklicken zum vergrößern)
G30D Controller.png


Der "G30_New Generation_V1.1" ESC (flashbar) (anklicken zum vergrößern)
Dieser Controller hat keinen STM32 Chip, sondern einen AT32 Chip verbaut
und ist nun auch mit einem ST-Link Programmer downgradebar (DRV1.7.0>).
Flash_G30_v11.webp

Dieser Controllertyp lässt sich optional mit >>einer anderen Methode<< unbricken (Fehlercode 10).

Der "2-in-1" Controller (flashbar) (anklicken zum vergrößern)
Dieser Controller hat auch einen AT32 Chip verbaut
und ist ebenfalls mit einem ST-Link Programmer downgradebar (DRV1.7.0>).
2-in-1 ESC G30.webp


Der Clone-Controller XBOT (nicht flashbar) (anklicken zum vergrößern)
XBot Clone.png


Rental-Controller (anklicken zum vergrößern)
SPIN_ESC_RP.png


Der G2 MAX / F2 ESC (flashbar) (anklicken zum vergrößern)
G2-FRONT.png

G2-BACK.png


Es werden entsprechend der Bild-Beschriftung die Leitungen 5,0V, GND, SWDIO und SWDCLK benutzt.
Es muss nur ein Mal die Masse (GND) angeschlossen werden, auch wenn die Grafik zwei Möglichkeiten zum Anschluss nennt.
Als erstes steckt ihr das 5-polige Dupont-Kabel gemäß der Belegung an euren ST-Link V2 an.
Nun steckt ihr den JST PAP-07V-S Stecker mit den Leitungen 5V & GND einfach auf den 7-poligen Steckplatz des Hauptsteuerkabels und durchstecht mit den zwei Stecknadel-Kontakten (SWDIO, SWCLK) das Silikon, sodass diese in der Mitte des Lötpads durch das dort vorhandene Loch fixiert werden.
Hier ist eine zweite Person hilfreich, die das Ganze während des Flashens kurz festhält.


Anleitung:

Um den ReFlasher bestimmungsgemäß nutzen zu können, sollte euer ST-Link Modul auf die aktuellste FW-Version (V2.J37.S7) upgegradet worden sein.
Der ST-Link-Upgrader ist Teil der STM32 ST-LINK Utility und ist auch im unter \MiDu-Flasher_v1.0.5\Driver\ST-LINK_FirmwareUpgrade_V2.J37.S7 zu finden.
Habt ihr das erledigt, installiert ihr den WinUSB-Treiber mit der Zadig-App.

Als nächstes startet ihr mal den ReFlasher und macht dort alle erforderlichen Eingaben.

Hier wird lediglich Ninebot MAX unter Scooter ausgewählt,
unter Pheripheral sollte DRV ausgewählt sein und unter Serial number tragt ihr eure Seriennummer eures Ninebot-Scooters ein.
Diese ist 14-stellig und steht auf einem weißen Feld auf der Seite des Lade-Anschlusses.
Als letzte Eingabe setzt ihr unter Total distance travelled eure bisherige Gesamtlaufleistung ein.
Die Haken bei Copy CPUID und Activate ESC lasst ihr einfach gesetzt.

Wenn eure Überprüfung des Microchips einen AT32-Chip auf eurem ESC identifiziert hat müsst ihr nun zusätzlich die Checkbox AT32 mit einem Haken versehen.
Diese Möglichkeit ist erst seit dem ReFlasher v1.3 gegeben und auch nur mit dieser Version und höher könnt ihr den neuen ESC flashen.

ReFlasher13AT.png

Nun stellt ihr die Verbindung mit eurem selbstgebastelten Kabel zwischen ST-Link Programmer und eurem ESC her.

GeoBot G30 ST-Link ESC cable.png
Nadelkontakte.png




Mit der Taste Launch recovery löst ihr den eigentlichen ReFlash-Vorgang aus. Dieser dauert in der Regel ca. 2-3 Sekunden.

[ReFlasher] Starting..
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : clock speed 1000 kHz
Error: open failed
[ReFlasher] Couldn't connect to ST-Link
Kommt hier diese Fehlermeldung, habt ihr mit euren Nadel-Kontakten die Kontaktpunkte auf der Leiterplatte verfehlt oder die Belegung eures Kabels stimmt nicht.

ReFlasher Version history and changelog:
, April 27th, 2024 - Fixed a bug with F series DRV flashing.
, April 20th, 2024 - Fixed G2 flashing, added missing diagrams and fixed a user data flashing bug
, April 18th, 2024 - Improved F-series support, added D-series and added G2 DRV
, January 31st, 2023 - Added support for GD32 Xiaomi ESCs, AT32 Ninebot Max and F-series ESCs, added self-updater, added diagrams
, May 9th 2022 - Added support for BLE boards & Ninebot F-series
, March 26th 2022 - Initial release

Information:
Installiert ihr den WinUSB-Treiber mit der Zadig-Utility, könnt ihr zunächst mit der bisherigen STM32 ST-LINK Utility nicht mehr arbeiten.
Führt ihr aber nach dieser Installation das Setup der STM32 ST-LINK Utility nochmal aus, wählt dort die "Repair" Option aus und Installiert die Treiber neu,
funktionieren beide Tools einwandfrei.
 
Zuletzt bearbeitet von einem Moderator:
Uff dann werde ich wohl demnächst mein Scooter halb zerlegen dafür (übertrieben gesagt) muss nur gucken wie ich den Akkudekel abbekomme🤔