International Standards Organization (ISO) 14229 Diagnostic Trouble Code (DTC) Descriptions
The ISO 14229 is a global, diagnostic communication standard. The ISO 14229 is a set of standard diagnostic messages that can be used to diagnose any vehicle module in use and at the assembly plant. The ISO 14229 is similar to the Society of Automotive Engineers (SAE) J2190 diagnostic communication standard that was used by all original equipment manufacturers (OEMs) for previous communication protocols.
The ISO 14229 changes the way PIDs, DTCs, and OSC is processed internally in the PCM and in the scan tool software. Most of the changes are to make data transfer between electronic modules more efficient, and the amount and type of information that is available for each DTC. This information may be helpful in diagnosing driveability concerns.
Historical Diagnostic Trouble Codes (DTCs)
Historical DTCs use bit 5 (the DTC test failed at least once since last code clear) to indicate that a DTC is no longer confirmed or pending, but has failed at least once since the last time the DTCs were cleared. The bit 5 is designed to eventually age out and clear in 80 drive cycles (255 in the future). The scan tool does not allow a technician to retrieve historical DTCs unless there are no active DTCs present. This information, in conjunction with manufacturer freeze frame and snapshot data, may be useful in diagnosing a noticeable fault that did not progress to MIL status, or an extended amount of time has occurred before diagnosis, and the confirmed DTC has cleared.
DTC Structure
Like all digital signals, DTCs are sent to the scan tool as a series of 1s and 0s. Each DTC is made up of 2 data bytes, each consisting of 8 bits that can be set to 1 or 0. In order to display the DTCs in the conventional format, the data is decoded by the scan tool to display each set of 4 bits as a hexadecimal number (0 to F). For example, P0420 Catalyst System Efficiency Below Threshold (Bank 1).
| DTC Byte 1 | DTC Byte 2 | ||
|---|---|---|---|
| 0000 | 0100 | 0010 | 0000 |
| P0 | 4 | 2 | 0 |
The table below shows how to decode the bits into hex digits.
| Binary Bit Pattern | Hex Digit | Binary Bit Pattern | Hex Digit |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
The first 4 bits of a DTC do not convert directly into hex digits. The conversion into different types of DTCs (P, B, C and U) is defined by SAE J2012. This standard contains DTC definitions and formats.
| Binary Bit Pattern | SAE DTC Type | Binary Bit Pattern | SAE DTC Type |
|---|---|---|---|
| 0000 | P0 | 1000 | B0 |
| 0001 | P1 | 1001 | B1 |
| 0010 | P2 | 1010 | B2 |
| 0011 | P3 | 1011 | B3 |
| 0100 | C0 | 1100 | U0 |
| 0101 | C1 | 1101 | U1 |
| 0110 | C2 | 1110 | U2 |
| 0111 | C3 | 1111 | U3 |
ISO 14229 sends 2 additional bytes of information with each DTC, a failure type byte and a status byte.
| DTC Byte 1 | DTC Byte 2 | Failure Type Byte | Status Byte | ||||
|---|---|---|---|---|---|---|---|
| 0000 | 0100 | 0010 | 0000 | 0000 | 0000 | 1111 | 0101 |
| P0 | 4 | 2 | 0 | 0 | 0 | F | 9 |
All ISO 14229 DTCs are 4 bytes long instead of 3 or 2 bytes long. Additionally, the status byte for ISO 14229 DTCs is defined differently than the status byte for previous applications with 3 byte DTCs.
Failure Type Byte
The failure type byte is designed to describe the specific failure associated with the basic DTC. For example, a failure type byte of 1C means circuit voltage out of range, 73 means actuator stuck closed. When combined with a basic component DTC, it allows one basic DTC to describe many types of failures.
| DTC Byte 1 | DTC Byte 2 | Failure Type Byte | Status Byte | ||||
|---|---|---|---|---|---|---|---|
| 0000 | 0100 | 0010 | 0000 | 0001 | 1100 | 1010 | 1111 |
| P0 | 1 | 1 | 0 | 1 | C | A | F |
For example, P0110:1C-AF means IAT sensor circuit voltage out of range. The base DTC, P0110, means IAT sensor circuit, while the failure type byte 1C means circuit voltage out of range. This DTC structure was designed to allow manufacturers to more precisely identify different kinds of faults without always having to define new DTC numbers.
The PCM does not use failure type bytes and always sends a failure type byte of 00 (no sub type information). This is because OBD II regulations require manufacturers to use 2 byte DTCs for generic scan tool communications. Additionally, the OBD II regulations require the 2 byte DTCs to be very specific, so there is no additional information that the failure type byte could provide.
A list of failure type bytes is defined by SAE J2012 but is not described here because the PCM does not use the failure type byte.
Status Byte
The status byte is designed to provide additional information about the DTC, such as when the DTC failed, when the DTC was last evaluated, and if any warning indication has been requested. Each of the 8 bits in the status byte has a precise meaning that is defined in ISO 14229.
The protocol is that bit 7 is the most significant and left most bit, while bit 0 is the least significant and right most bit.
| Most Significant Bits | Least Significant Bits | ||||||
|---|---|---|---|---|---|---|---|
| Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
DTC Status Bit Definitions
Refer to the following status bit descriptions:
Bit 7
- 0 - The ECU is not requesting warning indicator to be active
- 1 - The ECU is requesting warning indicator to be active
Bit 6
- 0 - The DTC test completed this monitoring cycle
- 1 - The DTC test has not completed this monitoring cycle
Bit 5
- 0 - The DTC test has not failed since last code clear
- 1 - The DTC test failed at least once since last code clear
Bit 4
- 0 - The DTC test completed since the last code clear
- 1 - The DTC test has not completed since the last code clear
Bit 3
- 0 - The DTC is not confirmed at the time of the request
- 1 - The DTC is confirmed at the time of the request
Bit 2
- 0 - The DTC test completed and was not failed on the current or previous monitoring cycle
- 1 - the DTC test failed on the current or previous monitoring cycle
Bit 1
- 0 - The DTC test has not failed on the current monitoring cycle
- 1 - The DTC test failed on the current monitoring cycle
Bit 0
- 0 - the DTC is not failed at the time of request
- 1 - The DTC is failed at the time of request
For DTCs that illuminate the MIL, a confirmed DTC means the PCM has stored a DTC and has illuminated the MIL. If the fault has corrected itself, the MIL may no longer be illuminated but the DTC still shows a confirmed status for 40 warm up cycles at which time the DTC is erased.
For DTCs that do not illuminate the MIL, a confirmed DTC means the PCM has stored a DTC. If the fault has corrected itself, the DTC still shows a confirmed status for 40 warm up cycles at which time the DTC is erased.
To determine if a test has completed and passed, such as after a repair, information can be combined from 2 bits as follows:
If bit 6 is 0 (the DTC test completed this monitoring cycle), and bit 1 is 0 (the DTC test has not failed on the current monitoring cycle), then the DTC has been evaluated at least once this drive cycle and was a pass.
If bit 6 is 0 (the DTC test completed this monitoring cycle) and bit 0 is 0 (the DTC test is not failed at the time of request), then the most recent test result for that DTC was a pass.
The status byte bits can be decoded as a 2 digit hexadecimal number, and displayed as the last 2 digits of the DTC, for example for DTC P0110:1C-AF, AF represents the status byte info.
| Status Byte | |||||||
| A equals 1010 | F equals 1111 | ||||||
| Bit 7 equals 1 | Bit 6 equals 0 | Bit 5 equals 1 | Bit 4 equals 0 | Bit 3 equals 1 | Bit 2 equals 1 | Bit 1 equals 1 | Bit 0 equals 1 |