Table of Contents
OBD-II-Diagnose
Was du über die OBD-II-Buchse des U5 bekommst und was nicht — ermittelt durch Abtasten mit einem billigen USB-CAN-Adapter und Gegenprüfen anhand der Anzeigen der Head-Unit. Kurzfassung: du kannst sehr viel lesen, aber ohne den geheimen Schlüssel des Herstellers nichts schreiben. Siehe CAN-Bus dazu, wie sich dieser Anschluss von den internen Bussen unterscheidet.
Der Anschluss ist ein reines Abfrage-Diagnosegateway
- OBD-II Pin 6 = CAN-H, Pin 14 = CAN-L (Masse an 4/5, Dauerplus 12 V an 16). Das ist das einzige CAN-Paar am Stecker — kein zweiter Bus, kein Automotive Ethernet / DoIP.
- Passives Mithören bleibt stumm — bei jeder Bitrate wird hier nichts gesendet.
- Aktive Anfragen werden beantwortet, und zwar mit 500 kbit/s, 11 Bit (ISO 15765-4). 29 Bit und andere Bitraten bleiben stumm.
- Der Anschluss hängt an einem eigenen Diagnose-CAN, der am zentralen Gateway endet. Das Gateway verbindet die getrennten internen Busse des Fahrzeugs — Antrieb, Fahrwerk, Karosserie/Komfort, Infotainment, Telematik — und leitet jede Anfrage an das Zielsteuergerät weiter. Du erreichst darüber also jedes Steuergerät, aber am Stecker liegen die laufenden internen Botschaften nie an. Du kannst hier abfragen, nicht mitschneiden. Das ist eine echte Firewall im zentralen Gateway.
Generisches OBD-II — jedes Diagnosegerät
Die genormten Abgasdienste funktionieren, funktional adressiert an 0x7DF (Antworten auf 0x7E8):
- Mode 09 — VIN (
09 02) und Kalibrier-IDs. - Mode 03 / 07 / 0A — gespeicherte / sporadische / permanente DTCs.
- Mode 01 — Live-PIDs. Der primäre Antriebs-Endpunkt (0x7E0) meldet eine PID-Unterstützungsmaske von
BF FB FF F7und — bei einem Elektroauto praktisch — PID 0x5B („hybrid/EV battery remaining charge“, verbleibende Ladung der Antriebsbatterie). - Mode 04 — Abgas-DTCs löschen (siehe Fehlercodes löschen weiter unten).
Wie bei jedem Elektroauto gibt generisches OBD wenig her — VIN, generische Fehlercodes, ein paar Werte (im geparkten Zustand meist 0). Alles Interessante — echter SoC, Packspannung, Zelldaten — liegt in der darunterliegenden herstellerspezifischen UDS-Schicht.
Die Steuergeräte-Übersicht (UDS)
Das Gateway leitet UDS-Anfragen an die internen Steuergeräte weiter. Zähle sie behutsam mit einem
einzigen funktionalen TesterPresent auf (3E 00 → 0x7DF): das ändert nichts, und trotzdem antwortet
jedes erreichbare Steuergerät von seiner eigenen ID. Beim U5 findet man so 24 Steuergeräte.
Antwort-ID = Anfrage-ID + 8 (z. B. 0x701 → 0x709).
| Anfrage-ID | Anmerkungen |
|---|---|
| 0x7E0 | Antriebs-Endpunkt für generisches OBD. Antwortet auf Mode 01, weist aber jedes UDS ab (serviceNotSupported). |
| 0x7E1 | Batteriemanagementsystem — Packspannung / Strom / SoC / Zelldaten liegen hier (siehe unten). |
| 0x7E2, 0x7E3 | Antriebspaar (fortlaufende Teilenummern) — Motor-/Ladeelektronik. |
| 0x700–0x707, 0x710–0x713, 0x720–0x727, 0x730–0x736, 0x7AC | Steuergeräte für Karosserie / Fahrwerk / Komfort (BCM, HVAC, ESP, EPS, Airbag, Lenkung, Kombiinstrument, Sitze, Heckklappe, TPMS, …). |
Die so erreichbaren internen Steuergeräte sind der übliche EV-Satz: BMS, VCU, Motorsteuergerät, Bordladegerät, Fahrstufenwahl (Antrieb); BCM, Klimamodul, PTC/Kompressor, Sitzheizungen, Heckklappe, Warnklang für niedrige Geschwindigkeit (Karosserie); ESP, EPS, iBooster, Airbag, Lenkwinkelsensor, Kameras/Radare (Fahrwerk); Head-Unit, Kombiinstrument (Infotainment); T-Box (Telematik). Die genaue Zuordnung Adresse↔Modul ist nur für 0x7E0/0x7E1 bestätigt; der Rest ist aus den Daten und dem Adressblock erschlossen.
Daten lesen (zerstörungsfrei)
In der Standardsitzung (ohne Sitzungswechsel) geht üblicherweise:
- 0x19 ReadDTCInformation — gespeicherte Fehlercodes, dekodiert (
19 02 FF= Abfrage nach Statusmaske). - 0x22 ReadDataByIdentifier — Daten über eine 16-Bit-DID lesen.
Der Identifikationsblock (DIDs 0xF180–0xF1FF) liefert bei den meisten Steuergeräten: eine
Teilenummer im Schema 8619xxxxx, einen Lieferantencode (CS-000xxx), ein Programmierdatum und die
VIN (0xF190). Beispiel von einem Steuergerät: Teil 861923101B, Lieferant CS-000029,
programmiert 2021-11-10. Wenn du das über alle 24 Steuergeräte durchziehst, entsteht eine komplette
Teilenummern- und Build-Karte des Fahrzeugs — eine öffentliche Aiways-Steuergeräteliste gibt es sonst
nicht.
Das BMS (0x7E1) führt einen Live-Messblock rund um die DIDs 0x8800–0x887F — grob
120 aggregierte Batteriewerte: Packspannung, Strom, Zellspannungen, SoC, Temperaturen und
Statuswörter. Hier sollten die Zahlen liegen, die die Head-Unit nicht zeigt (Zelle min/max,
Temperaturen, Alterungszustand).
⚠ Das Fahrzeug nicht stören, während es benutzt wird
Ein breit angelegter Scan — viele Steuergeräteadressen durchfahren und dabei eine erweiterte
Sitzung erzwingen (10 03) — bringt Steuergeräte dazu, ihre normalen CAN-Botschaften einzustellen.
Das Kombiinstrument markiert die „fehlenden“ Module dann mit Warnsymbolen, und eine nachgelagerte
Anzeige kann auf einem Ersatzwert einfrieren (wir haben gesehen, wie die Außentemperaturanzeige
hängenblieb). Es ist nur lesend und geht von selbst zurück, sobald das Abtasten aufhört, aber:
- Führe niemals einen breiten/aggressiven Scan während der Fahrt aus — ein Steuergerät, das mitten in der Fahrt vom Bus fällt, ist unsicher.
- Nimm besser die behutsame Methode: funktionale Erkennung + nur Lesezugriffe in der Standardsitzung (0x19 / 0x22), keine Sitzungssteuerung. Ein einzelner Lesezugriff auf ein Steuergerät in der Standardsitzung stört das Kombiinstrument nicht.
Die Fehlercodes, die du sehen wirst
Die letzten zwei Hex-Stellen eines DTC sind das genormte Fehlertyp-Byte: …88 = CAN Bus Off, …87 = fehlende Botschaft / Zeitüberschreitung, …82/83 = Aktivitätszähler / Prüfsumme. Ein `U…87`- / `U…88`-Code bedeutet also „Kommunikationsverlust“, kein echtes Hardware-Ereignis.
Eine Folge davon: jede Bus- oder Spannungsunterbrechung — auch ein aggressiver Scan — lässt viele Module gleichzeitig „Kommunikationsverlust“ gegeneinander eintragen. Nach einem heftigen Scan ist mit einer langen Liste von U-Codes zu rechnen (und mit zusammenhängenden B-/C-Code-Bereichen); das sind Artefakte, die sich über saubere Fahrzyklen selbst löschen. Beachtung verdienen die Antriebs-P-Codes, die auf echte Sensor- / HV-Fehler zeigen. Lies erst alle mit 0x19 aus, dann urteile.
Fehlercodes des Batteriemanagements
Die herstellerspezifischen Codes (zweites Zeichen `1`, z. B. P110C00) sind, wie sich zeigt, ordentlich dokumentiert und tatsächlich EV-relevant — Spannungsprüfungen der HV-Schütze, Fehler der BMS-Stromsensoren, Zeitüberschreitungen von Gateway-Botschaften, Crash-/Airbag-Signalisierung. Keiner davon ist ein Überrest aus der Verbrennerwelt. Die folgenden Codes des Batteriemanagements sind identifiziert und bestätigt:
| Code | Bedeutung |
|---|---|
P112868 | Fehler des CAN-Kollisions-(Crash-)Signals |
U11FA87 | Zeitüberschreitung der Botschaft 0x2BB des Gateways |
U11FB87 | Zeitüberschreitung der Botschaft 0x2DF des Gateways |
U11FC87 | Zeitüberschreitung der Botschaft 0x3AA des Gateways |
U11FD87 | Zeitüberschreitung der Botschaft 0x050 des Gateways |
U11FE87 | Zeitüberschreitung der Botschaft 0x2F1 des Gateways |
U11FF87 | Zeitüberschreitung der Botschaft 0x195 des Gateways |
U120087 | Zeitüberschreitung der Botschaft 0x37F des Gateways |
U120187 | Zeitüberschreitung der Botschaft 0x28C des Gateways |
U120287 | Zeitüberschreitung der Botschaft 0x17D des Gateways |
U002888 | CAN-Bus deaktiviert (Bus-Off ≥3 s im geweckten Zustand) |
U00BA88 | CAN-Bus für Gleichstrom-Schnellladen deaktiviert |
U10BA87 | Zeitüberschreitung der Botschaft Gleichstrom-Schnellladen (Ladesteuergerät) |
U112182 | Fehler im Zähler der Crash-Botschaft des Airbag-Steuergeräts |
U112183 | Prüfsummenfehler der Crash-Botschaft des Airbag-Steuergeräts |
U011187 | Kommunikationsverlust mit dem BMS (Botschaft 0x2C7 fehlt 10 s) |
P110364 | Plausibilitätsfehler der Spannung hinter dem Hauptrelais |
P110386 | Spannung am Hauptrelais ungültig |
P11021C | Batteriespannung außerhalb des zulässigen Bereichs |
P11081C | Versorgungsspannung des internen Stromsensors (CAB) fehlerhaft |
P110A1C | Versorgungsspannung des internen Stromsensors (LEM) fehlerhaft |
P110C00 | 12-V-Versorgung schaltet sich unerwartet ab |
P11011D | Shunt-Strom außerhalb des zulässigen Bereichs |
P110162 | Plausibilitätsprüfung des Shunt-Stromsignals fehlgeschlagen |
P110164 | Selbstlernfehler des Shunt-Stromsensors |
P110167 | Fehler des Shunt-Stromsensors |
P110192 | Strommessfehler in zwei Schaltkreisen |
P110711 | Interner Stromsensor (Iem) — Kurzschluss nach Masse |
P110712 | Interner Stromsensor (Iem) — Kurzschluss nach Plus |
P110264 | Plausibilitätsprüfung des Batteriesignals fehlgeschlagen |
P110286 | Batteriespannungssignal ungültig |
P110464 | Plausibilitätsfehler der Spannung hinter dem Relais für Gleichstrom-Schnellladen |
P110486 | Gleichstrom-Ladespannung ungültig |
P11B467 | Spannungsfehler beim Gleichstrom-Schnellladen |
P11051D | Messwert des Hall-Stromsensors außerhalb des Bereichs |
P110562 | Plausibilitätsprüfung des Hall-Stromsignals fehlgeschlagen |
P110564 | Selbstlernfehler des Hall-Stromsensors |
P110567 | Hall-Stromsensor defekt |
P110592 | Abweichung des von verschiedenen Sensoren gemessenen Sammelschienenstroms zu groß |
P110609 | Fehler des internen Stromsensors (CAB) |
P11061C | Versorgungsspannung des internen Stromsensors (CAB) fehlerhaft |
P110692 | Fehler des internen Stromsensors (CAB) nach dem BMS-Selbsttest |
P115B92 | Gleichzeitiger Ausfall der Sensoren zweier Strom-Schaltkreise |
U11F487 | Zeitüberschreitung der Botschaft des internen Stromsensors (CAB) |
Jeder Code hier löscht sich automatisch, wenn er 40 Fahrzyklen lang nicht auftritt — oder per Diagnosegerät. Die übliche Eskalation bei der Reparatur ist: Codes anderer Module gegenprüfen → Kabelbaum/Steckverbinder prüfen → Isolationswiderstand des HV-Kabelbaums prüfen (Zielwert >1,5 MΩ, ≥120 MΩ für die PTC-Heizung, bei 500 V DC) → Antriebsbatterie komplett als Baugruppe ersetzen — einen Reparaturweg auf Bauteilebene für die BMS-Platine gibt es nicht.
Die generischen/SAE-Codes dagegen (zweites Zeichen `0`, z. B. die oben bei Live-Scans gesehenen P02C1/P01C1) liegen in Bereichen, die die Norm für Verbrenner-Teilsysteme definiert — P02xx heißt nominell „fuel injector circuit“ (Einspritzventil-Schaltkreis) und ist an diesem Auto bedeutungslos. Das Steuergerät, das sie meldet, identifiziert sich über Mode 09 selbst als HPCM-HybridPtCtrl („Hybrid Powertrain Control Module“) — ein echter Hinweis darauf, dass seine Diagnosesoftware von einer Hybrid-/Verbrennerplattform stammt und einige alte generische Prüfungen für die reine EV-Variante nie ganz herausgenommen wurden. Behandle unerklärte Codes im generischen P0-Bereich mit Misstrauen; verlässlich ist der herstellerspezifische P1xx-Bereich.
Auch Codes des Ladesystems sind aufgetaucht, bisher aber nur als nackte Kennungen (noch keine Definitionen gefunden): P120019, P120119, P122000, P122100, P128A19, P128B98, P12A500. Wenn jemand herausfindet, was die bedeuten, bitte hier ergänzen.
Hinweis zur Abdeckung: eine systematische Suche hat Fehlercode-Dokumentation nur für die obigen Codes des Batteriemanagements und für diese nackte Liste des Ladesystems gefunden — noch nichts für ESP, Parkbremse, Bremskraftverstärker, Lenkung, HVAC oder Karosserieelektrik. Wenn dein Auto einen Code aus einem dieser Bereiche wirft, ist er in diesem Wiki nicht dokumentiert — bitte ergänze, was du findest.
Die Rohwerte dekodieren
Für die herstellerspezifischen DIDs gibt es keine öffentliche Skalierung, also werden Rohwerte über Korrelation dekodiert — lies eine DID, während du den wahren Wert aus einer anderen Quelle kennst (die dekodierte Anzeige der Head-Unit ist ideal), und suche das Feld plus den Faktor, die passen. Einem Feld ist erst zu trauen, wenn du es bewegen kannst: schalte eine große HV-Last (Klimakompressor) ein und aus und schau, welche Felder mitgehen.
So am BMS (0x7E1) bestätigt:
- Packspannung = DID
0x8871(Rohwert = Volt; gelesen 407 gegen 406,9 V in der Head-Unit). - Packstrom = DID
0x887b(steigt mit der Last; über den Klima-Ein/Aus-Test identifiziert).
Für Ladezustand und die Spannung des 12-V-Systems gibt es plausible Kandidaten, sie sind aber noch nicht
festgenagelt — nahezu konstante Signale brauchen das Fahrzeug in verschiedenen Zuständen (eine Fahrt,
ein Ladevorgang), bevor Feld und Skalierung bestätigt werden können. Die dekodierten Zahlen sind gegen die
bekannten Packdaten plausibel (Bereich ≈268–417 V, 24 Module, Zelle 2,8–4,35 V), also ist z. B.
ein 0x882d-Messwert von ≈4,01 V eine echte Zellspannung. Ein Logger, der Referenzwerte und DIDs
gemeinsam über normale Fahrten mitschreibt, ist der saubere Weg, die Karte fertigzustellen.
Fehlercodes löschen
Das Löschen von DTCs ist der eine „Schreibzugriff“, der normalerweise ohne Security Access (Sicherheitszugriff) erlaubt ist — er wird für Reparaturen gebraucht:
- Generisch — Mode 04 (
ClearDiagnosticInformation):04an 0x7DF / 0x7E0 senden. Löscht Abgas-DTCs und Freeze Frames. - Herstellerspezifisch — UDS-Dienst 0x14:
14 FF FF FF(„alle Gruppen löschen“) an ein bestimmtes Steuergerät senden (z. B. 0x7E1). Löscht die gespeicherten DTCs dieses Moduls, üblicherweise in der Standardsitzung.
Anmerkungen: Löschen verdeckt echte Fehler (gute und schlechte gleichermaßen) — lies die Codes vorher aus. Permanente DTCs kann kein Werkzeug löschen; das Steuergerät löscht sie selbst, nachdem seine Readiness-Monitore durchgelaufen sind. Das Abklemmen der 12-V-Batterie setzt flüchtige Anzeigezustände zurück, löscht aber keine gespeicherten DTCs (nichtflüchtig) — dafür brauchst du einen Löschbefehl.
Das Fahrzeug aufwecken
Diagnoseanfragen an diesem Anschluss wecken das Gateway und die adressierten Steuergeräte für die Diagnose (so arbeitet ein Diagnosegerät an einem geparkten Auto). Das ist aber nur ein Diagnose-Weckruf — es fährt das HV-System nicht hoch, schließt die Hauptschütze nicht und startet die Klimatisierung nicht. Das sind Aktuator-Funktionen hinter Security Access.
Was gesperrt ist — und die eine interessante Ausnahme
Alles, was verändert oder ansteuert — Konfiguration schreiben (0x2E), Aktuatortests (0x2F), Routinen (0x31), Steuergerät-Reset (0x11), Flashen (0x34/0x36/0x37) — liegt hinter Security Access (0x27). Das Gateway antwortet auf eine Seed-Anfrage, aber der Schlüsselalgorithmus ist ein OEM-Geheimnis, das für dieses Auto nicht öffentlich ist. In der Praxis ist OBD-II hier also nur lesend: Fehlercodes und Daten ja, Steuern nein.
Die interessante Ausnahme: ein Werkstatt-Diagnosegerät aktiviert Funktionen wie HV-Hochfahren oder Vorklimatisierung über eine sicherheitsgeschützte Routine (0x31) über denselben Diagnose-CAN. Der Diagnoseanschluss ist für die Steuerung also architektonisch keine Sackgasse — mit dem richtigen Security-Access-Schlüssel ließe sich die Vorklimatisierung im Prinzip direkt über OBD-II befehlen, ohne Anzapfen eines internen Busses. Der Schlüssel ist das fehlende Stück (siehe Roadmap).
Alles Standard
Darunter steckt schlichtes UDS (ISO 14229) über ISO-TP (ISO 15765-2) auf 500 k / 11 Bit CAN — auf Protokollebene nichts Proprietäres. Das heißt, gängige offene Werkzeuge funktionieren: ein kleiner ISO-TP- + UDS-Client in Python oder Diagnosewerkzeuge von der Stange sprechen mit diesem Auto. Nicht offen sind das Datenwörterbuch (welche DID was bedeutet, mit welcher Skalierung) und der Security-Access-Schlüssel — beide stecken in der Diagnosedatenbank des Herstellers.
Verkabelung & Werkzeug
Ein USB-CAN-Adapter der CANable-Klasse (gs_usb) auf 500 k / 11 Bit, aus Python angesteuert (Rohframes + eine kleine ISO-TP-Schicht für mehrteilige UDS-Botschaften).
- CAN-H → OBD-Pin 6, CAN-L → OBD-Pin 14 verdrahten, Masse an Pin 4/5. Wenn du das falsch machst, sieht es genau wie ein toter Bus aus.
- DIP-Schalter des Adapters: Boot OFF (Betrieb), R120 OFF (der OBD-II-Bus ist schon mit 2×120 Ω terminiert). Eine DIP-Änderung wirkt erst nach komplettem Aus- und Wiedereinstecken.
- Prüfe die Verdrahtung, indem du beim aktiven Abtasten die TX- und RX-LEDs des Adapters blinken siehst.