Complete Guide

DTC Codes: What a Fault Code Is and How to Read It

Understand fault codes: OBD-II format (P0217), J1939 format (SPN + FMI), active vs stored codes, dashboard lamps and the right reaction.

8 min read

What is a DTC?

DTC stands for Diagnostic Trouble Code. It is the message a vehicle control unit records when a value it monitors falls outside expected limits. One point is worth making up front: a fault code is not a diagnosis. It tells you which parameter deviated and in what way. It does not tell you which part to replace. An oxygen sensor code can come from the sensor itself, from the harness, from an air leak upstream or from an injection problem. Four causes, one code. Sorting that out is the technician's job. For a fleet manager, the value of a code is therefore not remote diagnosis. It is knowing that a vehicle reported something today, rather than finding out at the next shop visit.

The OBD-II format: reading a P0217 code

An OBD-II code has five characters. Each one carries information. First letter: the system involved P: powertrain (engine, transmission) B: body (cabin, airbags, comfort) C: chassis (braking, steering, suspension) U: network and communication between control units Second character: the code's origin 0: generic code defined by the SAE standard, identical across manufacturers 1: manufacturer-specific code Third character: the subsystem Air intake, ignition system, fuel circuit, auxiliary controls, and so on. Fourth and fifth characters: the specific fault Example: P0217 reads as "powertrain, generic code, engine overheat". The practical implication: a P0 code is easy to document, a P1 code requires the manufacturer's documentation.

The J1939 format: SPN and FMI

On a heavy vehicle, codes look nothing like OBD-II codes. They are made of two numbers. SPN: the parameter involved For example SPN 110 for coolant temperature, SPN 190 for engine speed, SPN 100 for engine oil pressure. FMI: the failure mode Value above normal range, value below, erratic data, short to ground, short to battery, open circuit, inconsistent value, no communication. An occurrence count comes with it, showing how many times the fault has appeared. A code seen once in three months and a code seen forty times this week call for different reactions. Active codes are broadcast in the DM1 message, previously active codes in DM2. The SPN + FMI format is in fact more informative than the five-character OBD-II code: it explicitly separates what deviated from how it deviated.

Active codes, stored codes and lamps

An active code flags a fault present right now. A stored code flags a fault that appeared and then cleared, kept in the control unit's memory. A stored code is not an unimportant code. An intermittent fault returning every couple of weeks generally becomes permanent eventually, and usually at the worst moment. On the dashboard side, the J1939 DM1 message also carries the state of four lamps: • Malfunction indicator lamp (MIL): emissions-related fault • Amber warning lamp: have it checked, no immediate urgency • Red stop lamp: stop required, the vehicle should not continue • Protect lamp: a vehicle parameter is outside its safe range That hierarchy is useful in operations: it separates what waits for the next planned service from what forces an immediate stop.

What Tralogit does with fault codes

Codes reported by the vehicle are tied to that vehicle, timestamped and kept in its history. Three concrete uses: Alert at the moment it appears The manager hears about the code when it appears, not at the next return to the depot. Context rather than an isolated code A code arrives attached to the vehicle, the assigned driver, the trip in progress and the maintenance history. The same code on a new vehicle and on one with 900,000 km does not tell the same story. Searchable history Recurrence of a code over several months becomes visible, and that is exactly the information a one-off scan-tool reading misses. A limit we would rather write down than let you assume: Tralogit reports and contextualises codes. Diagnosis and repair remain the work of a qualified technician, on the vehicle.

FAQ

Should a vehicle stop as soon as a code appears?
It depends on the code and the associated lamp. A red stop lamp requires stopping. An amber lamp calls for a check without immediate urgency. When in doubt, the call belongs to the technician, not the platform.
Can a fault code be cleared?
Technically yes, with a diagnostic tool. But clearing a code without addressing the cause only removes the information: if the fault persists, the code comes back.
Why do two vehicles show different codes for the same problem?
Because manufacturer codes (P1 in OBD-II) and monitoring strategies vary between makes. Two control units can detect the same physical anomaly along different paths.

Ready to Transform Your Fleet?

Request a Demo