Forum: Mikrocontroller und Digitale Elektronik Kommunikation zwischen Akku und Gerät herausfinden


von Espressif (Gast)


Lesenswert?

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ß

von Jester (Gast)


Lesenswert?

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)

von Michael D. (nospam2000)


Lesenswert?

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
von Espressif (Gast)


Lesenswert?

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

von Michael D. (nospam2000)


Lesenswert?

um welches Gerät/Akkutyp geht es genau?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Espressif (Gast)


Lesenswert?

Michael D. schrieb:
> um welches Gerät/Akkutyp geht es genau?

Das ist so ein No Name China Industriehandheld

von MaWin (Gast)


Lesenswert?

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.

von Espressif (Gast)


Lesenswert?

Ich hatte halt die Hoffnung, dass man mit einem Logic analyzer das
ganze noch etwas sauberer mitschneiden kann, und vor allem zeitlich 
sauber
synchronisiert

von Espressif (Gast)


Lesenswert?

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

von Ron-Hardy G. (ron-hardy)


Angehängte Dateien:

Lesenswert?

Du könntest auch mal Docklight im Monitormodus versuchen, kann man auch 
Timestamps einblenden und schön zwischen ASCII und HEX umschalten

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Espressif (Gast)


Lesenswert?

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.

von mIstA (Gast)


Lesenswert?

Espressif schrieb:
> Jedes mal wenn man die Batterie einsetzt sind bestimmte Bytes
> der Kommunikation anders.

Vermutlich einfach jedes 42.Bit?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ohne geposteten Mitschnitt kann man dir aber nicht helfen. 'Einige 
Bytes' ist dafür nicht genug.

von Espressif (Gast)


Angehängte Dateien:

Lesenswert?

Hier 2 mal einsetzen hintereinander Mitschnitt vom gelben Kabel

von Espressif (Gast)


Angehängte Dateien:

Lesenswert?

Und hier nochmal Mitschnitt vom grünen Kabel

von PittyJ (Gast)


Lesenswert?

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.

von Der Gerät (Gast)


Lesenswert?

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?

von Espressif (Gast)


Lesenswert?

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

von Espressif (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.