# ReadDTCInformation (0x19)

> ReadDTCInformation (0x19) reads diagnostic trouble codes (DTCs) and their status from an ECU. The sub-function selects the report type, for example reportDTCByStatusMask (02): the request 19 02 FF asks for all DTCs matching the mask, the positive response 59 02 carries the status availability mask and a list of three-byte DTCs with status. It is usually available in the default session and is the main way to read fault memory.

UDS ReadDTCInformation (0x19) reads diagnostic trouble codes and their status from an ECU. The sub-functions, request and response bytes and what to validate.

Source: https://auto-st.com/glossary/read-dtc-information-0x19 · Updated: 2026-10-07

## What is ReadDTCInformation (0x19)?

ReadDTCInformation reads the fault memory of an ECU. The sub-function byte selects the report type, which decides what the ECU returns: a count, a filtered list of DTCs, a snapshot (freeze frame) or extended data for one DTC.

A normal exchange:

| Direction | Bytes | Meaning |
|---|---|---|
| Request | `19 02 FF` | reportDTCByStatusMask, mask 0xFF |
| Positive response | `59 02 FF 01 23 45 2F ...` | status availability mask, then DTC 0x012345 with status 0x2F |
| Negative response | `7F 19 12` | subFunctionNotSupported |

Other typical negative responses are `7F 19 13` (incorrectMessageLengthOrInvalidFormat, missing status mask) and `7F 19 31` (requestOutOfRange, unknown DTC number for a snapshot request).

## Where is it defined?

ISO 14229-1:2020 defines ReadDTCInformation (0x19) in the Stored data transmission functional unit, with the full list of report-type sub-functions, the three-byte DTC format and the eight status bits. DTC numbering and the relationship to OBD trouble codes are described in companion standards, but the UDS service and its status mask are in ISO 14229-1. The transport on CAN is ISO 15765-2, so a long DTC list arrives as a multi-frame message.

## What it means in practice

Fault memory is read on nearly every diagnostic session, and the service is normally available in the default session because it only reads. In validation, engineers check:

- the supported sub-functions match the specification, and unknown ones give NRC 0x12;
- a request missing the status mask gives NRC 0x13;
- the status availability mask and the per-DTC status bits are consistent;
- snapshot and extended-data requests for an unknown DTC give NRC 0x31;
- reading DTCs does not change the stored faults.

During security testing, DTC behaviour is also a signal. A fuzzing run that makes the DTC count jump has probably hit a fault path worth reporting, so the service doubles as a monitor.

## How AutoST tests it

AutoST reads DTC information during enumeration, so the result records whether fault memory is readable and in which session. In the fuzzing engine an optional DTC-count monitor reads 0x19 between iterations and flags any change in the trouble-code count during a run, which turns a growing fault memory into a signal that a fuzzed payload reached a fault path. The change is recorded alongside the exact payload.

## FAQ

**What is a DTC status byte?**

Each DTC carries a one-byte status with bits such as testFailed, testFailedThisOperationCycle, confirmedDTC and testNotCompletedThisOperationCycle. ISO 14229-1 defines the eight bits, so a tester can tell a stored, confirmed fault from one that is merely pending.

**Which sub-functions are common?**

reportNumberOfDTCByStatusMask (0x01), reportDTCByStatusMask (0x02), reportDTCSnapshotRecordByDTCNumber (0x04), reportDTCExtendedDataRecordByDTCNumber (0x06) and reportSupportedDTC (0x0A) are the ones most ECUs implement.

**Does reading DTCs change anything?**

No. ReadDTCInformation only reads; clearing fault memory is a separate service, ClearDiagnosticInformation (0x14). Reading is therefore safe to run during enumeration.

## Sources

- [ISO 14229-1:2020 Road vehicles, Unified diagnostic services (UDS), Part 1: Application layer, Stored data transmission functional unit, ReadDTCInformation (0x19)](https://www.iso.org/standard/72439.html)
- [ISO 15765-2 Road vehicles, Diagnostic communication over CAN (DoCAN), Part 2: Transport protocol and network layer services](https://www.iso.org/standard/84211.html)

## Related

- [DTC (Diagnostic Trouble Code)](https://auto-st.com/glossary/dtc)
- [UDS (Unified Diagnostic Services)](https://auto-st.com/glossary/uds)
- [ControlDTCSetting (0x85)](https://auto-st.com/glossary/control-dtc-setting-0x85)
- [Know every door into the ECU.](https://auto-st.com/uds-enumeration)
- [A number you can defend, evidence you can file.](https://auto-st.com/risk-scoring-reports)
- [UDS Message Decoder](https://auto-st.com/tools/uds-message-decoder)

---
AutoST by Zyberum. Canonical page: https://auto-st.com/glossary/read-dtc-information-0x19
