Skip to content
AutoST by Zyberum GmbH
Menu
GlossaryUDS

ReadDTCInformation (0x19)

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

Updated This page as Markdown

In short

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.

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:

DirectionBytesMeaning
Request19 02 FFreportDTCByStatusMask, mask 0xFF
Positive response59 02 FF 01 23 45 2F ...status availability mask, then DTC 0x012345 with status 0x2F
Negative response7F 19 12subFunctionNotSupported

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

Frequently asked questions

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

Related pages

See it on your ECU

A term that matters for your ECU?

In 15 minutes we tell you how AutoST tests it, what a finding looks like and what it means for your ISO/SAE 21434 evidence.

  • Direct answer from an ECU security engineer
  • Which test covers the term
  • Free and without obligation
Tom Zaubermann

Your demo is withTom ZaubermannFounder of Zyberum, ex-lead of the VW InCar Security Testing Lab

Already trusted by Tier 1, Tier 2 suppliers and OEMs. References on request.

Call us: +49 176 439 17074automotive@zyberum.com

Or send us a message

We reply within one business day.

Call usAsk the AutoST team

Pick a time that suits you

Open in a new tab