How to read an OBD2 fault code

What the five characters of a fault code mean, how to work out which vehicle system they refer to and why a code does not necessarily say which component has failed.

Go to the documented codes

A fault code, abbreviated to DTC (Diagnostic Trouble Code), is normally represented by one letter and four characters, such as P0299. Every position holds information that helps to narrow the field of diagnosis, even when the code has never been seen before.

More recent diagnostic systems also provide for DTCs that can include additional information about the type of fault.

The first letter: which vehicle system

The first letter identifies the system the code concerns and immediately narrows the field of diagnosis.

  • P — Powertrain: powertrain systems, such as the engine, fuel system, ignition, emission control and transmission.
  • B — Body: bodywork and cabin systems, such as airbags, doors, seats, lighting, climate control and other comfort and safety systems.
  • C — Chassis: systems relating to the chassis and to vehicle dynamics, such as brakes, ABS/ESP, suspension and steering.
  • U — Network: communication and integration systems between the control units. A U code may indicate a communication problem and may be down to the network, wiring, connectors, power supplies or a control unit that is not communicating correctly.

The second position: standard or manufacturer code

The second position helps to identify the area the code belongs to and, in P DTCs, it also distinguishes between ranges governed by the standard and ranges reserved for manufacturers.

For example, P0xxx and P2xxx belong to standardised areas, while P1xxx and some ranges in the P3xxx series are reserved for manufacturers.

For this reason, the precise meaning of a DTC must always be checked in its definition and, where necessary, in the manufacturer's technical documentation.

The third position: which subsystem

In P0, the third position helps to identify the family or the technical area concerned. In code P0299, for example, the number 2 places the DTC in the corresponding family of codes. It is a first useful pointer for guiding the search, but on its own it is not enough to identify the component or the fault.

P0100 – P0299
Air and fuel metering: air flow meter, pressure sensors, mixture control, injectors and their circuits.
P0300 – P0399
Ignition and misfires: this includes the misfire codes. P0300 indicates a misfire detected at random or on several cylinders, while codes such as P0301, P0302 and P0303 identify cylinders 1, 2 and 3 respectively.
P0400 – P0499
Emission control: exhaust gas recirculation, catalytic converter, evaporative system and secondary air injection. The diesel particulate filter codes are found mainly in the P2xxx series.
P0500 – P0599
Vehicle speed, idle speed and auxiliary circuits.
P0600 – P0699
Electronic control systems and output circuits: this includes, among others, codes relating to circuits, performance and possible internal faults in the control systems.
P0700 – P0999
Transmission and its control systems, including automatic gearboxes and other types of electronically managed transmission.

The last characters: what the specific fault is

The last characters complete the identification of the DTC and make it possible to pinpoint the specific fault described by the code. The definition may refer, for example, to an open circuit, a short circuit, a signal out of range, incorrect performance or an inconsistent value.

There is no universal rule, however, by which a given final digit always corresponds to the same type of fault: the meaning has to be interpreted on the basis of the definition of the specific DTC.

In some codes the letters A–F can also appear, because the characters used may belong to hexadecimal notation.

DTCs can contain additional information

The most common representation of an OBD DTC consists of five characters, such as P0299. However, more recent diagnostic standards also provide for structures that can attach additional information about the type of fault to the code (Failure Type).

For this reason, when interpreting a DTC it is not enough to analyse only the individual characters of the code: the complete definition provided by the diagnostic system must also be considered and, where available, the corresponding type of fault.

The key point

The code says where to look, not which component to replace

A fault code identifies an abnormal condition detected by the system, but not necessarily the component responsible. To get to the cause you have to check the possible origins of the problem.

Take a code reporting an open circuit to a sensor. The control unit has detected a condition consistent with an open circuit or with a signal that does not match the one expected. The cause, however, may be something else. For example:

  • Faulty sensor.
  • Broken or damaged wiring.
  • Corroded connector, or one with intermittent contact.
  • Loss of earth, with no fault in the sensor.
  • Missing or faulty power supply to the circuit.
  • Short circuit or other electrical problem.
  • Fault in the control unit or in the control circuit.

Replacing the sensor therefore solves only one of the possible scenarios. In the other cases the fault remains and the code can come back.

More codes do not necessarily mean more faults

The presence of several codes does not necessarily mean that there are as many faults. A single fault can in fact generate several codes as a consequence, for example where there are power supply, earth or communication problems.

It is possible, however, that several independent faults are present as well. That is why it is important to analyse the codes together with the conditions under which they were detected, the history and the other diagnostic data available, instead of simply concentrating on the first one in the list.

Pending, stored or permanent: what does it mean?

The status of the DTC indicates how the diagnostic system has detected and handled the fault condition.

  • Pending — the system has detected a fault condition, but not all the criteria needed to classify it as a confirmed fault have been met yet. Depending on the system and on the monitoring strategy, the MIL warning light may still be off.
  • Stored/Confirmed — the fault has met the criteria set by the control unit to be recorded as a confirmed DTC. How confirmation works depends on the monitor and on the diagnostic strategy adopted.
  • Permanent DTC — on systems that support this function, the DTC cannot be cleared manually with the normal clear command. It is removed automatically by the system when the relevant monitors verify that the fault condition is no longer present.

Clearing a code does not mean fixing the fault

Clearing a code can be useful, once the checks and the necessary repair have been carried out, for checking whether the fault is still present or whether the code was left over from an earlier problem.

Clearing does not fix the fault: if the cause is still present, the system may detect it again.

Before clearing DTCs it is important to capture all the diagnostic information available, because clearing them can mean losing some of the data associated with the fault and, on OBD systems, resetting some diagnostic monitors.

Before clearing the code it is important to consult the freeze frame data, when available: a record of the vehicle's main parameters at the moment the system detected the fault, such as engine speed, temperature, engine load and road speed.

On intermittent faults this information can be particularly useful in working out under what conditions the problem occurs.

The same code can have different causes

For standardised DTCs, the definition of the code is shared according to the standard. The actual cause of the fault and the diagnostic strategy can change, however, depending on the engine, the year, the configuration of the vehicle and the manufacturer.

For DTCs belonging to the ranges reserved for the manufacturer, on the other hand, the relevant technical documentation must be consulted.

That is why the definition of the code, on its own, is not enough to complete a diagnosis. It helps to know which causes have been found on similar vehicles, which checks were carried out and which solution made it possible to fix the problem.

Sema Repair links fault codes to specific engines and to cases actually solved in the workshop, providing information that helps guide the diagnosis.

Would you like to see Sema Repair in action?

Get in touch and one of our sales team will show you everything Sema Repair can do and how it can help in your workshop.