Hallo
Ich würde gerne wissen, wie der Lime Gen3 Motor Controller funktioniert.
Hier mal ein Dropbox Link darin ist alles was ich über den Scooter weiß:
https://www.dropbox.com/sh/mvplcn1fswp5w3n/AABxi8ZPnCXO2xXToxQAOpHOa?dl=0
Ich habe den Scooter mit Genehmigung von Lime im Defektzustand von der
Straße aufgelesen, und repariert. Das Problem ist nur, dass ich gerne
wüsste, wie die Software in dem Scooter funktioniert, aber kein
Disassembly lesen kann, da ich dafür nicht das nötige Wissen habe, und
in absehbarer Zeit auch nicht haben werde. Daher wollte ich mal bitten
ob sich das jemand der mehr damit zu tun hat ansehen kann, ich bin eher
im Bereich Hardware angesiedelt, für mich war Software leider immer ein
Buch mit 7 Siegeln, vor allem Reverse Engineering, von dem ich garnichts
verstehe.
Bastler schrieb:> Daher wollte ich mal bitten ob sich das jemand der mehr damit zu tun hat> ansehen kann, ich bin eher im Bereich Hardware angesiedelt, für mich war> Software leider immer ein Buch mit 7 Siegeln,
Der typische Hardware-Entwickler... Oh man.
1. Die Funktion des Scooters wird durch Software definiert. Die
Regelungstechnik, Safety und Security wird dir keiner nach einem
Disassembly in 3 Tagen erläutern können.
2. Mit dem Inhalt des Flashspeichers ist der Mikroprozessor ein riesiges
sequentielles Schaltnetz, oder auch ein Automat. Begreife, dass Software
ein Teil deiner Hardware ist.
Da drin werkelt also zumindest ein STM32F103. Du wirst nicht umhin
kommen, einen Portplan zu erstellen, in dem jedes Beinchen des MC seiner
Funktion im Motor-Controller zugeordnet wird.
Erst dann ist es sinnvoll, mal einen symbolischen Disassembler über das
File zu jagen. Allerdings ist das immer noch selbst für Experten ein
mühseliges Unterfangen.
Hat man keinen Zugang zu Quellen, sollte man besser selber neu
schreiben.
Das Problem ist, dass Lime den Sourcecode selber nicht hat, den hat
irgendeine >chinesische Softwarewurschtelei, die das zusammengekloppt
hat. Dazu kommt noch, dass es ein 32bit Prozessor ist, deren Code ist
laut Experten noch schwerer zu lesen, als der von 8 oder 16 bit, weiß
aber nicht ob das stimmt. Warum ist es eigentlich fürs reverse
engineering so wichtig, dass man die Pinverbindungen Prozessor >< Board
kennt? Ich weiß selber, dass ich über kurz oder lang programmieren
lernen muss, aber leider ist das eben nicht gerade mal einfach, schon
garnicht, wenn dus dann mit C++ versuchen willst. Ich bin jemand der am
besten durch Trial und Error lernt. Jemand den ich gut kenne und der
mich sehr gut kennt, aber keine Zeit mir das beizubringen hat mal gesagt
"Schau dir fertigen Quellcode der Geräte die du später mal selber
schreiben willst (Microprozessoren wie z.B. in dem Scooter) an, und
schau wie das gemacht ist, dann verstehst du es" WIE DENN, dank diesen
Sch... Chinasfirmen, die alles klauen sind die Firmen die Fertigen
Quellcode besitzen was die Frage angeht "Kann ich den haben" allesamt
mittlerweile so verdammt hochagressiv, dass du da schon gar nicht zu
Ende fragen kannst bevor sie dir die Tür vor der Nase zuschlagen. Ich
würde ja alles vom Board ablöten, aber dann habe ich zwar das Layout von
dem Scooter Controller, aber keinen Controller mehr mit dem ich das Teil
betreiben könnte. Ich bräuchte einen zweiten Controller von einem Lime
G3 die Frage ist nur, woher nehmen? Einen Scooter aus dem Wasser fischen
würde gehen, aber dazu bräuchte man Tauchausrüstung, und müsste tauchen
können, so tief wie die Gewässer sind, in die die Dinger haufenweise
geschmissen werden. Ich kann euch schon sagen, was von unserer
Zivilisation übrig bleibt: Ein E Scooter, versteiner im Schlamm wird in
32.000 Jahren in irgendeinem Museum einer fernen Zivilisation stehen,
und jeder Wird sich fragen, was das denn mal war. Aber die werden dann
wohl auch nicht an den Code kommen, weils für den Prozessor bis dahin
garkeine Lesegeräte mehr gibt (;-
Bastler schrieb:> Warum ist es eigentlich fürs reverse> engineering so wichtig, dass man die Pinverbindungen Prozessor >< Board> kennt?
Weil du sonst überhaupt keine Ahnung hast, welche Ressourcen des MC für
welchen Zweck benutzt werden. Wenn das ein Projekt werden soll, versteht
es sich praktisch von selbst, das du den Schaltplan der Steuerung
aufnimmst.
Und es versteht sich auch, das du mindestens 2-3 Exemplare der Platine
hast.
Möchtest du das nur als Spass, dann rate ich dir, erstmal mit was
anderem anzufangen, z.B. einem der Discovery Boards. Auf dem VL
Discovery ist ein STM32F100, der dem o.a. recht ähnlich ist. Da kann man
programmieren lernen, ohne das sich alles in Rauch auflöst.
Ach, mach doch bitte mal Lücken in deinem Text. Das ist fast nicht zu
lesen.
Ich werde nach Möglichkeit mal noch nach weiteren defekten Rollern
ausschau
halten, liegen ja genug rum, die Vandalen in der Hand hatten, aber das
dauert halt. Ich würde gerne selber wissen, wie das Board funktioniert,
aber wie geschrieben kann ich das erst machen, wenn ich einen weiteren
habe, dann werde ich mal alles ablöten, und sehen wie das nackte Board
aussieht.
Dass ein E Scooter keine gute Übungsplattform ist, weiß ich, daher hatte
ich auch vor, mit was ungefährlicherem anzufangen, was keine
Lithiumbatterie mit 36V und 16Ah dahinter hat, die dir alles zerschießt
wenn da was schief läuft. Frag mich immer, wie eigentlich diese ganzen
Option ROMs z.B. für den Xiaomi M365 oder wie der heißt E Scooter
entstehen.
Wie gesagt, ich hab das Problem dass Profis zu mir sagen, lerne das
durch lesen von vorhandenem Quellcode, das ist der beste Weg. Aber an
den kommt man halt nicht dran, die Firmen sind da in der heutigen Zeit
wo alles geklaut wird, so in Panik, dass die dir nichts mehr geben, und
schon garkeinen Quellcode. Sonst hätte ich mir schon lange ein kleines
Gerät besorgt, und den Quellcode von der Firma, und dann gesehen, was
warum wie und unter welchen Umständen dasunddas tut.So hab ich alles
gelernt was ich heute in der Technik weiß, durch ausprobieren, und
zerlegen, geht halt bei Software nicht, wie man hier sieht...
Der wievielte Thread ist das jetzt eigentlich, in dem Du kostenlos Leute
suchst, die Dir das Disassembly abnehmen sollen? Ich komme auf drei
Threads. Wenn sich bislang noch keiner gemedlet hat, wird das auch
keiner mehr tun.
Bastler schrieb:> Wie gesagt, ich hab das Problem dass Profis zu mir sagen, lerne das> durch lesen von vorhandenem Quellcode, das ist der beste Weg. Aber an> den kommt man halt nicht dran
Das ist doch kein Problem. Es gibt auch opensource-Projekte, deren Code
auf kommerziellem Standard ist (und das sogar für BLDC-Controller!).
Gute Beispiele sind ODrive und die VESC:
https://github.com/vedderb/bldc (C Code)
https://github.com/madcowswe/ODrive (C++)
Sogar beide basieren auf STM32-Prozessoren. Ich denke diese Projekte
könnten ein guter Einstieg für dich sein.
Mal so aus Interesse gefragt: wie bekommt man von Lime die Genehmigung
deren defekte Roller zu zerspielen? Hin und wieder sieht man schon so
ein ramponiertes Ding herumliegen, aber warum haben die keine
Werkstätten um wenigstens durch Teiletauschen was zu retten?
Hast du den Supoort angemailt, oder wie läuft das ab?
Ansonsten ein paar Ideen:
- Du solltest den chinesicher Hersteller und das Modell identifizieren.
Mit den Infos kann man weitersuchen.
- Du kannst versuchen die Handbücher oder die Programmiersoftware vom
chinesichen Hersteller zu bekommen.
- Welche Chips sind verbaut und wofür sind sie gut.
- Erstelle ein Block-Diagramm der Hardware - welche Komponenten sind wie
miteinander verbunden und welche Funktion könnten sie im Roller haben.
- Es ist nicht ganz unwahrscheinlich, dass das BT Modul einfach nur den
UART per Funk weiterleitet.
- Probiere sämtliche Interfaces aus und was man damit anstellen könnte.
Erst danach würde ich anfangen über RE der Firmware nachzudenken.
JJ schrieb:> Erst danach würde ich anfangen über RE der Firmware nachzudenken.
Das Ding soll aber übernächste Woche wieder laufen!
Wieder ein Grund warum ich die Dinger blöd find. Zum Glück wird man hier
auf dem Land von denen weitgehend verschohnt.
Traubensaft .. schrieb:> Mal so aus Interesse gefragt: wie bekommt man von Lime die Genehmigung> deren defekte Roller zu zerspielen?
Weil sich reaprieren nicht lohnt, weils zu teuer wäre, und Lime daher
die Dinger in den meisten Fällen einfach liegen lässt. Ich hab die
damals so lange per Mail gernevt, bis sie aufgegeben haben, und gesagt
haben "Gut, bevor du hier noch 100 Mails schreibst, wenn du einen
kaputten findest..."
Lime kauft die ganz billig zu 10.000 Stück ein in China, die dinger sind
keine 200€ wert, das lohnt bei einem Defekt nicht mal eine
Arbeitsstunde, bei den löhnen in Deutschland. Dazu kommt noch der Platz
den wie Werkstatt bräuchte, usw, usf. Ich würde eben gerne wissen, was
genau DIESES Programm macht. Leider ist eben das Lesen von Software so
ein Ding was ich nicht kann, und die die es können, sagen zu
kompliziert, zu viel Arbeit. Sind denn das wirklich 2 Monate Arbeit bis
man da mal durch die 16kb Code durchsteigt?
Ich kenne die open Source lösungen, aber die originale ist eben deutlich
besser, da schon genau auf diesen Motor super abgestimmt, und wenn man
den Schlüssel von dem Scooter über Bluetooth hätte, könnte man ihn z.B.
mit einer APP auf der Apple Watch freischalten...
Dazu kommt z.B. dass die Scooter einen 500W Motor drin haben, aber in
Deutschland strommäßig auf 250W gedrosselt sind. Jetzt würde mich
natürlich interessieren, wie diese Strombegrenzung funktioniert. Sicher
wird jetzt wieder einer meckern, warum ich denn die 500W ausschöpfen
will, ganz einfach: Wenn du in einer Gegend lebst wo 15-20% Steigung zum
Alltag gehören, bist du um jedes Watt froh was der Motor mehr hat.
Bastler schrieb:> Leider ist eben das Lesen von Software so> ein Ding was ich nicht kann, und die die es können, sagen zu> kompliziert, zu viel Arbeit. Sind denn das wirklich 2 Monate Arbeit bis> man da mal durch die 16kb Code durchsteigt?
Es hat meistens wenig Sinn, die Software zu durchblicken, wenn man die
Hardware nicht kennt.
Ich re-engineere gerade ein Messgerät mit STM32F429 (komplexe Kiste mit
LCD, Touch, etc. pp.) und kann nach einer Woche schon eigene Software
drauf laufen lassen, nachdem ich die Pinbelegung des F4 zurückverfolgt
habe (was bei 176 Pins ein einziger Spaß ist).
Die originale Software ist etwa 1MB gross und es wäre völlig irre, sie
ohne prof. Disassembler (IDA o.ä.) verstehen zu wollen.
Dein kleiner Controller ist vermutlich in 2-3 Tagen abgefrühstückt.
Weiss man die Pinbelegung, kann man mit Datenblatt des MC meist auch
schnell begreifen, was die Erschaffer sich gedacht haben. (Alternate
Functions und so).
Hallo,
Das Problem ist, dass ich nicht mal sehe ob das Disassembly brauchbar
ist, oder der Disassembler nur Mist erzeugt hat. Wenn es wirklich nur
2-3 Tage dauert, dahinter zu kommen, wie diese Software funktioniert,
müsste sich doch einer finden lassen, der sich das mal über ein Paar
Wochen ansieht?
Ich würds ja selber machen, aber wie gesagt, ich KANN es nicht. Sonst
würde ich hier ja nicht fragen, immerhin war ich mir jetzt auch nicht zu
schade, 3 Tage damit zu verbringen, irgednwelche Leitungen
durchzumessen, um hinter die Pinbelegung der Stecker an dem Roller zu
kommen. Wegen der Zeit ist es mir nicht aber ich habe eben einfach
nicht das Wissen von Software um da was zu machen. Aber wie hier alle
schon sageten, wird es wohl absolut zwecklos sein, zu versuchen, die
Software zu reversen, ohne das Layout des Controllers zu haben, habe ich
wenigstens das richtig verstanden?
JJ schrieb:> Hast du denn schonmal veruscht dich an die UART Schnittstelle zu> hängen> zu schauen was kommt?
Das habe ich dem TE schon vor Monaten geraten.
Aber er ist absolut beratungsresistent.
Du hast 3 Möglichkeiten:
* Ausschlachten und wegwerfen was Du nicht mehr brauchst, den Rest
einlagern und in 2 Jahren ebenfalls wegwerfen wenn Deine Frau den
Lagerplatz requiriert.
* Schmeiß die komplette Elektronik raus und kaufe einen fertigen
generischen Motorcontroller aus China (ebenfalls Black-Box aber diesmal
wenigstens mit Bedienungsanleitung und/oder Konfigurationstool)
* Reverse die Hardware, lerne wie so ein Motor üblicherweise angesteuert
wird und dann schreibe selbst eine eigene Firmware für das existierende
Board from scratch.
--
Ich würde spontan Möglichkeit 1 wählen, ich bin aber auch schon zu alt
für so einen Käse, von daher vielleicht nicht repräsentativ. 2 ist
relativ langweilig, dafür braucht man keine besonderen Skills. 3 wäre
extrem anspruchsvoll und zeitraubend aber es würde von allen 3 Varianten
Deinen Wissensstand am stärksten nach vorn katapultieren und Dir das
größte Erfolgserlebnis verschaffen und wenn Du alles sauber
dokumentierst und veröffentlichst wirst Du in einschlägigen Kreisen
gottähnlichen Status erhalten und Dein Name wird auf allen Webseiten
gepriesen werden die sich mit diesem Thema beschäftigen. Wenn Du also
viel Zeit totzuschlagen hast und viel Durchhaltevermögen um extrem harte
Nüsse zu knacken ohne sie kaputt zu machen dann verbringe die nächsten 5
bis 8 Jahre mit diesem Projekt, diese Art von Beschäftigung ist allemal
sinnvoller als das meiste andere womit die meisten anderen ihre Zeit
totschlagen wenn sie nichts sinnvolles zu tun haben.
Elias M. schrieb:> Ich würds ja selber machen, aber wie gesagt, ich KANN es nicht.
Dann ist es schon vorbei. Denn du bist ja derjenige, der daran Interesse
hat, bei uns anderen hält sich das in sehr engen Grenzen, wie du bemerkt
hast. Tipps können wir geben, aber erarbeiten musst du es.
Der TO versteht die Komplexität den ASM Code sinnvoll zu interpretieren
einfach nicht.
Aber so einen defekten LIME würde ich mir ja auch mal gerne zerlegen
;)))
Anselm 6. schrieb:> Aber so einen defekten LIME würde ich mir ja auch mal gerne zerlegen> ;)))
Die stehen an jeder Ecke und lt. TO definierst Du, was kaputt ist:
Bastler schrieb:> "Gut, bevor du hier noch 100 Mails schreibst, wenn du einen> kaputten findest..."
Hier (WI) haben die eine eigene Werkstatt und nach deren Bekunden wird
auch repariert (durch Fachpersonal). Wäre interessant, wo der TO seinen
kaputten e-Scooter gefunden hat.
Hallo
Ganz so einfach war das mit dem Scooter dann doch nicht. Es braucht
schon ganz viel Arbeit bis sich so eine Firma dazu durchringt, dir so
einen Scooter zu überlassen, aber glaubt mir, wenn ich etwas kann dann
ist es nervig sein, wie ihr ja hier auch schon gesehen habt.
Ich definiere nicht, was kaputt ist, das macht schon noch Lime.
Was für eine Werkstatt ist das? So weit ich weiß, werden die Scooter
nicht repariert, kann sich aber auch schon wieder geändert haben, ich
habe meinen vor über einem halben Jahr gekriegt, als die in Deutschland
noch ganz neu waren, er hatte einen Schaden an der Elektronik der mich
insgesamt 9 Stunden Zeit gekostet hat, ihn zu finden und zu beheben.
Wenn ich drei Möglichkeiten habe, würde ich die Nr3 nehmen. Aber wenn
ich damit dann fertig wäre, würde ich wohl genau das selbe sagen wie ihr
hier alle: Ich hab keine Lust einen popligen E Scooter zu reversen, wenn
ich mit dem selben Wissen auch was interessanteres reversen kann, viel
dürfte in diesen Dingern nicht an Software drin sein. Ich hab eben
gedacht, dass sich das mal schnell einer ansehen kann, aber gut, hat
sich soweit erledigt, ich werd mal nochmal ein paar mal Lime nerven,
vielleicht geben die ein paar informationen über die Software her. Wie
groß die Erfolgschancen sind, hat man mir hier ja schon gesagt, und kann
ich mir auch denken...
Bastler schrieb:> Ich hab eben> gedacht, dass sich das mal schnell einer ansehen kann, aber gut, hat> sich soweit erledigt, ich werd mal nochmal ein paar mal Lime nerven,> vielleicht geben die ein paar informationen über die Software her. Wie> groß die Erfolgschancen sind, hat man mir hier ja schon gesagt, und kann> ich mir auch denken...
So funktioniert Reverse-Engineering aber nicht. Mit schnell ansehen kann
man vielleicht ein paar Konstanten finden um an der
Höchstgeschwindigkeit zu drehen.
@Bastler:
ist dir denn der grundsätzliche Ansatz bekannt, wie aus einem
Algorithmus ein Programm (in einer modernen Programmiersprache), und wie
aus dem Programm dann Assembler-Code wird?
ich gehe mal davon aus, daß in deinem Roller durchaus PID-Regler
"verbaut" sein könnten. PID Regler gibt es natürlich nicht nur in
Hardware, sondern man kann sie selbstverständlich auch in Software
abbilden.
Wie so ein Software-Regler Algorithmus funktioniert, ist z.B. hier
beschrieben:
https://rn-wissen.de/wiki/index.php/Regelungstechnik
lies einfach mal schnell quer durch. An manchen Stellen ist Pseudocode
(oder tatsächlicher Code) aufgelistet.
Wnn nu diese Software durch einen Compiler in Machinencode übersetzt
wird, "siehst" du nur noch Maschinen-Befehle der Form "add irgendwas zu
register x, schiebe irgendwas auf Speicheradresse y, etc".
Das wieder zurück zu übersetzen in vernünftige Code-Sequenzen ist eine
ziemliche "Kunst", und benötigt langjährige Erfahrung und Wissen.
Welche Implementation des PID-Reglers, udn welche Variante wird wohl in
dinem Roller arbeiten? Und welche Pins werden wie wo angesteuert, um
z.B. mittesl PWM irgendein Leistungstransistor zu steuern, welcher
irgendeine WIndung deines Motors ansteuert?
Probiere es ansatzweise mal aus mit einem einfachen "Hello World"
Programm, waelches du Kompilierst, und versuche rückwärts aus dem
erzeugten Assembler-Code ein "Hello World" Programm zusammen zu orakeln.
Elias M. schrieb:> Wenn es wirklich nur> 2-3 Tage dauert, dahinter zu kommen, wie diese Software funktioniert,> müsste sich doch einer finden lassen, der sich das mal über ein Paar> Wochen ansieht?
Ernsthaft, schon wieder?
Wie oft sollen wir Dir noch sagen, dass kein normaler Mensch Assembler
Code so schnell analysieren kann?
Selbst wenn: 2 Tage zu jeweils 50 Euro pro Stunde kostet so viel, wie
ein ganzer Lieferwagen voller Roller.
> Wegen der Zeit ist es mir nicht aber ich habe eben einfach> nicht das Wissen von Software um da was zu machen.
Ach, und weil du es nicht kannst soll sich nun irgendwer dazu
verpflichtet fühlen, dir dabei zu helfen? Denkst du, das Genies die das
können, ihre Arbeitszeit verschenken?
Vergiss es!
Bernd K. schrieb:> Wenn Du also viel Zeit totzuschlagen hast und viel Durchhaltevermögen> um (die Firmware neu zu programmieren)
Da bleibt dann noch das klitzekleine Problem, dass er nur einen Roller
hat. Ein kleiner falscher Fehler, und das Ding ist kaputt, die ganze
vorherige Arbeit war dann für die Katz.
Das ist was mich daran auch so fasziniert, der Code des Controllers ist
keine
Paar Textseiten lang aber er ist so schwer zu verstehen. An der Neugier
fehlt es mir nicht, aber ich denke mal bis ich das gelernt habe, wird es
schon lange keine E Scooter mehr geben, und diese wieder genauso
verschwunden sein, wie der Fidget Spinner. Wenn man das nun in IDA
zerlegt, und sich das ansieht sieht das schon wieder zumindest für mich
sehr kryptisch aus. Ich verstehe eben kein Wort von dem was dort steht,
ist ja auch für einen Prozessor übersetzt worden, und das lässt sich wie
ich mittlerweile kapiert hab nicht (ganz) rückgängig machen. Dass die
Kommentare weg sind, ist klar, aber was mich interessieren würde, ist,
wie z.B. der Controller weiß, dass er 250W erreicht hat, und
dementsprechend abregeln muss. Sicher, durch shunts, aber da scheint
noch mehr dahinter zu stecken, dieser Regler hat drei Shunts, für jede
Pahse einen. Ersetzt man die Shunts durch niederohmigere, wird der Motor
nicht wie zu erwarten wäre stärker, sondern fängt beim Beschleunigen an
zu ruckeln. Bei Controllern mit nur einem Shunt funktioniert der Trick
einen niederohmigeren einzubauen, bei diesem Controller nicht. Ich habe
immer noch nicht kapiert, warum der drei Shunts hat. Und was die
Geschwindigkeit angeht:
Es gibt eine Stelle in der .hex steht sie auf etwas anderem als 1 fährt
der Scooter 25kmh, steht sie auf 0 fährt er 20kmh. Kann man denn nicht
mit einem Disassembler sehen womit diese Zahl verknüpft ist, irgendwas
muss da ja hinterlegt sein, sonst wüsste der Kasten doch nicht, dass er
bei 0 20 kmh fahren soll, und bei allem anderen als 0 also 1-9 25kmh.
Kann man das nicht in einem Disassembler sehen?
JJ schrieb:> Mit schnell ansehen kann man vielleicht ein paar Konstanten finden> um an der Höchstgeschwindigkeit zu drehen.
Bitte mache ihm keine falsche Hoffnungen, denn genau das will er ja
haben. Aber er bettelt schon seit Monaten erfolglos um Hilfe.
Bastler schrieb:> Kann man das nicht in einem Disassembler sehen?
Nein, kann man nicht. Weil der Disassembler eben nicht den für Menschen
Lesbaren Quelltext extrahieren kann. Der ist da nämlich nicht mehr drin.
Du erinnerst dich an den Kuchen, den man nicht in seine Zutaten zurück
verwandeln kann? Es geht einfach nicht, egal wie oft du es dir wünschst.
Stefan ⛄ F. schrieb:> JJ schrieb:>> Mit schnell ansehen kann man vielleicht ein paar Konstanten finden>> um an der Höchstgeschwindigkeit zu drehen.>> Bitte mache ihm keine falsche Hoffnungen, denn genau das will er ja> haben. Aber er bettelt schon seit Monaten erfolglos um Hilfe.
Na aber das ist doch mal eine konzise Fragestellung. Um das zu lösen
würde ich deutsche und, sagen wir, spanische Firmwaren vergleichen bis
ich ein möglichst ähnliches Paar finde und dann mit den Unterschieden
rumspielen.
Wenn man mehr will müsste man zumindest mal herausfinden welche Pins zum
Motor und welche zum Rücklicht gehen. Daraus hätte man zumindest mal
einen Anhaltspunkt.
Aber abgesehen davon und wie oben schon geschrieben: Wenn man an
Hardware rumhacken will fängt man mit den offensichtlichen
Schnittstellen an (UART) und nicht mit dem Disassembler.
Ich gebe Dir mal ein ganz keines konkretes Beispiel:
Quelltext:
1
inta=1458;
2
intb=12;
3
intc=a/b;
Das ist eine ganz einfache Division von zwei Zahlen.
Und so sieht der zugehörige Assembler-Code bei einem AVR Mikrocontroller
aus:
1
cf 93 push r28
2
df 93 push r29
3
cd b7 in r28, 0x3d
4
dd 27 eor r29, r29
5
c6 50 subi r28, 0x06
6
cd bf out 0x3d, r28
7
82 eb ldi r24, 0xB2
8
95 e0 ldi r25, 0x05
9
9a 83 std Y+2, r25
10
89 83 std Y+1, r24
11
8c e0 ldi r24, 0x0C
12
90 e0 ldi r25, 0x00
13
9c 83 std Y+4, r25
14
8b 83 std Y+3, r24
15
89 81 ldd r24, Y+1
16
9a 81 ldd r25, Y+2
17
6b 81 ldd r22, Y+3
18
7c 81 ldd r23, Y+4
19
09 d0 rcall .+18
20
7e 83 std Y+6, r23
21
6d 83 std Y+5, r22
22
80 e0 ldi r24, 0x00
23
90 e0 ldi r25, 0x00
24
ca 5f subi r28, 0xFA
25
cd bf out 0x3d, r28
26
df 91 pop r29
27
cf 91 pop r28
28
08 95 ret
29
97 fb bst r25, 7
30
07 2e mov r0, r23
31
16 f4 brtc .+4
32
00 94 com r0
33
06 d0 rcall .+12
34
77 fd sbrc r23, 7
35
08 d0 rcall .+16
36
0b d0 rcall .+22
37
07 fc sbrc r0, 7
38
05 d0 rcall .+10
39
3e f4 brtc .+14
40
90 95 com r25
41
81 95 neg r24
42
9f 4f sbci r25, 0xFF
43
08 95 ret
44
70 95 com r23
45
61 95 neg r22
46
7f 4f sbci r23, 0xFF
47
08 95 ret
48
aa 1b sub r26, r26
49
bb 1b sub r27, r27
50
51 e1 ldi r21, 0x11
51
07 c0 rjmp .+14
52
aa 1f adc r26, r26
53
bb 1f adc r27, r27
54
a6 17 cp r26, r22
55
b7 07 cpc r27, r23
56
10 f0 brcs .+4
57
a6 1b sub r26, r22
58
b7 0b sbc r27, r23
59
88 1f adc r24, r24
60
99 1f adc r25, r25
61
5a 95 dec r21
62
a9 f7 brne .-22
63
80 95 com r24
64
90 95 com r25
65
bc 01 movw r22, r24
66
cd 01 movw r24, r26
67
08 95 ret
Die zwei Werte für a und b findest du da vielleicht noch wieder. Aber
kannst du erkennen, dass dieser Code die beiden Zahlen dividiert? Also
ich kann das nicht.
Und jetzt stelle Dir mal vor, dass die Steuerung deines Rollers aus
einigen tausend komplexeren Code-Zeilen besteht. Wie willst du den
daraus erzeugten Assembler Code in lesbaren Quelltext zurück überführen?
Das wäre eine Lebenswerk!
JJ schrieb:> Wenn man mehr will müsste man zumindest mal herausfinden welche Pins zum> Motor und welche zum Rücklicht gehen. Daraus hätte man zumindest mal> einen Anhaltspunkt.
Das habe ich schon raus gefunden, muss mir nur noch mal die ganze
Platine ansehen, will sie aber eben nicht durch ablöten aller Teile
kaputtmachen, sonst habe ich zwar das Layout, aber keinen Controller
mehr, der läuft, auch nicht so wirklich zielführend.
Stefan ⛄ F. schrieb:> Und jetzt stelle Dir mal vor, dass die Steuerung deines Rollers aus> einigen tausend komplexeren Code-Zeilen besteht. Wie willst du den> daraus erzeugten Assembler Code in lesbaren Quelltext zurück überführen?>> Das wäre eine Lebenswerk!
Es muss eine bestimmte Sorte Chinese geben, die das offenbar kann,
immerwieder kriegen die es fertig viel komplexere Programme zu klauen,
und für ihre Zwecke zu modifizieren. Es kann doch nicht sein, dass die
es schaffen GB an Daten zu zerrupfen, und wir scheitern schon an ein
paar kb...
Und wie schafft es dann eigentlich die modifizierte Firmware z.B. für
den E Scooter von Xiaomi ins Internet, wie haben die da drin dann heraus
gefunden, wie die funktioniert? Ich weiß ja dass das alles andere als
einfach ist, aber wenn es unmöglich ist, wie schaffen dies dann?
Bastler schrieb:> immerwieder kriegen die es fertig viel komplexere Programme zu klauen
Sicher, die machen das aber nicht für einen Roller, sondern um an
Millionen Produkten Geld zu verdienen.
Niemand sagt, dass es nicht machbar ist. Aber nicht kostenlos und nicht
in 2-3 Tagen.
Bastler schrieb:> Es kann doch nicht sein, dass die> es schaffen GB an Daten zu zerrupfen, und wir scheitern schon an ein> paar kb...
Moment mal, GB an Daten wäre so etwas wie Windows. Das hat noch niemand
komplett analysiert.
Stefan ⛄ F. schrieb:> Sicher, die machen das aber nicht für einen Roller
Naja für einen wäre es ja auch nciht, in Amerika gibts davon hunderte in
privater Hand, aber ich verstehe schon, was du sagen willst: Ohne Moos
nix los. Das dürfte das Problem sein.
> Ich weiß ja dass das alles andere als> einfach ist, aber wenn es unmöglich ist, wie schaffen dies dann?
Mit viel Geduld, Zeit und Erfahrung, wurde bereits mehrfach geschrieben.
Anfangen tut man mit Schaltplan, und der Doku der Bauteile,
innsbesondere dem Mikrocontroller. Wir der funktioniert ist haarklein
dokumentiert, das findest du alles auf der Webseite des Chiphersteller.
Ich schätze, du wirst dazu so Pi mal Daumen 50.000 Seiten lesen und
verstehen müssen (also viel mehr als der Umfang des Programmes).
Dann kannst du dich mit den Funktionen und den Eigenarten diverser
Compiler vertraut machen und dann erkennst du vielleicht schon das eine
oder andere Muster im Code (z.B eine Division). Das wäre ein Anfang.
Viel Spaß dabei.
> Ohne Moos nix los. Das dürfte das Problem sein.
Ich glaube ich habe dir schon einmal angeboten, das für dich zu machen,
wenn du meiner 4-Köpfigen Familie dafür Unterkunft, Verpflegung und Geld
für Unterhaltung bereit stellst. Das wird einige Jahre dauern,
vielleicht 5 oder 10. kannst ja mal ausrechnen, wie viel dich das kosten
würde.
Bastler schrieb:> Der HEX Rays Decompiler hilft da auch nix?
Doch der hilft ungemein aber erst dann wenn man einen Schaltplan hat und
etwas vom Programmieren versteht. Es gibt übrigens eine ganze Reihe
Plugins für Ida die besseren kannst du beim Hersteller runterladen. Du
brauchst dann allerdings eine gültige Lizenz.
Thomas
Solange du aber keine Ahnung vom Programmieren hast, kannst du mit egal
welchem Decompiler nichts anfangen.
Erstmal musst du am Code erkennen, welcher Compiler mit welchen
Einstellungen benutzt wurde. Eventuell lässt sich das automatisieren, da
kenne ich mich zu wenig mit den teuren Profi-Tools aus.
Als Nächstes musst du sowohl die Sprache des Compiler beherrschen, als
auch Assembler. Außerdem musst du die Funktionen aller Bauteile auf dem
Board weitgehend auswendig kennen.
Nur dann dann wirst du imstande sein, auch nur ansatzweise
nachzuvollziehen, was die einzelnen Befehle bedeuten. Damit bist du aber
noch nicht fertig, denn du musst den Sinn und Zweck der Befehle deuten.
Ich habe Dir oben den Code für eine Division gezeigt. Mal angenommen, du
erkennst so einen Block im Assembler Code, dann musst du immer noch
klären, welchem Zweck die Division dient. In welchem Zusammenhang wird
sie verwendet? Wo kommt der Input her, wo geht der Output hin?
Du kannst ja noch nicht einmal eine einzige Hochsprache Programmieren!
Das ist so, als ob du eine Mondrakete bauen und steuern willst, obwohl
du gerade mal ein Feuerzeug bedienen kannst. Da fehlen Dir einfach so
extrem viele Grundlagen, dass man erstmal dort anfangen muss.
Du musst lernen, diesen Mikrocontroller zu programmieren. Und zwar
solltest du eine ähnliche Anwendung wie die Steuerung des Rollers
programmieren (wenigstens für ein Modell), damit du dich auch mit den
dazu nötigen Algorithmen und Bauteilen vertraut machst.
Erst wenn du so etwas selber ganz alleine (ohne eine einzige Zeile
copy+paste!) hin bekommst, macht es Sinn, die Quelltexte anderer zu
analysieren. Und wenn du das kannst, danach macht es Sinn, den Assembler
Code in Quelltext zurück zu übersetzen.
Es gibt kein Tool, was dies in brauchbarer Form automatisiert. Und wenn
es eins gäbe, wärst du beim aktuellen Kenntnisstand nicht imstande,
diesen Quelltext zu verstehen.
Ok, Also versuch ich mich jetzt erst mal ins Programmieren rein zu
arbeiten, am besten mit einer Versuchshardware die den selben Chip drauf
hat, wie der Scootercontroller. Das dürfte sich machen lassen der
controller ist recht weit verbreitet. Wollte das Programmieren sowieso
schon seit Ewigkeiten lernen, da die Projekte langsam so komplex werden,
dass man ohne selbst programmieren eh nicht mehr weiterkommt, und
Mikrocontroller ja heute überall sind, gilt es ja fast schon als
grundwissen als Bastler sowas wenigstens in etwa zu können.
Warum alles disasemblieren wollen?
Ich würde, wie schon oben angesprochen, die UART angreifen.
Ihr Parser führt Dich zu den Configurations - Files.
Nen Umsetzer auf +-12 Volt dranne, und mit einem Terminalprogramm
die Baudrate und Parität ermitteln.
Dann mit AT - Befehlen nen Versuch starten.
Warum soll gerade hier ein propretäres Protokoll zur
Anwendung kommen?
mfg
~Mercedes~ schrieb:> Ich würde, wie schon oben angesprochen, die UART angreifen.> Ihr Parser führt Dich zu den Configurations - Files.>> Nen Umsetzer auf +-12 Volt dranne,>> Dann mit AT - Befehlen nen Versuch starten.
was macht dich denn so sicher, dass:
a) Die Schnittstelle als RS232 Schnittstelle mit +-12V Pegeln arbeitet?
(viele Geräte, die ich in den Fingern hatte, arbeiten mit TTL Pegel d.h.
(+5V/0V)
b) Die Schnittstelle weder verschlüsselt noch mit einem Passwort
geschützt ist?
c) Die Schnittstelle mit 'AT' Modem-Befehlen angesprochen werden kann
oder soll? Denkst du, der Roller wäre ein Modem oder sollte sich
irgendjemanden als Modem präsentieren?
Du könntest Dir von allen chinesischen Herstellern für Motorcontroller
mal die Konfigurationstools besorgen (werden in einschlägigen
E-Moppedforen rumgereicht) und mal probieren ob Du mit irgendeinem davon
einen Connect bekommst, evtl ist da die selbe Firmware drauf wie auf
irgendeinem generischen Kelly oder Lingbo oder dergleichen weils
vielleicht indirekt auch von einem dieser Hersteller kommt.
Bastler schrieb:> Also versuch ich mich jetzt erst mal ins Programmieren rein zu> arbeiten, am besten mit einer Versuchshardware die den selben Chip drauf> hat, wie der Scootercontroller.
Das ist ein sinnvoller Anfang
Wegstaben V. schrieb:> was macht dich denn so sicher, dass:>> a) Die Schnittstelle als RS232 Schnittstelle mit +-12V Pegeln arbeitet?> (viele Geräte, die ich in den Fingern hatte, arbeiten mit TTL Pegel d.h.> (+5V/0V)>> b) Die Schnittstelle weder verschlüsselt noch mit einem Passwort> geschützt ist?>> c) Die Schnittstelle mit 'AT' Modem-Befehlen angesprochen werden kann> oder soll? Denkst du, der Roller wäre ein Modem oder sollte sich> irgendjemanden als Modem präsentieren?
Leute, ihr denkt da viel zu komplex.
Ich hab zwar von Programmieren keine Ahnung, aber ich weiß mittlerweile
von Leuten die viel mit Lime zu tun haben, dass diese Dinger in keinster
Weise irgednwie geschützt sind. Lime hat kein Interesse die gegen
Diebstahl zu schützen (weil hier jeder sagt verschlüsselt, usw) da sie
keiner klaut. Erstens mal kann man die Scooter nicht zusammenklappen,
sie sind dazu noch riesengroß. Zweitens einmal lassen sie sich nicht
freischalten, ohne die APP, drittens einmasl wiegt einer 25kg, viertens
einmal haben sie keinerlei Konfigurationsmöglichkeit. Ich hab auch nur
Lime genervt, weil ich mal wissen wollte, was in dem Ding drin steckt,
wirklich als privaten E Scooter verwenden kann man den nicht da er dafür
einfach nicht ausgelegt ist, zu groß zu sperrig, und zu schwer ist. Lime
weiß das auch. Also hat man sich nicht darum gesorgt da irgendwas gegen
zerlegen usw. Zu schützen. Lime sagt
"Wenn die Dinger lange genug laufen, dass sie mehr einbringen als sie
kosten ist alles gut" Und demnach sind die auch recht billig gebaut.
Dazu kommt dass Lime wie schon geschrieben so gut wie keine Probleme mit
Diebstahl wohl aber gewaltige mit Vandalismus hat. Gegen Vandelen die
die Roller von der Brücke schmeißen hilft aber keine Verschlüsselung der
Welt. Also, da dürfte nix verschlüsselt sein, das ist stinkgewähnliches
8015 Geraffel aus China, leider will ich eben wissen, die dieses 0815
Geraffel funktioniert, was für mich schwirig ist, weil ich sogar zum
Programmieren zu blöd bin, zum Reversen erst recht. Der Motor controller
kommuniziert via UART Mit einem IOT Modul, das uart hat was um 3.30V
also standard. Da ist auch nichts verschlüsselt, das einzige was
einigermaßen gut verschlüsselt ist, ist der Bluetooth
Freischaltmechanismus, da wenn da einer den "Generalschlüssel" finden
würde, das gesamte Lime Geschäftsmodell hin wäre,
weil dann die Leute die Dinger um sonst entsperren können. Aber sonst
ist da nix gesichert, auch keine Lockbits, Verschlüsselung usw. Ich
denke sogar, dass die Technik so rudimentär doof ist, dass ich noch viel
zu kompliziert denke, was die Software angeht. Das dürfte irgendwas von
einem jung Asiaten in verstöpseltem C zusammengeklatschtes sein, was
halt irgendwie läuft. Ihr denkt da so als ob der Scooter eine
Straßenbahn wäre, die $1.000.000 kostet, und 60 Jahre lebt. Aber wie
gesagt, ist er nicht, das ist Chinatech von billigsten. Nun ist nur die
Frage wie dieses Chinatech funktioniert. Ich hätte ja nix dagegen, alles
das was man braucht um das zu reversen zu lernen, WENN DAS NUR NICHT SO
VERDAMMT LANGE DAUERN WÜRDE. Dazu kommt dass Reversen ja noch viel
komplexer ist, als Programmieren. Bis ich kapiert hab, wie dieses Ding
funktioniert, und alles gelernt hab was man zum Reversen braucht ist so
viel Zeit vergangen, dass ich den Scooter dann wegschmeißen kann weil
der Akku hin ist, und es gar keine Straßen mehr sondern nurnoch
fliegende Autos gibt. Sicher werd ich das jetzt anfangen zu lernen,
immerhin wird der Scooter nicht das letzte sein, was ich in der Hand hab
was mit Software zu tun hat, aber ich denke nicht, dass ich in
vertretbarer Zeit so viel gelernt hab, dass ich an dem Projekt Lime
Scooter noch was damit anfangen kann. Dazu kommt noch dass der Code
offenbar schon im Source Code der reinste Saustall war, Stichwort jung
Asiate, was das reversen dann nicht gerade einfacher macht.
Bastler schrieb:> Bis ich kapiert hab, wie dieses Ding> funktioniert, und alles gelernt hab was man zum Reversen braucht ist so> viel Zeit vergangen, dass ich den Scooter dann wegschmeißen kann weil> der Akku hin ist
Gut dass du dass nun endlich erfasst hast.
> Dazu kommt noch dass der Code offenbar> schon im Source Code der reinste Saustall war
Beurteile nicht Dinge voreilig, die du nicht gesehen hast. Abgesehen
davon bezweifle ich stark, dass du die nötige Kompetenz hast, die
Qualität von Quelltexten zu beurteilen. Soweit ich mitbekommen habe,
bist du kein Programmierer.
Bastler schrieb:> Ich habe den Scooter mit Genehmigung von Lime im Defektzustand von der> Straße aufgelesen, und repariert.Bastler schrieb:> er hatte einen Schaden an der Elektronik der mich> insgesamt 9 Stunden Zeit gekostet hat, ihn zu finden und zu beheben.
Welche Komponenten konntest du denn als defekt identifizieren und
reparieren? Funktioniert denn der Roller jetzt wieder einwandfrei wie
ein "normaler" Roller (also mit Nutzung der Anmeldung etc) ?
Bastler schrieb:> Der Motor controller> kommuniziert via UART Mit einem IOT Modul, das uart hat was um 3.30V> also standard.
vermutest du das, oder hast du diese Info aus "anderen Quellen" (z.B.
irgendwelchen Foren-Diskussionen) zusammen getragen?
Sind denn die im ersten Beitrag verlinkten Dropbox-Sachen deine
"Erkenntnisse"? [How to read out *.mp4, How to write *mp4]. Wenn es
nicht deine "Filmchen" sind: Konntest du das schon mal mit deinem
eigenen Equipment soweit nachvollziehen, was da erwähnt wird?
Hattest du den Teil der Hardware schon analysiert, den du da erwähnst
(UART, IOT, Bluetooth)? Könntest du ein paar Skizzen der Verschaltung
(Funktionsblöcke) zur Verfügung stellen?
Das inpiriert ja vielleicht manchen, dich in deinem Vorhaben stärker zu
unterstützen.
> Da ist auch nichts verschlüsselt, das einzige was> einigermaßen gut verschlüsselt ist, ist der Bluetooth> Freischaltmechanismus
Wie weit hast du dich denn schon in die BT-Kommunikation "eingehackt"?
Kannst du deine Protokoll-Mitschnitte zur Verfügung stellen? Konntest du
schon Teile der Kommunikation analysieren (Dazu braucht es ja keine
direkten Programmier-Kenntnisse)?
Hallo,
Ja, das sind meine Filmchen. Ich weiß nicht ob sich der Scooter noch
mittels Lime freischalten lässt, die APP meldet einen Fehler wenn man
das versucht. Kann aber auch sein, dass Lime den in ihren Servern als
kaputt markiert hat, und er deshalb nicht mehr zum Freischalten geht. Ob
der Scooter soweit wieder voll intakt ist, kann ich also nicht prüfen.
Es hat eine Diode im Inneren der oberen Box des Scooters zerschossen,
was zur Folge hatte, dass der Controller unten nicht mehr richtig mit
dem Modul oben kommunizierte. Ich weiß nicht was da genau passiert ist,
nachdeem ich die Diode ersetzt hab, funktionierte das Fahrzeug wieder,
und verhielt sich soweit ich es beurteilen kann normal. Der Scooter
fährt jetzt auch wieder, wie man ihn ohn freischalten der APP zum laufen
kriegt weiß ich mittlerweile auch, es gibt in der .hex eine Zeile die
bestimmt ob der Scooter gesperrt oder nicht gesperrt ist. Diese Zeile
schaltet den ganzen Roller frei.
Ja die Videos und alles andere in dem Link stammt von mir. Ich hab den
Speicher ausgelesen, alle Pinbelegungen reverse engineert durch
durchmessen, usw, usf. Wie geschrieben, ich kann zwar keine Software
reversen, aber ganz blöd bin ich nicht, und was für solche Sachen
natürlich förderlich ist: Ich bin ausgesprochen neugierig.
Wenn ich mal einen gescheiten Logic Analyzer hab, werde ich das mal
ansehen, so lange ist es aber schwirig, die UART Kommunikation zu
beobachten.
Die Bluetooth Kommunikation habe ich mal verscuht zu beobachten, mit
einem low cost Sniffer, was aber fehl schlug, wahrscheinlich deshalb
weil sich die APP anscheinend gar nicht mehr mit dem Scooter verbindet,
sondern schon vorher eine Fehlermeldung anzeigt dass das entsprechende
Fahrzeug nicht verfügbar sei. Anscheinend haben die den Scooter schon
irgednwie aus ihrem Inventar gelöscht.
Ich hätte auch kein Problem damit jedes einzelne Bauteil von dem
Controller zu löten, um dann das ganze Layout zu reversen, wüsste sogar
schon wie ich das anstellen würde: Alls ablöten, dann Platine aufn
Scanner, zwei Bilder scannen von beiden Seiten, und dann in EGALE
einfach die Leiterbahenen nachzeichnen. Das Problem ist nur eben, dass
ich nur einen Controller habe, und wenn ich den kaputtmache, habe ich
ein Problem. Dann hab ich zwar den Schaltplan, und so gut wie alle
dokumente die Lime über das Teil auch hat, bis auf den Quellcode, aber
keinen Controller mehr, dann fährt die Kiste gar nicht mehr.
Die UART Spannung habe ich ausgemessen, müsste stimmen, ist eine
typische Spannung von 3.30V, mit der auch der Prozessor des Rollers
versorgt wird. Ich kann ja mal auflisten, was da alles an Käfern auf der
Controllerplatine sitzt.
Bastler schrieb:> Alls ablöten, dann Platine aufn> Scanner, zwei Bilder scannen von beiden Seiten, und dann in EGALE> einfach die Leiterbahenen nachzeichnen.
Du weisst schon, dass Platinen oft mehr Lagen als nur oben und unten
haben?
> Das Problem ist nur eben, dass ich nur einen Controller habe, und wenn ich> den kaputtmache ...fährt die Kiste gar nicht mehr.
Willst du dieses Risiko wegen 5 km/H eingehen?
Bastler schrieb:> ich will wissen wie die Software innendrin funktioniert
Es wurde ja schon mehrmals erwähnt: Aus Assembler-Code wieder halbwegs
verständlichen Hochsprachen-Code zu erzeugen (auf elementarer Ebene z.B.
von Grundrechenarten) ist EINE Sache.
Daraus dann einen komplexen Algorithmus herzuleiten, ist dann schon
wieder eine nächste komplexe Phase. Das kann kein "Automatismus", das
musst du schon selber als Mensch machen.
Beispiel: Eine Fourier-Transformation, eine trigonometrische Berechnung
(z.B. Sinus) oder ein PID-Regler lässt sich in Form von "elementaren
Grundrechenarten" in einer Programmier-Hochsprache deiner Wahl
beschreiben.
Wenn du jedoch nicht "weisst" was z.B. ein PID-Regler ist, dann wirst du
aus einem Haufen von Additionen und Subtraktionen niemals raus orakeln
können, das diese Codesequenz einen PID-Regler darstellt. Und ich gehe
mal stark davon aus, DASS für verschiedene Zwecke in deinem Roller PID
Regler zum Einsatz kommen (zumindest für die Geschwindigkeit)
Gewisse Funktionsblöcke wirst du jedoch auch Ohne exakte Verschaltung
deiner Komponenten "orakeln" können: Da gibt es einen Gasgriff als
Sollwertgeber, es wird einen Rad-Sensor zur derzeitigen Drehzahl geben
(Istwertgeber). Es gibt irgendeine Ansteuerung des Motors z.B. in Form
eines Transistors, vielleicht gibt es auch einen Messwert-Aufnehmer, um
die derzeitige Motordrehzahl zu ermitteln. Der Motor wird in
Abhängigkeit der gewünschten Geschwindigkeit angesteuert werden, z.B.
mittels PWM.
Und all diese Informationen werden "umeinander gerührt", und bewirken
eine Geschwindigkeitsänderung beim betätigen des GAspedals.
Wenn du nun alle Sensoren und Aktoren identifiziert hast, dann kannst du
Spekulationen anstellen darüber, wie diese miteinander interagieren
könnten, und könntest dann versuchen, in dem Code die Stelle zu finden,
WO die Dinge miteinander interagieren. Vielleicht funktionieren sie so,
wie du das spekulierst, oder vielleicht ganz anders, weil z.B. der
Batterie-Ladestand noch in die Beschleunigungsphase mit eingeht (Wenig
Batteriekapazität -> weniger starke Beschleunigung, um Batterie zu
schonen)
Wegstaben V. schrieb:> DASS für verschiedene Zwecke in deinem Roller PID> Regler zum Einsatz kommen (zumindest für die Geschwindigkeit)
Einige chinesische Fahrzeuge mit Geschwindigkeitsbegrenzung (z.B. auf
45km/h gedrosselte E-Roller die ungedrosselt 70 fahren) haben für die
Geschwindigkeitsbegrenzung nur einen P-Regler, da merkt man dann auch
wie die Geschwindigkeit langsam nachlässt wenn der Akku leer wird oder
wenns bergauf geht.
Bastler schrieb:> wie man ihn ohn freischalten der APP zum laufen> kriegt weiß ich mittlerweile auch, es gibt in der .hex eine Zeile die> bestimmt ob der Scooter gesperrt oder nicht gesperrt ist. Diese Zeile> schaltet den ganzen Roller frei.
Raffiniert! WIe hast du das heraus bekommen?
Bastler schrieb:> Bis ich kapiert hab, wie dieses Ding> funktioniert, und alles gelernt hab was man zum Reversen braucht ist so> viel Zeit vergangen, dass ich den Scooter dann wegschmeißen kann weil> der Akku hin ist, und es gar keine Straßen mehr sondern nurnoch> fliegende Autos gibt.Bastler schrieb:> Ob> der Scooter soweit wieder voll intakt ist, kann ich also nicht prüfen.Bastler schrieb:> wie man ihn ohn freischalten der APP zum laufen> kriegt weiß ich mittlerweile auch, es gibt in der .hex eine Zeile die> bestimmt ob der Scooter gesperrt oder nicht gesperrt ist. Diese Zeile> schaltet den ganzen Roller frei.
Ja - klar :-) - troll Dich.
Der Motor hat keinerlei Geschwindigkeitssensor. Es ist ein dreiphasen
BLDC, der also schneller läuft, wenn das Drehfeld schneller wird. Also
wid dem Controller einfach gesagt worden sein "Drehfeld mit nicht mehr
als ...hz" damit läft der dann nicht mehr als z.B. 25. Er hat auch keine
Hallsensoren, sondern findet seine Rotorposition über die rück EMK,
weshalb der Scooter nicht aus dem Stand anfahren kann, sondern immer
erst mit dem Fuß angeschubst werden muss. Ich dachte anfangs dass es
Hallsensoren geben würde, da der Motor insgesamt 6 Anschlüsse hat, aber
es hat sich herausgestellt, dass die drei anderen neben den 3 Phasen
keine Anschlüsse für Hallsensoren sind, sondern ein Temperaturfühler,
der wohl dafür sorgt, dass der Motor nicht überhitzt.
Wenn einer hier glaubt, dass ich das mit der Zeile mit Disassembler und
co rausgefunden habe, liegt ihr falsch. Ich habe einfach nur in einem
amerikanischen Forum gefragt, ob es nicht einen geben würde, der mal den
Speicher des Motorcontrollers eines entsperrten Scooters auslesen
könnte. Ich hatte nun also die Software in entsperrtem und gesperrtem
Zustand vorliegen, und musste nur vergleichen, was an den beiden Dateien
anders ist. Wie gesagt, da ist nix geschützt, auch keine Checksumme bis
auf die der .hex Datei. Sicherlich ist die Methode zwei Dateien zu
vergleichen nicht die eleganteste, aber sie hat funktioniert.
Die Platine hat keine Innenlayer, natürlich weiß ich dass Platinen heute
bis zu 20 Innenlayer haben können, aber wie schon geschrieben, das ist
0815 Billigtech, sowas wäre dafür viel zu teuer.
Eben das ist das Problem. Ich weiß dass man nie wieder Source Code draus
kriegt, aber vielleicht kann man dann verstehen, was das Programm wann
warum macht.
Bastler schrieb:> ch habe einfach nur in einem> amerikanischen Forum gefragt, ob es nicht einen geben würde, der mal den> Speicher des Motorcontrollers eines entsperrten Scooters auslesen> könnte.
Wenn die "Forscher" im amerikanischen Forum bezüglich dieses Rolelrs so
rege sind, dann könntet sie doch vielleicht eher weiter helfen in
Code-Reverse Engineering
Bastler schrieb:> aber sie hat funktioniert.
Warum verpi..t Du Dich nicht einfach? Negativ denkende Menschen könnten
vermuten, dass der e-Scooter ggf. nicht freiwillig in Deinen Besitz
übergegangen ist.
Kannst Du die Genehmigungs-eMail von Lime mal hier publizieren
(natürlich ohne Deine persönlichen Daten)?
Wegstaben V. schrieb:> Wenn die "Forscher" im amerikanischen Forum bezüglich dieses Rolelrs so> rege sind, dann könntet sie doch vielleicht eher weiter helfen in> Code-Reverse Engineering
Das versuche ich gerade schon, aber da kennt sich wohl auch keiner aus.
Wird wohl so sein wie ich befürchtet habe, wird nix werden, oder erst
wenn sich jemand findet, der sich dafür genauso interessiert, wie ich.
Wobei ichs ja auch verstehen kann, immerhin will so gut wie keiner einen
E Scooter reversen, wenn es mit dem dafür nötigen Wissen viel
interessantere Dinge gibt, die man tun kann, wenn man es hat.
Bastler schrieb:> Nicht wegen 5 kmh ich will wissen wie die Software innendrin> funktioniert
Das wirst du nicht erfahren, indem du den Maschinencode analysiert. Dein
anderer Ansatz, einen Motorcontroller zu kaufen und zu programmieren
geht da schon eher in die richtige Richtung.
Für die ersten Schritte kann ich Dir den "Nibobee" Roboter empfehlen.
Dazu hatte ich mal was geschrieben:
http://stefanfrings.de/nibobee/index.html
Hugo H. schrieb:> Warum verpi..t Du Dich nicht einfach? Negativ denkende Menschen könnten> vermuten, dass der e-Scooter ggf. nicht freiwillig in Deinen Besitz> übergegangen ist.>> Kannst Du die Genehmigungs-eMail von Lime mal hier publizieren> (natürlich ohne Deine persönlichen Daten)?
Hugo, warum liest du hier noch mit, wenn dich das Thema nicht
interessiert? Ist doch nicht das einzige, was es auf Mikrocontroller.net
zu lesen gibt.
Ja, ich habe eine schriftliche Genehmigung von Lime, aber die werde ich
hier sicher nicht hochladen, damit sie hundert andere dann runterladen,
um dann auch eine zu haben...
Die Dinger zu klauen ist übrigens eine blöde Idee, Stichwort GPS.
Bastler schrieb:> Ja, ich habe eine schriftliche Genehmigung von Lime, aber die werde ich> hier sicher nicht hochladen, damit sie hundert andere dann runterladen,> um dann auch eine zu haben...
Wie sollen denn hundert andere eine an Dich gerichtete eMail für sich
beanspruchen? Es gibt keine und Du bist ein Troll - oder schlimmeres.
Bastler schrieb:> Die Dinger zu klauen ist übrigens eine blöde Idee, Stichwort GPS.
So etwas in diesem Forum zu posten ist "eine blöde Idee" :-)
Und wenn einer die Mail dann runterlädt und mit Photoshop seinen Namen
reinsetzt, ist die Mail danach an ihn gerichtet. Da gibts einen
Screenhshot von der Mail, das ist schon ein halbes Jahr her, das war im
letzten Sommer. Und wie geschrieben, die Scooter haben GPS sind ortbar
und senden ihren Standort ständig via SIM an Lime, keine gute Idee sowas
einfach mitzunehmen...
Dazu kommt, dass ich mit dem Scooter gar nicht viel anfangen kann, der
ist wie gesagt nicht wirklich für den Privatgebracuh geeignet. Das war
damals von Lime absolut Sondergenehmigung, ich wollte mal reinschauen
was in so einem Scooter drin ist, das hat man möglich gemacht, alles
gut. Dass ich natürlich an dem Zerlegen der Software scheitere, und wie
ich da rausfinde wie die funktioniert ist jetzt mein Problem...
Bastler schrieb:> Und wenn einer die Mail dann runterlädt und mit Photoshop seinen Namen> reinsetzt
Du bist ja ganz schön paranoid. Erfahrungsgemäß sind es Diebe, die Angst
davor haben, beklaut zu werden. Und Lügner haben am meisten Angst,
belogen zu werden.
Bastler schrieb:> Und wenn einer die Mail dann runterlädt und mit Photoshop seinen Namen> reinsetzt, ist die Mail danach an ihn gerichtet.
Lime wird da sicher zustimmen lol - Du bist nicht nur Troll, Du bist
auch noch nur mäßig intelligent :-)
Bastler schrieb:> die Scooter haben GPS sind ortbar
Fahr mal Dein Auto (so Du eines hast) in Deine Garage (so Du eine hast)
und schau, was Dein GPS (so Dein Auto eines hat) so von sich gibt. Hälst
Du im Ernst alle hier für Volldeppen?
Lime wird es sicher nicht gefallen wenn sie dann beweisen müssen dass
diese Email niemals an ihn gesendet worde ist, und ich hab dann mit
denen noch Ärger ala "Das war absolute Ausnahme, warum haben sie das im
Internet verbreitet" wenn du meinst dass es so leicht geht, einen dieser
Scooter zu klauen, versuchs doch, bin gespannt, was Lime tut...
Bastler schrieb:> Das versuche ich gerade schon, aber da kennt sich wohl auch keiner aus.> Wird wohl so sein wie ich befürchtet habe, wird nix werden, oder erst> wenn sich jemand findet, der sich dafür genauso interessiert, wie ich.
NAja, du hast ja schon eine ganze Menge ermittelt, vielleicht fidnen ja
die amerikanischen/englischsprachigen Mitstreiter noch was raus.
Sind den die Teile in Amerika (wo, wie) auch im Einsatz? Und wo noch?
Mögliche andere Ansätze:
Gibt es zum Roller (zu diesen oder ähnlichen) gegebenenfalls Patente,
oder Designempfehlungen/Codesamples der verbauten Controller etc?
Gibt es für den deutschen/europäischen Markt gegebenenfalls Prüf- und
Abnahme-Prozeduren, welche dokumentiert und "ablesbar" sind?
Ich frag jetzt erst mal nochmal bei Lime an, vielleicht gibt es eine
Möglichkeit, an den Code von dem Controller zu kommen, ich hab immerhin
schon gemerkt, dass Lime sich bedeutend weniger blöd verhält als die
meisten deutschen Firmen, was Anfragen angeht...
In Amerika gibt es tausende dieser Scooter in privater Hand, erst jetzt
hat Lime dort das Geschäft in einer Stadt aufgegeben, und die Scooter
einfach stehen lassen. Die haben sich jetzt dort die Leute gekrallt.
Auch gibt es dort viele der Scooter die beschlagnahmt wurden, die Lime
nicht mehr ausgelöst hat, und so in einer Polizeiauktion verscherbelt
wurden. wird sich schon irgendein Weg finden lassen, irgendwer wird
schon irgendwann ein Interesse dran haben, sich die Software anzusehen,
mit den passenden Kenntnissen, Amerika ist groß...
Bastler schrieb:> Ich frag jetzt erst mal nochmal bei Lime an, vielleicht gibt es eine> Möglichkeit, an den Code von dem Controller zu kommen
In einem früheren Thread schriebst du, dass Lime dies bereits ablehnte.
Ich hab ja geschrieben, ich frag nochmal an. Was denkst du wie oft ich
die anschreiben mussten, bis ich die Mitnahmeerlaubnis hatte? Ich glaub
zehn Mal reicht nicht. Ich glaub zwar auch nicht, dass sies machen, weil
Source Code ist schon was wo eigentlich keiner her gibt, aber wie schon
mal geschrieben, keiner mit dem Wissen will sich vor einen E Scooter
hinhocken, da gibts dann für die entsprechenden Leute interessantere
Sachen zu tun.
Wenn die Software wie du sagst nicht sonderlich sicher ist, dann möchte
Lime vielleicht die Quelltexte lieber geheim halten.
Deine Aktivitäten in diesem und anderen Foren könnte sie zusätzlich
verunsichern. Nicht jede Firma setzt auf Open-Source.
Stefan ⛄ F. schrieb:> Deine Aktivitäten in diesem und anderen Foren könnte sie zusätzlich> verunsichern.
Mit Sicherheit, weil die Konsequenz nämlich wäre, daß man am Ende eine
Firmware hätte, um Lime-Roller ohne Lime-App zu betreiben. Jede Wette,
daß Leute das auch ohne Mitnahmeerlaubnis täten. Die
Lime-Rechtsabteilung wäre gut beraten, dem reverse engineering so früh
und energisch wie rechtlich möglich entgegenzutreten.
Bastler schrieb:> Sicherlich ist die Methode zwei Dateien zu> vergleichen nicht die eleganteste, aber sie hat funktioniert.
Das ist eine naheliegende und auch angemessene Methode in dieser
Situation, jedes bisschen Information das man gewinnen kann hilft, jeder
andere hätte das ebenfalls so gemacht.
Wegstaben v. meinte:
> was macht dich denn so sicher, dass:> a) Die Schnittstelle als RS232 Schnittstelle mit +-12V Pegeln arbeitet?> (viele Geräte, die ich in den Fingern hatte, arbeiten mit TTL Pegel d.h.> (+5V/0V)
ich bin auch von ner 5 Volt Schnittstelle ausgegange, deshalb sag ich
ja:
einen +- 12 V Umsetzer dran (machen)!
> b) Die Schnittstelle weder verschlüsselt noch mit einem Passwort> geschützt ist?
Die Schnittstelle muß sich ja erst einmal irgendwie melden,
das kann man zur Identifikation von Baudrate und Parität ausnutzen.
> c) Die Schnittstelle mit 'AT' Modem-Befehlen angesprochen werden kann> oder soll? Denkst du, der Roller wäre ein Modem oder sollte sich> irgendjemanden als Modem präsentieren?
Wenn frau nun schon soweit ist, warum nicht mal AT eingeben?
Vielleicht antwortet die Schnittstelle dann mit OK oder gibt ne
Fehlermeldung aus, die einem weiterhilft? ;-P ;--))
mfg
Warum REVERSE ?
Mache auf Vorwaerts !
Schmeisse alles raus und kaufe einen passenden Motordriver
passe ''Gas'' an und schon fährst Du.
Suche auf dem Flohmarkt eine komplette Kiste '' der kleine Elektriker ''
und schalte damit LEDs ein und aus.
Ist das nicht , was DU brauchst.
Einfach ganz einfach , Deinem Niveau entsprechend
;-)
Bastler schrieb:> Wenn ich mal einen gescheiten Logic Analyzer hab, werde ich das mal> ansehen, so lange ist es aber schwirig, die UART Kommunikation zu> beobachten.
Zum mindestens zehnten mal: ein 2€ UART - USB Converter reicht!
dann kommt alles was auf der UART gesendet wird auf deinen PC. Du
brauchst keinen Logic Analyser (höchstens wenn die Baud Rate sehr
speziell ist).
Ich für meinen Teil habe dein Vorhaben seit dem ersten Post sehr
interessant gefunden und hätte dir auch soweit ich kann geholfen.
Da du aber immer wieder nur dein Scheiß Disassembler haben willst bin
ich raus. Da kann man nicht mehr helfen.
Solltest Du kein ''Gas''Poti finden, dann kannst Du aus
der Musikszene ein WahWah - Pedal holen, da sind Potis drin.
So kannst Du wie im Auto mit dem Fuss Gas geben ... bis 100 km/h
(einmal mindestens)
Könntest Du sogar rechtzeitig patentieren lassen:
WowBoahwawa_Accelerator !
Da wuerden die SchLimer nur staunen...
Nein ist es nicht, das wäre am Ziel vorbei, ich wollte ja wissen, was
der ORIGINAL Controller tut und denkt, aber wie Stefanus weiter oben
schon geschrieben hat war es vielleicht eine blöde Idee, in einem Forum
zu fragen, wenn Lime das ließt, helfen die mir bestimmt nicht mehr,
immerhin werden die nicht so arg glücklich drüber sein, dass ich alles
was ich jetzt über diese Scooter weiß in die Welt raus posaunt habe,
dazu wos jetzt auch noch in Google auftaucht.
Ich hatte das schonmal bei einer deutschen Firma vor ein Paar Jahren, da
hieß es danach dann warum ich überall raus posaunt habe, dass sie mir
Teile überlassen haben, gab damals ganz schön Ärger, weil wohl danach
noch ein "Paar" andere Leute da außer mir angefragt haben, hab aber auch
nicht gewusst, dass Mikrocontroller.net das Thema in der Google
listet...
Keller schrieb:> Als nächstes Projekt solltest Du Dir heimlich einen Tesla besorgen....> Den wird es sicher länger geben als LIME ! Ran an die Software !
Wieso heimlich, er nervt dann solange Tesla mit Emails bis er einen vor
die Haustür gestellt bekommt ;-)
Die ganze Zeit hätte man auch in das Engineering neuer Software stecken
können, so kompliziert ist die Ansteuerung eines BLDC mit dem F103
nicht. Die Rollermotoren gibts beim Chinesen für 30-40€, damit kann man
erstmal üben. Und wenn Lime & Co. soviele abschreiben wird sich eher
eine Entwicklergemeinschaft dafür gründen lassen, besser als die ganze
Energie mit reverse eng. der Software zu verplempern.
Es wird sowieso irgendwann eine Software von einer Gemeinschaft Open
Source geben, immerhin gibt es in Amerika bestimmt wenn man alle
zusammen nimmt über tausend private exemplare dieser
Schlaglochsuchgeräte, die haben aber auch größere Autos, da ist es
einfacher, den Scooter als privatversion dann z.B. in den Urlaub
mitzunehmen, als bei uns, wo die autos so klein sind, dass du ihn kaum
einladen kannst.
Bastler schrieb:> WENN DAS NUR NICHT SO> VERDAMMT LANGE DAUERN WÜRDE.
Also, ich bin fast durch :-) Eigene Software mit LCD, SRAM, Touchwheel
und ADC läuft jedenfalls schon auf dem Messgerät, was ich oben erwähnte.
Fehlt noch der Frontend Mulitplexer und Software für die beiden USB
Buchsen und den SD-Kartenslot. Da das hier der 176-Pin STM32F429 ist,
denke ich das, wenn man Ahnung hat, der Controller deines Lime innerhalb
längstens einer Woche abgefrühstückt wäre.
Johannes S. schrieb:> so kompliziert ist die Ansteuerung eines BLDC mit dem F103> nicht
Für den STM32F100 des VL Discovery habe ich sowas sogar schon fertig -
mit Sinusansteuerung.
Matthias S. schrieb:> Für den STM32F100 des VL Discovery habe ich sowas sogar schon fertig -> mit Sinusansteuerung.
Kann man den Code irgendwo betrachten und studieren?
Matthias S. schrieb:>> WENN DAS NUR NICHT SO>> VERDAMMT LANGE DAUERN WÜRDE.>> Also, ich bin fast durch :-) Eigene Software mit LCD, SRAM, Touchwheel> und ADC läuft jedenfalls schon auf dem Messgerät, was ich oben erwähnte.> Fehlt noch der Frontend Mulitplexer und Software für die beiden USB> Buchsen und den SD-Kartenslot. Da das hier der 176-Pin STM32F429 ist,> denke ich das, wenn man Ahnung hat, der Controller deines Lime innerhalb> längstens einer Woche abgefrühstückt wäre.
Was meinst du damit jetzt genau? Das Reversen der schon vorhandenen
Software oder das Entwicklen einer neuen? Ich denke nicht mal dass das
Reversen soo lange dauern würde, 16kb Code dürften doch kein so arg
großes Problem sein? Wenn man weiß was man tut... Sicherlich gibt es
vielleicht ein Paar dinge, die sich nicht wiederherstellen lassen, aber
so grob zu sehen was die Software tut, was abegrufen wird, und
vielleicht wo die Parameter abgelegt sind (Motorstrom, Spannung zu
Batterie % Anzeige, Geschwindigkeit) sowas müsste man doch finden
können?
Bastler schrieb:> 16kb Code dürften doch kein so arg großes Problem sein?
Fängst du schon wieder damit an?
Du hast in mehreren Monaten aus dem Code deines Rollers keine einzige
Programmzeile heraus gelesen. Wie kannst du dann immer wieder behaupten,
dass das einfach bzw kein Problem sei?
Du hast doch vor wenigen Tagen bekundet, die Problematik zu akzeptieren,
und dann kommt so ein Kommentar! Ehrlich Mann, dich kann ich nicht mehr
ernst nehmen. Ich bereue, einen Teil meiner Freizeit für doch
verschwendet zu haben. Dein Verhalten ist respektlos und undankbar.
Bastler schrieb:> Ich denke nicht mal dass das> Reversen soo lange dauern würde, 16kb Code dürften doch kein so arg> großes Problem sein?
Naja, dann fang halt mal an damit anstatt immer nur drüber zu reden.
Bernd K. schrieb:>> Für den STM32F100 des VL Discovery habe ich sowas sogar schon fertig ->> mit Sinusansteuerung.>> Kann man den Code irgendwo betrachten und studieren?
Leider noch nicht. Mal schauen, was damit noch passiert, aber im Moment
gehts noch nicht - obwohl es eigentlich kein grosses Geheimnis ist. Die
Basis bildet wieder mal AVR447, portiert auf den STM32 mit CMSIS und
SPL.
Du könntest auch mit einem ST-Link damit rumspielen.
Habe selber einen defekten ergattert und dank dem ST Link habe ich den
Controller z.B entsperren können und fährt ohne Probleme.
Habe neulich einen Thread auf einem anderne Forum verfolgt in dem Jemand
mit etwas mehr Ahnung probiert hat so einen Roller den er von der Straße
geklaut hat mit "alternativfirmare" zu betreiben. Am Ende hat er einfach
einen kompletten Motorcontroller für ein paar € aus China eingebaut.
Nach den Infos die dort zu Tage kamen, bezweifle mal stark, dass der
Threadersteller überhaupt einen Dump des Programs des MC hat. Das
verlinkte Dropbox Zeug war (als es noch existierte) ein Speicher (RAM)
Abzug des laufenden Controllers und kein Flashinhalt. Somit ziemlich
wertlos fürs reverse Engineering.
Die Controller sind nach nach anderen Berichten "read locked" and JTAG
u.s.w. ist deaktiviert. Ich bezweifle, dass der Threadersteller das
nötige Knowhow noch Equipment hat den MC zu glitchen o.Ä. um das "read
protected" Flag zu umgehen.
Zudem hat Lime scheinbar in den neueren Versionen die UART-Kommunikation
zwischen Motorcontroller und Einheit im Lenker die z.B. das Handgas
ausliest rudimentär verschlüsselt / es findet ein Handshake zwischen
Motorcontroller und der anderen Einheit statt welche die GPS und
Mobilfunkkomunikation macht.
Leute haben halt die Kommunikation zwischen Motorcontroller und dem
Board für das Handgas, Mobilfunk, NFC u.s.w. abgegriffen und Boards
gebastelt die das selbe an das Motorcontrollerboard schicken und damit
ein betreiben ohne das GPS Modul erlauben. Das fand Lime natürlich nicht
so witzig, deswegen das Software Update scheinbar.
Neuere Generationen der Roller scheinen das von Haus aus zu haben, sowie
ein anderes Motorcontrollerboard, somit ist ein Downgrade nicht mehr
möglich, da es diese Boards nie mit einer Firmware ohne Handshake /
Verschlüsselung gab. Sie scheinen die Controller jetzt auch einzugießen
und das "write protected" bit zu setzen, damit ist es auch schwieriger
überhaupt an die Pins zu kommen um eine neue Firmware draufzuladen,
einfachste Lösung wäre da wohl den STM zu ersetzen, wenn man das Board
unbedingt weiter verwenden möchte.
In der nächsten Generation scheinen Sie wechselbare Akkus einzubauen,
damit nicht immer die ganzen Roller rumtransportiert werden müssen um
diese zu laden. Bin mal gespannt wie viele von den Akkus geklaut
werden...
Ich frag mich eh wie das Businessmodell von solchen Rolleranbietern
überhaupt funktioniert. Spielt so ein 200-300€ Roller in seiner
Lebenszeit tatsächlich so 500€+ ein? Das kann sich doch irgendwie gar
nicht rechnen wenn man den ganzen Aufwand + Vandale + Diebstähle mit
einrechnet.
the controller does have inner layer (lsw6g lime2.0 181117rc), but maybe
only for ground plane, but sure at least a ground plane is in an inner
layer, i know because i saw a via unconnected but being 0 ohm to ground,
so inside the pcb is a ground plane, also you can see that when you hold
the pcb to a bright light.