Service Interaction Protocol
Read DTC Information
0x19Protocol Identifier
The primary service for retrieving diagnostic trouble codes, status information, freeze frames, and extended data from the ECU.
Overview
ISO 14229-1
“This service allows the client to request diagnostic trouble code (DTC) information from the server, including the status of DTCs, snapshot data (Freeze Frame), and extended data.”
Common Sub-Functions
Hex | Name | Description |
|---|---|---|
| 0x01 | reportNumberOfDTCByStatusMask | Count DTCs matching a status mask. |
| 0x02 | reportDTCByStatusMask | List all DTCs matching a status mask. |
| 0x04 | reportDTCSnapshotRecordByDTCNumber | Retrieve Freeze Frame data (speed, rpm, etc) for a fault. |
| 0x06 | reportDTCExtDataRecordByDTCNumber | Retrieve Extended Data (counters, aging, heuristics). |
| 0x0A | reportSupportedDTC | List ALL DTCs supported by this ECU strategy. |
DTC Status Byte
Each DTC has an 8-bit status field indicating its current state (Valid, Active, Confirmed, etc.). The most commonly checked bits are Pending (Bit 2) and Confirmed (Bit 3).
Bit 0
TestFailed
Failed most recent test
Bit 1
FailedThisCycle
Failed this drive cycle
Bit 2
Pending
Potential fault (debouncing)
Bit 3
Confirmed
Fault verified (MIL On)
Bit 4
TestNotExecSinceClear
Not run since clear
Bit 5
FailedSinceClear
Failed since clear
Bit 6
TestNotExecThisCycle
Not run this cycle
Bit 7
WarningReq
Requesting Dashboard Light
Retrieval Workflow

Click to Enlarge
Decision logic for handling different retrieval sub-functions.
Read By Status (0x02)
“Give me all Confirmed DTCs” (Mask 0x08).
tx_packet
Request
19 02 08> Read DTCs with 'Confirmed' bit set
rx_packet
Response
59 02 79 P0 12 34 2F ...> List of DTCs + Status 0x2F
Read Snapshot (0x04)
“Give me Freeze Frame #01 for P01234”.
tx_packet
Request
19 04 P0 12 34 01> DTC P01234, Record 01
rx_packet
Response
59 04 P0 12 34 2F 01 [Data...]> Snapshot Data follows
Negative Response Codes
Logic_Exceptions
Critical_Error_Paths
NRC_0x12
Sub-Function Not Supported
The requested sub-function is not implemented.
SEQ_DIAGRAM_DUMPOFFSET_0x7F
Sub-Function Not Supported Flow
2 stepsTester
ECU
NRC_0x13
Incorrect Message Length
Missing parameters (e.g., Sub-function 0x02 requires a mask byte).
SEQ_DIAGRAM_DUMPOFFSET_0x7F
Incorrect Message Length Flow
2 stepsTester
ECU
NRC_0x31
Request Out Of Range
The requested DTC or Record Number does not exist.
SEQ_DIAGRAM_DUMPOFFSET_0x7F
Request Out Of Range Flow
2 stepsTester
ECU