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
:
Bearbeitet durch User
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
Michael D. schrieb: > Mit Gehäuse, 8 Inputs mit 24 MHz Samplefrequenz: > https://www.aliexpress.com/item/1005004166845365.html Kostet übrigens direkt aus DE bezogen auch nur 3 oder 4 Mäuse mehr. Meiner ist gestern angekommen - Dienstag bestellt bei makershop.de Michael D. schrieb: > um welches Gerät/Akkutyp geht es genau? Ja bitte mal posten
:
Bearbeitet durch User
Michael D. schrieb: > um welches Gerät/Akkutyp geht es genau? Das ist so ein No Name China Industriehandheld
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
MaWin schrieb: > Wenn du schon weisst, dass es standardgemässe 9600bd sind Es müsste so sein, das Output scheint bei dieser Baudrate Sinn zu ergeben
Du könntest auch mal Docklight im Monitormodus versuchen, kann man auch Timestamps einblenden und schön zwischen ASCII und HEX umschalten
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.
Espressif schrieb: > Jedes mal wenn man die Batterie einsetzt sind bestimmte Bytes > der Kommunikation anders. Vermutlich einfach jedes 42.Bit?
Ohne geposteten Mitschnitt kann man dir aber nicht helfen. 'Einige Bytes' ist dafür nicht genug.
Hier 2 mal einsetzen hintereinander Mitschnitt vom gelben Kabel
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
Der Gerät schrieb: > Ach so. Das ist also ein Gerät. > > Na, dann ist ja alles klar. > > Ist es wenigstens formschön? Das ist sowas: https://www.alibaba.com/product-detail/Rugged-Win-10-Handheld-PDA-4G_1600499287989.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.