Car2Cloud-Box Reverse Engineering

Zusammen mit der SDA-Batterie hatte ich aus einem D16 auch ein BCM (dazu hoffentlich in ein paar Tagen mehr) und eine C2C-Box gekauft. Die C2C-Box ist als Ziel fürs Reverse-Engineering besonders interessant, weil sie die einzige Möglichkeit ist, die Uhrzeit im CDIS einzustellen und insbesondere, weil bei Fahrzeugen, die mit C2C-Box ausgeliefert wurden, die Ladeleistung ohne funktionsfähige C2C-Box begrenzt ist. Außerdem hat die C2C-Box GPS und Internet und das behagt vielleicht auch nicht jedem (VW lässt grüßen)...

Erstmal ein Foto:

Auffällig:
Das Modem ist ein 2G-Modul, also wird es ab 2028 schwierig. Ob der Chip oben in der Mitte eine echte eUICC ist oder nur eine SIM-Karte in Chipformat, weiß ich nicht. Der CAN-Controller ist ein MCP2515. Normalerweise wäre noch eine microSD-Karte eingesteckt, die hatte ich auf dem Foto aber herausgenommen, damit mehr Leiterbahnen sichtbar bleiben.

Besonders spannend ist das SoM "Carambola2", auf Basis eines Atheros AR9331 (MIPS-Architektur). Laut Datenblatt sollte darauf OpenWRT laufen, also habe ich munter einen USB-/UART-Adapter angeklemmt und hatte innerhalb weniger Sekunden die Bootmeldungen eines OpenWRT auf dem Bildschirm.

Fortsetzung folgt, der Bug mit den Foto-Uploads hat schon wieder zugeschlagen

1 „Gefällt mir“

Wer das nachmachen möchte, sollte daran denken, die Antennen abgeschraubt zu lassen, damit die Box nicht nach Hause telefoniert. 3.3V-Pegel, das an der Seite angelötete Kabel liefert 3.3V zur Stromversorgung, am gelben Kabel ist der Minuspol. Was RX und was TX war, habe ich vergessen, aber das muss man ja ggf. sowieso herumtauschen...

Jedenfalls brauchte ich nur die Enter-Taste zu drücken und hatte eine Root-Konsole.

photo_2026-09-03_23-28-24-obfuscated

Leider wollte das OpenWRT sich dann nach ein paar Sekunden schon wieder herunterfahren. Wer das verhindern will, dem sollten die folgenden Befehle helfen (grob aus der Erinnerung):

/etc/init.d/ugps stop
kill -9 $(pgrep ugps) # Reboot sonst nach ein paar Sekunden
/etc/init.d/c2cMgr stop
kill -9 $(pgrep c2cMgr) # Reboot sonst nach ca. einer Stunde

Mit dem folgenden Befehl kann man sich dann ein Image des SPI-Flash-Chips ziehen:

cat /dev/mtd0ro /dev/mtd1ro /dev/mtd2ro /dev/mtd6ro > /mnt/spi_flash.bin

Das sollte 16MiB groß sein und dann auf der SD-Karte liegen. Interessanterweise ist nach jedem Reboot der Hashwert unterschiedlich. Ich habe noch nicht nachgeforscht, wieso. Aus offensichtlichen Gründen werde ich hier das Image nicht posten, aber da liegt letztlich auch kein großer Wert drin, abgesehen von der Binärdatei unter /usr/sbin/c2cMgr.

Soweit ich es feststellen konnte, liegt darin alles, was an der C2C-Box irgendwie interessant ist.

Der Hashwert meiner Version: sha1-cc52084a411d0880247c88b58a1c235f7435461a

1 „Gefällt mir“

Weil ich leider Gottes nicht mit MIPS-Assembler als Muttersprache aufgewachsen bin, habe ich die Binärdatei in Ghidra gesteckt und per MCP Claude Code angeschlossen und bin direkt umgehauen worden. LLMs und Reverse-Engineering sind ein echtes "match made in heaven". Es ist phänomenal, wie schnell Claude Struktur in die Binärdatei bringen konnte. Geholfen hat auch, dass anscheinend netterweise noch ein paar Symbole übrig gelassen wurden.

Die folgende DBC-Datei habe ich von Claude generieren lassen. Bisher habe ich sie nicht getestet, aber es wirkt alles sehr plausibel (basierend auf der dekompilierten Binärdatei, nicht nur LLM-plausibel...). Jedenfalls ist klar: die Interaktion zwischen C2C-Box und BCM ist relativ simpel. Die C2C-Box kann auch selbst keine UDS-Interaktionen starten, nur auf Diagnoseanfragen antworten.

i-can-dbc.zip (8,9 KB)

Es sollte jetzt relativ trivial sein, ein kleines Programm zu schreiben, das die Uhrzeit per GPS vom Modem holt und ans BCM schickt, sowie die Ladeleistungsbegrenzung dauerhaft auf 10kW setzt. Ich glaube, dass alle C2C-Nachrichten zyklisch im Abstand von einer Sekunde gesendet werden sollten, genau weiß ich das aber nicht. Wer übertrieben motiviert ist, könnte auch ein sysupgrade-Image mit OpenWRT bauen. Vielleicht gibt es ja Freifunker, die auch StreetScooter fahren?

Für mich ist das aber erstmal nicht so interessant, mein Auto hat ja nie eine C2C-Box gehabt und dass die Uhrzeit nicht geht, stört mich nicht.

Für mich sind damit alle Fragen beantwortet, die ich an die C2C-Box hatte, also mache ich einen Haken an die Sache :smiley:

3 „Gefällt mir“

das sind ja mal geballte Infos mit viel Tech Slang.

so ganz weiß ich noch nicht was du vorhattest, versuche das mal etwas in meine Worte zu fassen. Also, du hattest Fragen und diese sind beantwortet. du wolltest...

  1. einmal die Uhrzeit des BCM über das C2C verstellen ?
  2. die Ladeleistung verändern?

woher hast du diese Info?

bei mir im B16 ist ein Valeo Laderegler verbaut, der nicht mehr als einphasig betrieben werden kann. soviel ich weiß kann ich die Ladeleistung daher auch nicht höher setzen. Ist ja physikalisch bereits nicht machbar, Wieso sollte ein deaktiviertes C2C soetwas dann noch beschränken?

Primär wollte ich verstehen, was die C2C-Box tut und kann. Die Info, dass nur die C2C-Box die Uhrzeit setzen kann, kommt aus einem Handbuch, dass bei kaputter (oder deaktivierter?) C2C-Box die Ladeleistung reduziert ist, stand mal in der StreetScooter-Gruppe auf Facebook.

Natürlich kann die C2C-Box nicht magisch die Ladeleistung höher setzen als das, was die OBC-Hardware kann :wink:

Warum StS die Entscheidung getroffen hat, dass mit deaktivierter C2C-Box nur mit reduzierter Leistung geladen werden kann? Keine Ahnung. Die Funktion wird es ganz allgemein geben, um im Depot die Ladeinfrastruktur nicht zu überlasten, vielleicht ist der reduzierte Wert (1.8kW sind es, glaube ich) als "sicher" eingeschätzt worden

C2C soll Car to Cloud heißen. "Fahrzeug kommunizert mit dem Server"

kann sonst persönlich nur Vermutung anstellen, weil ich sonst wenig Infos dazu besitze.

vermutlich konnte man damit sehen, wo sich das Fahrzeug aktuell befindet, anscheinend konnte auch die Ladeleistung und der Ladezeitpunkt im Depot automatisch angepasst werden. bestimmte Ereignisse, Diagnosedaten konnten damit auch übermittelt werden.

In meinem B16 ist eine C2C Box verbaut, die anscheinend deaktiviert ist. Zumindest habe ich es noch nicht geschafft mit einer Diagnose die Box anzusprechen. Mir wurde damals nur mitgeteilt, wäre ja auch schön blöd, wenn die C2C Box noch aktiv wäre.

Alles korrekt. Und weil wir jetzt ja wissen, wie die C2C-Box funktioniert, könnten wir sie theoretisch umprogrammieren und wieder in Betrieb nehmen. Der einzige Grund, aus dem ich nicht weitermache mit der C2C-Box ist, dass ich alles herausgefunden habe, was mich interessiert hat

ok, ich würde in diesem Satz das "wir" mit "Heye" tauschen. :wink:

was könnte man mit einem aktivierten C2C anfangen, mhh. lass mich mal kurz überlegen... warte, warte... zum Depot in der Nähe fahren und dort wenn möglich Schnellladen. :joy:

Ups :smiley:

Ich hatte eben mal unters BCM gefasst, weil ich sehen wollte, ob dort Platz und Stecker für eine C2C-Box wäre. Und tatsächlich hat mein Auto eine C2C-Box, anders, als ich dachte! Oder eine TCU, keine Ahnung. Auf jeden Fall eröffnen sich dadurch ganz neue Möglichkeiten.

Danke für das Reverse-Engineering des BigBrother-Moduls!

Mir war bei meinem B14 schon aufgefallen, dass das Kombiinstrument nach dem Einschalten der Zündung immer die akkurat richtige Uhrzeit anzeigte, egal, wie lange ich 12V-Bordnetzbatterie und/oder Traktionsbatterie vorher abgeklemmt hatte. Auch die erwartbare Drift von Quartzuhren war nicht zu beobachten, die Zeit stimmte immer mit Funkuhr-Präzision. Daher dachte ich mir schon, dass die Uhr auf eine externe Quelle synchronisiert wird. Dürfte wohl über das GSM-Handynetz laufen, oder eventuell GPS, eher nicht über DCF-77.

Man kann sich nun in der Tat fragen, inwieweit die Kommunikation vielleicht bidirektional ist und das BigBrother-Modul auch Information nach draußen funkt.

Gerne! Und das ist ja spannend, dann geht deine also noch! Die C2C-Box schickt bei der Post definitiv Daten nach Hause, möglicherweise könntest du sie von der microSD-Karte auslesen, die in der Box steckt. Die Zeit kommt sicher per GPS oder Mobilfunk. Ich dachte lange, sie müsse vom GPS kommen, aber du hast natürlich Recht, es kann prinzipiel beides sein und es spricht einiges für Mobilfunk (NTP?).

Ich hatte folgende Idee für die C2C-Box (und hoffentlich die TCU, sofern sie ähnlich genug ist. Eine TCU sollte ich ja in meinem Auto haben, das nachzuschauen, brennt mir richtig unter den Nägeln):

Für die Box wird eine neue Firmware auf OpenWRT-Basis gebaut, die ein Programm enthält, das folgendes tut:

  • Schaltet sich auf den CAN-Bus auf und liest die Daten (insbesondere Batterie-Diagnosedaten) aus.
  • Holt die aktuelle Zeit per GPS und schickt sie auf den CAN-Bus
  • Öffnet bei eingeschaltetem Fahrzeug einen WLAN-Hotspot mit Captive-Portal-Website
  • Auf der Website werden die Diagnosedaten angezeigt und mit touch-freundlichem Interface kann z.B. die Ladeleistung konfiguriert werden

Auf dem Original-Radio (mit Touch-Display, WLAN und Browser!) hätte man dann alles wie bei einem modernen Auto direkt zur Hand! Fände ich extrem cool.

1 „Gefällt mir“

das wäre ein Traum, das Diagnosetool schon an Board, genial ! :laughing:

Ich habe auch schon ein Update:

Eben habe ich die C2C-Box aus meinem Auto ausgebaut (tatsächlich eine C2C, mit exakt der gleichen Hardware wie die, die ich schon habe). Sie war nicht eingesteckt (nur die Antennenkabel waren verschraubt). Nachher werde ich mal schauen, ob auch die Software die gleiche ist wie bei meine anderen C2C. Möglicherweise ist auch gar keine drauf, es ist ein großer orangener Aufkleber mit der Aufschrift "Gesperrt" auf dem Gehäuse gewesen...

Und ein Verdacht: Kann es sein, dass es gar keine separate TCU gibt, sondern TCU einfach ein später eingeführter Begriff für die C2C ist? Mein Auto ist ja bj. 2019, also relativ spät, und da sollten sie die zuletzt eingeführte Version doch schon gehabt haben?

sorry, das kann ich dir leider nicht entkräften oder bestätigen.

meine C2C Box scheint mit dem I-CAN verbunden zu sein, wenn ich deine Idee nachverfolge, müsste die C2C Box theoretisch mit dem BCM kommunizieren, der BCM wäre dann soetwas wie ein Router oder habe ich da einen Denkfehler?

Genau, das BCM agiert (unter Anderem) als "CAN-Gateway". Z.B. die Diagnosenachrichten vom BMS werden einfach die C2C-Box durchgereicht.

1 „Gefällt mir“