ReadDTCInformation (0x19)
UDS ReadDTCInformation (0x19) liest Diagnose-Fehlercodes und ihren Status aus einem Steuergerät. Die Sub-Funktionen, Request- und Response-Bytes und was zu prüfen ist.
Aktualisiert Diese Seite als Markdown
Kurz gesagt
ReadDTCInformation (0x19) liest Diagnose-Fehlercodes (DTCs) und ihren Status aus einem Steuergerät. Die Sub-Funktion wählt den Report-Typ, etwa reportDTCByStatusMask (02): Der Request 19 02 FF fragt alle DTCs an, die zur Maske passen, die positive Antwort 59 02 trägt die Status-Verfügbarkeitsmaske und eine Liste aus drei Byte langen DTCs mit Status. Er ist meist in der Default Session verfügbar und der Hauptweg, den Fehlerspeicher zu lesen.
Was ist ReadDTCInformation (0x19)?
ReadDTCInformation liest den Fehlerspeicher eines Steuergeräts. Das Sub-Funktions-Byte wählt den Report-Typ, der entscheidet, was das Steuergerät zurückgibt: eine Anzahl, eine gefilterte DTC-Liste, einen Snapshot (Freeze Frame) oder erweiterte Daten zu einem DTC.
Ein normaler Ablauf:
| Richtung | Bytes | Bedeutung |
|---|---|---|
| Request | 19 02 FF | reportDTCByStatusMask, Maske 0xFF |
| Positive Antwort | 59 02 FF 01 23 45 2F ... | Status-Verfügbarkeitsmaske, dann DTC 0x012345 mit Status 0x2F |
| Negative Antwort | 7F 19 12 | subFunctionNotSupported |
Weitere typische negative Antworten sind 7F 19 13 (incorrectMessageLengthOrInvalidFormat, fehlende Statusmaske) und 7F 19 31 (requestOutOfRange, unbekannte DTC-Nummer bei einem Snapshot-Request).
Wo ist es definiert?
ISO 14229-1:2020 definiert ReadDTCInformation (0x19) im Stored data transmission functional unit, mit der vollständigen Liste der Report-Typ-Sub-Funktionen, dem drei Byte langen DTC-Format und den acht Status-Bits. Die DTC-Nummerierung und der Bezug zu OBD-Fehlercodes stehen in Begleitnormen, aber der UDS-Service und seine Statusmaske stehen in ISO 14229-1. Der Transport auf CAN ist ISO 15765-2, sodass eine lange DTC-Liste als Mehr-Frame-Nachricht ankommt.
Was es in der Praxis bedeutet
Der Fehlerspeicher wird in fast jeder Diagnosesitzung gelesen, und der Service ist normalerweise in der Default Session verfügbar, weil er nur liest. Bei der Validierung wird geprüft:
- die unterstützten Sub-Funktionen passen zur Spezifikation, und unbekannte geben NRC 0x12;
- ein Request ohne Statusmaske gibt NRC 0x13;
- die Status-Verfügbarkeitsmaske und die Status-Bits pro DTC sind konsistent;
- Snapshot- und Extended-Data-Requests für einen unbekannten DTC geben NRC 0x31;
- das Lesen von DTCs ändert die gespeicherten Fehler nicht.
Beim Security-Testen ist das DTC-Verhalten auch ein Signal. Ein Fuzzing-Lauf, der die DTC-Anzahl springen lässt, hat wahrscheinlich einen Fehlerpfad getroffen, der eine Meldung wert ist, also dient der Service zugleich als Monitor.
Wie AutoST es testet
AutoST liest DTC-Informationen bei der Enumeration, sodass das Ergebnis festhält, ob der Fehlerspeicher lesbar ist und in welcher Session. In der Fuzzing-Engine liest ein optionaler DTC-Count-Monitor 0x19 zwischen den Iterationen und meldet jede Änderung der Fehlercode-Anzahl während eines Laufs, was einen wachsenden Fehlerspeicher in ein Signal dafür verwandelt, dass ein Payload einen Fehlerpfad erreicht hat. Die Änderung wird neben dem exakten Payload festgehalten.
FAQ
Häufig gestellte Fragen
Was ist ein DTC-Status-Byte?
Jeder DTC trägt einen ein Byte langen Status mit Bits wie testFailed, testFailedThisOperationCycle, confirmedDTC und testNotCompletedThisOperationCycle. ISO 14229-1 definiert die acht Bits, sodass ein Tester einen gespeicherten, bestätigten Fehler von einem nur anstehenden unterscheiden kann.
Welche Sub-Funktionen sind verbreitet?
reportNumberOfDTCByStatusMask (0x01), reportDTCByStatusMask (0x02), reportDTCSnapshotRecordByDTCNumber (0x04), reportDTCExtendedDataRecordByDTCNumber (0x06) und reportSupportedDTC (0x0A) implementieren die meisten Steuergeräte.
Ändert das Lesen von DTCs etwas?
Nein. ReadDTCInformation liest nur; das Löschen des Fehlerspeichers ist ein eigener Service, ClearDiagnosticInformation (0x14). Lesen lässt sich deshalb sicher während der Enumeration ausführen.
Quellen
Passende Seiten
- GlossarDTC (Diagnostic Trouble Code, Fehlercode)Ein DTC ist ein Fehlercode, den ein Steuergerät bei einem erkannten Problem speichert. Das 3-Byte-Format in UDS, das Status-Byte, 0x19, 0x14 und die Rolle beim Fuzzing.
- GlossarUDS (Unified Diagnostic Services)UDS (ISO 14229) ist das Diagnoseprotokoll der meisten Steuergeräte: Sessions, Services, DIDs, SecurityAccess. Was es definiert und warum es die erste Angriffsfläche ist.
- GlossarControlDTCSetting (0x85)UDS ControlDTCSetting (0x85) schaltet das Speichern von Fehlercodes eines Steuergeräts während eines Tests ein oder aus. Die Sub-Funktionen, Bytes und was zu prüfen ist.
- PlattformKenne jede Tür ins ECU.AutoST enumeriert ein ECU über UDS: Diagnose-Endpunkte, Sessions, alle 255 Services und lesbare DIDs, plus XCP/CCP. Riskante Services werden markiert.
- PlattformEine Zahl, die du verteidigen kannst, Nachweise, die du ablegen kannst.AutoST bewertet das ECU-Risiko aus 26 gewichteten UDS-Services auf einer Skala von 0 bis 10 und erstellt PDF-Testnachweise, plus SARIF, CSV und JSON.
- Kostenlose ToolsUDS-Nachrichten-DecoderUDS-Bytes aus einem Trace einfügen und sehen, was sie bedeuten: Service, Sub-Funktion, Session, DIDs, Routine Identifier, SecurityAccess-Level oder NRC, nach ISO 14229-1.
