Service Interaction Protocol
Read DTC Information
Overview
“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.”
Message Structure
◆ PROTOCOL ANATOMY
0x19 READ DTC INFORMATION
0x19 RESPONSE
Suppress Positive Response (SPRMIB)
Response Suppression Logic (SPRMIB)
Setting bit 7 of the sub-function byte (0x82) suppresses the 0x59 positive response frame. Used in automated broadcast sweeps to clear DTC buffers or update internal registers without CAN bus contention.
!Critical: NRC 0x7F bypasses suppression logic and will always broadcast.
All Sub-Functions
SID 0x19 supports 26+ subfunctions. Use the explorer below to navigate them — filter by category and click any subfunction to see its request/response format, parameters, and access requirements.
Returns all DTCs whose status byte has at least one matching bit with the requested mask. Each DTC is returned as 3 bytes + 1 status byte.
DTCStatusMask (1B) — 0xFF returns all stored DTCs; 0x08 = Confirmed only
Most common subfunction. Use mask 0xFF for a full scan, 0x08 for confirmed faults only.
DTC Status Byte
Each DTC carries an 8-bit status field indicating its current lifecycle state. Toggle bits below to simulate different fault scenarios and see real-time interpretation. The most commonly checked bits are Bit 3 (Confirmed) and Bit 0 (TestFailed).
All flags clear — no fault history detected.
DTC Numbering Format
DTCs are encoded as 3 bytes per ISO 14229-1 Annex D. Use the calculator below to convert between human-readable codes (P0301) and their wire-encoded byte representation — in either direction.
Engine, transmission, fuel system
Service Interaction Workflows
Step-by-step simulations of the four standard diagnostic sequences. Select a workflow and run the simulation to watch the byte-level message exchange unfold.
Quick vehicle health check: count DTCs → list all → retrieve a freeze frame.
Starter · 8 frames19 01 FFCount All DTCs59 01 79 01 00 033 DTCs Found19 02 FFList All DTCs59 02 79 01 03 01 D9 …DTC List + Status19 03List Snapshot IDs59 03 01 03 01 01P0301 has Record #119 04 01 03 01 FFRead Freeze Frame59 04 01 03 01 D9 01 …Freeze Frame DataPress Simulate to animate the full message sequence.
Session & Security Requirements
Most subfunctions work in DEFAULT session, but mirror memory and user-defined data require elevated access. Click any row or filter by access level to explore the full matrix.
Session & Security Requirements
Which DTC readout sub-functions run in each session, and which need security access. Select a row for details.
| DTC Sub-function | DEFAULT 0x01 | EXTENDED 0x03 | PROGRAMMING 0x02 | Security |
|---|---|---|---|---|
| ✓ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | Optional | |
| ✓ | ✓ | ✓ | — | |
| ✗ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | — | |
| ✓ | ✓ | ✓ | — | |
| ✗ | ✓ | ✓ | Level 1 |
Security State Behavior
Standard emission and powertrain DTC read sub-functions (0x01, 0x02, 0x04, 0x06, 0x0A) operate freely without security access. Proprietary mirror memory sub-functions (0x0F, 0x13, 0x15) return NRC 0x33 (SecurityAccessDenied) on secure gateways.
Access to specialized OEM freeze frames, secure black-box flight recorder logs, and mirror memory DTC buffers is fully permitted.
Triggered when this service or requested resource requires an active security unlock that has not been granted.
Triggered during unlock attempts if the calculated key fails ECU cryptographic verification.
Enforced delay lockout if the maximum number of failed key submissions (typically 3) has been exceeded.
Service Dependencies
0x19 retrieves fault status masks, snapshot freeze frames, and extended diagnostic data. Select a node to inspect interactions.
Supported DTCs — Subfunction 0x0A
Subfunction 0x0A returns all DTCs the ECU can potentially detect — not just stored faults. No status mask required; no status bytes in response. Filter and search the catalog below.
Key distinction: 0x0A is unaffected by SID 0x14 clears. It shows ECU capability, not current DTC memory state. Use it for tool configuration, not fault diagnosis.
Sub 0x0A returns a 3-byte DTC and 1 status byte per record. This catalog shows capability examples, not live status values. Response: 59 0A [AvailMask] [B0 B1 B2 Status] [B0 B1 B2 Status] …
Negative Response Codes
EXCEPTION_MATRIX_V3
The requested DTC report type is not implemented by the ECU.
This negative response indicates a rejection while processing the Read DTC Information (SID 0x19) request. Verify preconditions, session levels, and message formatting per ISO 14229.
Best Practices
Click any category to expand it. Each practice card reveals why it matters, when to apply it, related NRCs, and code examples.
💡 Tip: Expand each practice card to see the "Why It Matters," timing guidance, related error codes, and code examples where applicable.