11 Oktober 2022
25
9
E-Scooter
G30D II
Status: Experimentell, Ungetestet
CFW: DRV173-SLS_27.bin
Mod Edit:
Link entfernt


Project (GitHub):
Ich habe für die DRV173 einen Speed Patch für den Speed Mode geschrieben. Das Projekt basiert auf dem . Zukünftig sollen noch mehr Patches hinzugefügt werden.

Status Controller: Der 1.1 Controller wurde von Nutzern gebrickt, da die ältere (+gepatchte) Firmware (wegen Kompilierung) nicht für den verbauten Artery Chip kompatibel ist. Soweit ich es verstande habe, ist der Flash an sich aber kein Problem. Ich denke daher, dass die CFW somit kompatibel sein müsste.

Ich habe nicht alle Mittel um diese CFW selber zu testen... aber wenn jemand Lust dazu hat und für den schlimmsten Fall dass KnowHow, den Controller per ST-LINK bzw. UART bei den neuen Controllern zu unbricken, kann die Person es gerne tuhen.

Ich bitte jemanden darum, auch nochmal auf den Code zu schauen.

So wurde für den Speed Patch vorgegangen:

1. Im Xiaomi Patcher wird bei der DRV319 des Mi 1S dass Offset 5d12 verändert:
von:
Code:
mov.w      r8,#0x19
zu:
Code:
mov.w      r8,#<NEUE KMH>
Code:
                      LAB_00005d04
                                      
                                          
                                          
                                      
00005d04 95 f8 34 30     ldrb.w     r3,[r5,#0x34]=>DAT_200006f8
00005d08 14 21           movs       r1,#0x14
00005d0a 4f f4 96 70     mov.w      r0,#0x12c
00005d0e 44 f6 20 62     movw       r2,#DAT_00004e20
00005d12 4f f0 19 08     mov.w      r8,#0x19

2. Ich habe in der DRV173 des Max befindet sich folgender (zu 99% sicher) equivalenter Code (konnte nichts so krass ähnliches woanders finden):
Code:
                         LAB_00006f24
   
  
   
  
00006f24 97 f8 51 b0     ldrb.w     r11,[r7,#0x51]=>DAT_200007cd
00006f28 14 23           movs       r3,#0x14
00006f2a 4f f4 fa 5a     mov.w      r10,#0x1f40
00006f2e 4f f0 19 0c     mov.w      r12,#0x19

Daher sollte hier das Offset 6f2e verändert werden.

3. Ich habe nach der vorliegenden Logik des Xiaomi Codes in meinem Code folgende Änderungen gemacht:
Neue Signatur = [0x97, 0xf8, 0x51, None, None, 0x23, 0x4f, 0xf4, 0xfa, 0x5a]
vorher: [0x95, 0xf8, 0x34, None, None, 0x21, 0x4f, 0xf4, 0x96, 0x70]
(Ergibt sich durch die Daten vor dem Patch-Offset)

Neues Register: 12
vorher: 8
(Hier werden die km/h reingeschrieben. Dass Register wird im Code zum verifizieren angegeben)

Neues zusäzliches Offset: 0xa
vorher: 0xe
(Durch die Suchfunktion mittels des Patterns muss noch zusätzlich ein Offset hinzugefügt werden, um zum Offset des eigentlichen Patches zu gelangen)

4. Fazit
Log der Veränderungen meines Ninebot Patchers:
Code:
speed_limit_speed (Offset) 0x6f2e (HEX davor) 4ff0190c (HEX danach) 40f21b0c
(vorher)< mov.w ip, #0x19
(nachher)> movw ip, #0x1b

Insgesamt sollte im Ninebot Patch exakt das selbe mit minimal veränderten Parametern gemacht worden sein.

Zum Abgleich:
 
Zuletzt bearbeitet von einem Moderator:
Hex 19 = 25 in Dezimal.
Also das Offset welches du hier verändert ist das Speed limit für den EU mode.
Wenn du das Offset für das DE Speed Limit suchst, musst du nach Hex 14 schauen.

Hab mal kurz rein geschaut in die DRV173.
Das DE Speed Limit liegt an Offset 6f28.
Code:
00006f28 14 23           movs            r3,#0x14
 
Zuletzt bearbeitet:
Hex 19 = 25 in Dezimal.
Also das Offset welches du hier verändert ist das Speed limit für den EU mode.
Wenn du das Offset für das DE Speed Limit suchst, musst du nach Hex 14 schauen.

Hab mal kurz rein geschaut in die DRV173.
Das DE Speed Limit liegt an Offset 6f28.
Code:
00006f28 14 23           movs            r3,#0x14
Thx 👍 Werde es im Patcher übernehmen. Dieses Offset ist ja kurv vor dem EU Offset ... Wusste aber nicht genau ob es das richtige ist, da global mehrfach 0x14 in Register geschrieben werden.
 
Hier noch das SL für US Mode.
Auch grad eben entdeckt.
Code:
                             US Speed Limit
        00007106 1e 22           movs            r2,#0x1e

PS:
Wird alles in der kommenden VLT-Firmware für Ninebot noch ausgiebig dokumentiert und getestet.
 
Sehe das in der Code Logikabfolge.
Offsets sind jetzt von meiner Seite auch nochmal 100% bestätigt. Der Decompiler sagt hier eindeutiges aus 👌... Die Variablen lassen sich eben genau über diese Offsets definieren.

Unbenannt.PNG


Im ersten Commit hatte ich zudem beim EU-Patch statt mov.w movw verwendet. Ist zusammen mit dem DE-Patch bereits geupdatet. Werde jetzt noch den Patch für die United States hinzufügen :)
 
Ich habe für die DRV173 einen Speed Patch für den Speed Mode geschrieben. Das Projekt basiert auf dem . Zukünftig sollen noch mehr Patches hinzugefügt werden.
Dürfen wir hier Wünsche äußern :giggle:

Speed auf US > 39km/h (Gen2 Motor)

No Overspeed Alarm

Motorstart speed and cruise controll > 3sec

breaklight mod
 
Dürfen wir hier Wünsche äußern :giggle:

Speed auf US > 39km/h (Gen2 Motor)

No Overspeed Alarm

Motorstart speed and cruise controll > 3sec

breaklight mod
Die Geschw. lässt sich hier ja anpassen ( ):
Bildschirmfoto 2022-10-26 um 08.27.12.png

.... und wie im beschrieben ausführen.

Ich denke es wird ansonsten vorerst keine weitere Entwicklung geben :/ XiaoDash basiert ja ebenfalls auf der DRV173 (blinkt nicht, aber es gibt generell kein Bremslicht (aktiviert blinkt es wieder) ... nur permanent ein oder aus) und es gibt bereits ein Prerelease der neuen SHFW (ebenfalls basierend auf der DRV173).
 
  • Hilfreich!
Reaktionen: Marcell
Die Geschw. lässt sich hier ja anpassen ( ):
Anhang anzeigen 39635
.... und wie im beschrieben ausführen.

Ich denke es wird ansonsten vorerst keine weitere Entwicklung geben :/ XiaoDash basiert ja ebenfalls auf der DRV173 (blinkt nicht, aber es gibt generell kein Bremslicht (aktiviert blinkt es wieder) ... nur permanent ein oder aus) und es gibt bereits ein Prerelease der neuen SHFW (ebenfalls basierend auf der DRV173).
XiaoDash oder SHFW ist ja genau das, was ich nicht will 😅

Dann wohl doch warten auf VooDooShamane VooDooShamane
 
  • Hilfreich!
Reaktionen: trueToastedCode