CCS - Technische Details

Inhaltsverzeichnis [anzeigen]

(...im Aufbau...) In diesem Wiki sammeln wir technische Details zum CCS, z.B. wie die Kommunikation abläuft und wie sich die Kommunikation mitloggen lässt. Startpunkt sind die Diskussionen in https://www.goingelectric.de/forum/viewtopic.php?f=34&t=74226.

Linksammlung

Mitschneiden der CCS-Kommunikation

Grundlagen

Die Kommunikation zwischen Ladesäule und Fahrzeug erfolgt mittels Powerline-Communication (PLC) [Ref1, Ref5, ...]. "Powerline" klingt zunächst so, dass die Hochstrom-Leitungen gemeint sind, aber tatsächlich läuft die Kommunikation über die ControlPilot (CP)-Leitung, die auch die +/-12V PWM trägt [Ref13, Ref5]. Als Modulationsverfahren wird "HomePlug GreenPHY" (HPGP) verwendet [Ref5]. Dieses Protokoll nutzt Frequenzen im Bereich 2 MHz bis 30 MHz [Ref7]. Die Abstrahlung dieser Frequenzen über das Ladekabel bietet die Möglichkeit, die Kommunikation mittels geeignetem Equipment mitzuschneiden. Kommerziell ist solches Equipment verfügbar [Ref9], [Ref9a], so dass die grundsätzliche Machbarkeit bewiesen ist. Der HPGP-Standard ist interoperabel mit HomePlugAV, Ref7 sagt "HomePlug GP and HomePlug AV devices can form either homogeneous or heterogeneous networks."

Ansatz

Das beim CCS verwendete HomePlug-GreenPHY sollte mit handelsüblichen, günstigen HomePlugAV-Adaptern grundsätzlich "decodierbar" sein. Wobei "decodierbar" in diesem Fall heißt, dass der Adapter die per HF empfangenen Daten als Ethernet-Frames weitergibt. Diese können mit einem Ethernet-Daten-Logger (PC-Software "Wireshark") mitgeschnitten, und ggf. mit weiterer Software weiterverarbeitet werden.

Praxis

Fragestellung: Wie groß ist der Aufwand, die MAC-Adresse eines EVs zu ermitteln? Antwort: Größenordnung Wochenendprojekt (wenn man mal den Rechercheaufwand weglässt ;-)

Was brauchen wir?

  1. Einen Powerline-Ethernet-Adapter, der HomePlugAV unterstützt. Beispiel "devolo dLAN 200 AVplus". Bei ebay gebraucht für wenige Euro. Auf Werkseinstellung zurückgesetzt, also mit dem Standard-Verschlüsselungspasswort.
  2. Eine tragbare Stromversorgung für den Devolo. Der braucht 3.15V bei ca. 350mA. Ich verwende 2*LiIon und einen LM317 aus der Bastelkiste. Wir speisen diese Versorgung am großen Glättungs-Elko der Sekundärseite vom Schaltnetzteil ein.
  3. Ein Ethernetkabel, um den Devolo mit dem Laptop zu verbinden.
  4. Einen Laptop mit der Software WireShark.

Was müssen wir tun?

Den Devolo müssen wir so umbauen, dass der ehemalige 230V-Port, der sowohl zur Versorgung als auch zur Kommunikation diente, die erstere Aufgabe abgibt.

Die Versorgungsspannung von 3.15V speisen wir direkt am ersten Glättungs-Elko nach dem Schaltnetzteil ein. Das erledigt ein passend beschalteter Spannungsregler LM317. Mit R1=220 Ohm und R2=330 Ohm ergibt sich eine Ausgangsspannung von 3,12V. Bei 7 bis 8V Eingangsspannung aus zwei LiIon in Reihe wird der LM317 ordentlich warm, schafft es aber gerade noch. Klar ist das nicht energie-effizient, muss es aber auch nicht sein. Den ehemaligen 230V-Port nutzen wir unverändert als Hochfrquenz(HF)-Port. Dazu verbinden wir eine Seite mit der Devolo-Masse (besser wäre Fahrzeug-Masse), die andere bekommt eine "Wurfantenne" in Form eines halben Meters Draht, die wir am Schluss in die Nähe von CCS-Stecker oder -Kabel bringen. Bewährt hat sich, die Wurfantenne um das CCS-Kabel einmal herumzuschlingen und mit einem einfachen Knoten zu sichern. Das ist alles. Auf dem Laptop Wireshark installieren, starten, Ethernet zum Loggen auswählen, Ethernet verbinden, Wurfantenne auf CCS-Stecker legen oder am CCS-Kabel anknoten, CCS am Auto anstecken, RFID an die Säule (evtl auch nicht), und schon erscheint im WireShark die SLAC-Sequenz. Im besten Fall.


Devolo HomePlug AV Adapter vor dem Ausschlachten

 


Innenleben des Devolo HomePlug Adapters mit portabler Stromversorgung und Wurfantenne


Trace der SLAC-Sequenz, mitgeschnitten mittels Devolo an einem Alpitronic HYC300

 

Offene Punkte / Optimierungspotential

OPL_1. Je nach Qualität der Ankopplung kann das Ergebnis besser oder schlechter sein. Ich hatte auch einen Fall, wo nur die Frames vom Fahrzeug zur Säule angezeigt wurden, nicht die von der Säule. Die Kopplung mit der Wurfantenne, und des Ground-Anschlusses hat auf jeden Fall Optimierungspotential.

OPL_2. Die Ladung hat zweimal abgebrochen, als der Testaufbau aktiv war. Es kann Zufall gewesen sein, aber es kann auch sein, dass die Devolo die Kommunikation zwischen Säule und Auto stören. Abhilfemaßnahme wäre, den Sendezweig des devolo totzulegen (oder zumindest um viele dB zu dämpfen), so dass er zwar mithören, aber nicht stören kann. Lösungsmöglichkeit:


Patch zur Reduzierung der Sendeleistung

OPL_3. Die Aufzeichnung endet nach der SLAC-Sequenz. Die Ursache war anfangs nicht klar. Möglicherweise reduzieren Auto und Säule die Sendeleistung (geklärt: Tun sie nicht), oder schalten auf Verschlüsselung um (Geklärt: genau). Wäre schön, auch den Rest der Kommunikation zu sehen. Mögliche Lösung (ungetestet): [Ref14] sagt im Figure A.2, dass nach dem CM_SLAC_MATCH.CNF der EV-host (also auch wir als Zuhörer) dem PLC-Modem den Verschlüsselungs-Key mitteilen müssen (CM_SET_KEY.REQ). Laut [Ref12(?)] ist der Key (Network Membership Key, NMK, siehe auch [Ref17] ) in der CM_SLAC_MATCH.CNF enthalten. Wir brauchen also PC-seitig ein Stück Software, das den NMK aus dem Ethernet-Frame CM_SLAC_MATCH.CNF liest und in einen Ethernet-Frame CM_SET_KEY.REQ verpackt und abschickt. Das gleiche gilt für die NID (network ID). Annahme ist, das damit das PLC-Modem im Devolo den gleichen NMK verwendet wie Ladesäule und Fahrzeug, und damit den eigenlich verschlüsselten Verkehr mitlesen kann.
[Teilweise gelöst] Das extrahieren von NMK und NID aus der SLAC-Response funktioniert mit der Software von https://github.com/uhi22/pyPLC. Auch das Setzen der beiden mittels SET_KEY. Heißt: Ladesäule, Fahrzeug und Sniffer bilden ein gemeinsames Netzwerk. Leider routet der PLC-Adapter trotzdem nicht den IPv6-Traffic auf den Ethernet-Port.

OPL_4. Wireshark zeigt die Inhalte nur "unknown" an. Warum? Der verwendeten Wireshark-Version feht der "Dissector" für die HomePlug-Frames. In [Ref18] wird ein Plugin für WireShark teuer angeboten. Alternativ dazu können wir zumindest auf unterster Ebene Abhilfe schaffen durch "händische" Decodierung; die Definitionen finden wir in [Ref12, file slac/slac.h]. Dort werden die Zahlen aus dem Wireshark-Trace in Message-Name gemappt:


Update: Die aktuelle (Oktober 2022) Version von Wireshark für Win10 zeigt die Homeplug-Frames nutzerfreundlich an. -> OPL_4 gelöst.

OPL_5. Nicht jeder HomeplugAV-kompatible Adapter zeigt die SLAC-Sequenz an. Der devolo dLAN 200AVplus war ein Glückstreffer. Zwei andere Typen (devolo dLAN 1200+ und TPlink TL-PA4010P) zeigen im Originalzustand gar nichts an. Die Einstellungen der Adapter können teilweise angepasst werden, so dass sie SLAC-fähig sind. Diskussion dazu in [Ref23].

FAQ

- Frage 1: Heißt das, dass jeder die MAC-Adresse meines Autos einfach abfischen kann? Antwort 1: Ja, wenn er am Schnelllader während des Ansteckens "unauffällig" in der Nähe des Kabels steht, geht das.

- Frage 2: Ist das ein Datenschutzrisiko? Antwort 2: Naja, die MAC-Adresse ist genau wie das Autokennzeichen öffentlich sichtbar. Das klingt nicht sehr riskant.

- Frage 3: Kann jemand auf meine Kosten laden, wenn er meine MAC-Adresse kennt? Antwort 3: Bei echtem PlugAndCharge (wie bei Ionity): Nein. Bei EnBW/Fastnet: Theoretisch ja, wenn du dich für AutoCharge angemeldet hast und er in seinen OnBoardCharger deine MAC-Adresse patcht. Wie leicht das geht, wissen wir nicht.

- Frage 4: Ist "basteln" am CCS nicht viel zu gefährlich wegen der hohen Spannungen und Ströme? Antwort 4: Völlig richtig. Deshalb modifizieren wir NICHTS am CCS-Kabel oder Stecker oder Fahrzeug. Wir bringen lediglich eine Antenne in die Nähe. Die "bösen" Ströme und Spannung können nicht durch die Isolation von Stecker und Kabel. Nur die hochfrequenten Kommunikationssignale durchdringen diese.

- Frage 5: Ist die Antenne irgendwie berechnet oder abgestimmt? Also Stichwort "Lambda/2" oder "Lambda/4" Dipol? Antwort 5: Nein. Es ist HF-technisch eher eine kapazitive Sonde. Das HomePlug verwendet einen breiten Frequenzbereich 2 bis 30 MHz, da gibts keine abgestimmte Antenne. Das Stückchen Draht ist also so im Bereich hundertstel Lambda und kleiner.

- Frage 6: Geht das Auslesen der MAC-Adresse des Fahrzeugs auch ohne CCS-Säule? Antwort 6: Ja. Das Ermitteln der MAC-Adresse vom Fahrzeug geht auch ohne echte CCS-Ladesäule. Man muss lediglich dem Fahrzeug vorgaukeln, dass es mit einer Ladesäule verbunden ist, die digital kommunizieren kann. Dazu müssen wir auf dem CP-Kontakt im State B statt des PWM-Tastverhältnisses 20% (für 12A) das Tastverhältnis 5% (für "digitale Kommunikation") anlegen. Beispielsweise mit einer modifizierten AC-Ladebox, ähnlich zu https://www.instructables.com/Arduino-EV-J1772-Charging-Station/. Zusätzlich muss auf PLC ein "CentralCoordinator" seine "Alive-Messages" schicken, z.B. ein als evse oder CCo=automatic konfigurierter PLC-Adapter. Der Ioniq sendet daraufhin zyklisch auf der CP-Leitung Datenpakete, die wir mit dem oben beschriebenen Aufbau mitschneiden können. Laden tut er so natürlich nicht, da keiner eine Antwort auf seine Anfragen schickt. Diese Eigenschaft könnte prinzipiell hilfreich sein, um eine Eigenbau-AC-Wallbox mit AutoCharge-Funktionalität zu versehen, also das angeschlossene Fahrzeug zu identifizieren anhand seiner MAC-Adresse und abhängig davon die Ladung freizugeben oder zu protokollieren.

- Frage 7: Wo kann man sehen, welche Ladeleistung / welchen Ladestrom das Fahrzeug von der Säule anfordert? Antwort 7: Diese Daten sind erst mitlesbar, wenn der Punkt OPL_3 (Routing der TCP-Daten auf den Ethernet-Port des Sniffers) gelöst ist. Ist dieser Punkt geknackt, steht auf [Ref24] der Decoder bereit, der aus dem IPv6-TCP-V2GTP-EXI-Datenstrom Klartextinformation erzeugt.