Hallo Gemeinde.
Ich habe hier ein Handheld das einen Akku mit einer Art Handshake zu
haben scheint. Ich habe folgendes über den Akku bereits herausgefunden:
Er kommuniziert über UART mit dem Gerät, 9600 Baud.
Er hat einen 10kOhm Widerstand an einer "Weckleitung" der beim Einsetzen
des Akkus diesen aufweckt. Dann braucht es aber ein UART Signal zum Akku
oder so etwas wie ein keep alive signal, sonst schaltet sich der Akku
wider ab, sobald man mehr als etwa 50ma strom draus ziehen will.
Ich will herausfinden wie das Protokoll funktioniert, um den Akku auch
woanders nutzen zu können, und um dem Gerät einen anderen Akku als
Originalakku vorgaukeln zu können.
Ich hoffe jetzt mal dass der Handshake recht einfach ist, und es sich
BITTE BITTE NICHT um sowas wie challenge Response oa. handelt, ich bin
mir bewusst, dass man dann faktisch keine Chance hat.
Jetzt die Frage: Wie am besten vorgehen? Es sind gute Kenntnisse in
Sachen Löten, oa vorhanden, Analyse solcher gesnifften Daten habe ich
leider noch nie gemacht.
Bislang habe ich zwei UART Adapter benutzt, um die Kommunikation zu
beobachten, ich denke aber ein guter logic analyzer wäre hier defeinitv
die bessere Wahl, habe ich aber leider nicht, müsste ich dann leihen,
oder kaufen.
Ich hoffe es kann mir einer hier helfen, wie am besten bei der Analyse
vorzuegehen ist, wie gesagt, ist das erste mal dass ich sowas versuche.
Gruß
Espressif schrieb:> ich denke aber ein guter logic analyzer wäre hier defeinitv> die bessere Wahl,
Nach meiner Erfahrung reicht so'n 8ch-Ding - Saleae oder Nachbau.
(Stichwort: USB Logic Analyzer 24 MHz 8CH)
Espressif schrieb:> Ich will herausfinden wie das Protokoll funktioniert, um den Akku auch> woanders nutzen zu können, und um dem Gerät einen anderen Akku als> Originalakku vorgaukeln zu können.
Für bestimmte Akkus wurde dies bereits gemacht, z.B. für die DJI Phantom
3 Drohnen Akkus (siehe die issues unter
https://github.com/o-gs/dji-firmware-tools/issues, zum Teil gehen die
Diskussionen über mehrere Jahre).
Je nachdem wie gut die Kommunikation geschützt ist, wird das sehr
aufwändig bis unmöglich. Wenn man nur die Messages aufzeichnen muss und
dem Gerät dann aufgezeichnete Messages zurückschicken kann, würde das
erstmal funktionieren. Manche Geräte überprüfen aber eine Signatur des
Akkus, dann wird eine echte Herausforderung.
Das ist aber ein ziemliches Sicherheitsrisiko, da in diesen Messages ja
auch der Ladezustand und die Temperatur übermittelt werden. Wenn dem
Gerät immer gesagt wird "alles im grünen Bereich" kann das gefährlich
werden, wenn z.B. dann plötzlich der Akkus leer ist obwohl in den
Messages gesagt wurde, dass der Ladezustand noch 70% ist. Bei Drohen ist
das gefährlich, bei einem Akkuschrauber eher weniger.
Hoffentlich ist im Akkus noch ein BMS verbaut, welches die Tiefentladung
und Überhitzung verhindert.
Das ist ein interessantes Hobby-Thema, aber nur wenn einen die Technik
interessiert und man viel Zeit hat, nicht um Geld zu sparen. Die Zeit
und Tools die du dafür benötigst kosten ein vielfaches des Akkus, selbst
wenn du nur einen Stundensatz von 2,- Euro ansetzt.
> Bislang habe ich zwei UART Adapter benutzt, um die Kommunikation
> zu beobachten, ich denke aber ein guter logic analyzer wäre hier
> defeinitv die bessere Wahl,
Alles was funktioniert ist gut. Bei zwei getrennten Adaptern musst du
nur die Aufzeichnungen über Zeitstempel in die richtige Reihenfolge
bringen.
Im Forum findest du viele Hinweise zu Logic Analyzern, z.B. auch
https://www.mikrocontroller.net/articles/Logic_Analyzer
Es gibt viele sogenannte Saleae clones die mit der OpenSource Software
Sigrok/Pulseview funktionieren. Meistens nur für 3,3V und 5V geeignet.
Mit Gehäuse, 8 Inputs mit 24 MHz Samplefrequenz:
https://www.aliexpress.com/item/1005004166845365.html
ohne Gehäuse, umschaltbar 8 Inputs mit 24 MHz oder 16 Inputs mit 12 MHz:
https://www.aliexpress.com/item/1005003643543711.html
Michael
Michael D. schrieb:> Hoffentlich ist im Akkus noch ein BMS verbaut, welches die Tiefentladung> und Überhitzung verhindert.
Ist devinitv eines drin, sonst könnte sich der Akku ja nicht selbst
abschalten bei falsche / mangelnder Kommunikation.
Ich werde mir jetzt mal so einen günstigen Analyzer besorgen, der sollte
ja für 9600 Baud noch ausreichend sein. Dann kann man auch vernünftig
beobachten was da gesendet wird, ist nix schlimmer als unzuverlässiges
Werkzeug / unsichere Methoden, da fliegt man dann über die Fehler in der
eigenen Ausrüstung
Espressif schrieb:> Bislang habe ich zwei UART Adapter benutzt, um die Kommunikation zu> beobachten, ich denke aber ein guter logic analyzer wäre hier defeinitv> die bessere Wahl
Wenn du schon weisst, dass es standardgemässe 9600bd sind und du sie
mitschneiden kannst, brauchst du nichts weiter, es gibt damit keinen
weiteren Erkenntnisgewinn.
Ich hatte halt die Hoffnung, dass man mit einem Logic analyzer das
ganze noch etwas sauberer mitschneiden kann, und vor allem zeitlich
sauber
synchronisiert
Zum Knacken des JVC Data Battery Protokolls haben ich damals HTerm
benutzt. Die Jungs hatten UART mit 1200Baud auf einer Leitung
bidirektional. Das komplizierteste war allerdings, das Polynom für die
CRC rauszufinden.
Hab das jetzt mal unter anderem mit Docklight (Demoversion) beobachtet.
Jedes mal wenn man die Batterie einsetzt sind bestimmte Bytes der
Kommunikation anders. Ich befürchte fast, das ist sowas wie challenge
response. Man kann auf jeden Fall nicht einfach der Batterie die
aufgenommene Kommunikation des Gerätes "Vorspielen" sie reagiert darauf
nicht, und aktiviert sich auch nicht. Also denke ich da ist mehr
Intelligenz dahinter.
Sicher, dass es 9600 Baud sind?
Ich habe mir auch schon einige Protokolle angeschaut, und dabei mit
Baudraten herumgespielt.
Allein das häufige 0x3f mach mich stutzig, das könnte auch nur ein
einzelner Plus sein, denn 0x3f ist Binär 0b00111111. Also ein einzelner
Flankenwechsel.
Ich würde mir das mal mit einem Scope anschauen. Also das richtige
Signal, und nicht die Interpreation eines falsch eingestellten Uarts.
Espressif schrieb:> Michael D. schrieb:>> um welches Gerät/Akkutyp geht es genau?>> Das ist so ein No Name China Industriehandheld
Ach so. Das ist also ein Gerät.
Na, dann ist ja alles klar.
Ist es wenigstens formschön?
PittyJ schrieb:> Ich würde mir das mal mit einem Scope anschauen. Also das richtige> Signal, und nicht die Interpreation eines falsch eingestellten Uarts.
Das müsste auch mit einem Logic Analyzer gehen? So einen hole ich mir
dann nämlich mal