Fleet managers care about codes for two reasons. The check engine light tells them a truck needs attention before it breaks down on a route, and the tracker reports those codes automatically. Installers care because a code that shows up after an install is our problem until we prove it isn't. This chapter covers what codes are, how to read them, and what to do when one appears on a vehicle we just worked on.
A Diagnostic Trouble Code (DTC) is a stored message from a vehicle module saying "I saw something outside normal." The engine computer, the body control module, the ABS module, and the transmission all set their own codes. When a code is serious enough, the module turns on a dash lamp: the check engine light, the ABS light, the airbag light.
Codes are stored on the vehicle's data bus and read through the OBD-II port on light-duty vehicles, or the 9-pin J1939 port on heavy trucks. See the Data Bus chapter.
Every OBD-II code is one letter and four numbers. Example: P0420.
The letter says which system:
| Letter | System |
|---|---|
| P | Powertrain (engine, transmission, emissions) |
| B | Body (doors, lights, airbags, climate) |
| C | Chassis (ABS, steering, suspension) |
| U | Network (modules can't talk to each other) |
The first number says who defined it:
The remaining three numbers identify the fault. The middle digit narrows the area (fuel, ignition, emissions, speed control, transmission), and the last two are the exact fault.
Common ones you'll see on fleet vehicles:
| Code | Meaning |
|---|---|
| P0300 | Random or multiple cylinder misfire |
| P0420 | Catalytic converter efficiency below threshold |
| P0455 | Large evaporative emissions leak (often a loose gas cap) |
| P0171 | Fuel system too lean |
| P0500 | Vehicle speed sensor fault |
| P0562 | System voltage low |
| P0563 | System voltage high |
| U0100 | Lost communication with engine control module |
| U0155 | Lost communication with instrument cluster |
The P05xx voltage codes and the U network codes are the ones that matter most to us. They're the codes a bad install can cause.
Heavy trucks use a different format: SPN and FMI.
SPN (Suspect Parameter Number) says what part or signal has the problem. Example: SPN 100 is engine oil pressure, SPN 168 is battery voltage.
FMI (Failure Mode Identifier) says what kind of problem, from 0 to 31. The common ones:
| FMI | Meaning |
|---|---|
| 0 | Data valid but above normal, most severe |
| 1 | Data valid but below normal, most severe |
| 2 | Data erratic or incorrect |
| 3 | Voltage above normal or shorted high |
| 4 | Voltage below normal or shorted low |
| 5 | Current below normal or open circuit |
| 6 | Current above normal or grounded circuit |
| 9 | Abnormal update rate (module stopped talking) |
| 19 | Received network data in error |
So SPN 168 FMI 1 reads as "battery voltage, below normal." A tracker will usually show it as "SPN 168 / FMI 1" on the platform, and the manufacturer's manual translates it.
A code that was stored before we arrived is not something we caused. That's why we read and record codes before we start the install.
Low voltage (P0562, SPN 168 FMI 1). A device drawing too much at key-off, or a battery that was already weak and we ran the ignition for two hours with the door open. Check for parasitic draw, charge the battery, retest.
Lost communication (U-codes, FMI 9). The most likely install-related code. A pinched CAN wire, a bent pin at the OBD or J1939 port, the wrong Y-cable, or a device that's loading the bus. Unplug our device. If the code stops setting, the device or harness is the problem.
Airbag light. We unplugged a seat, a steering column connector, or a side-impact sensor while pulling a panel and didn't reconnect it, or reconnected it with the battery still connected. Reconnect properly. On many vehicles the light clears on the next key cycle; on some it needs a scan tool.
ABS or traction light. Same thing, usually a wheel speed sensor or steering angle sensor connector disturbed in a kick panel or under the seat.
Random misfire or fuel trim codes after an install. Almost never us, but if a device is tapped into an engine circuit it shouldn't be on, move it. Ignition and constant should come from the fuse panel or ignition switch harness, never from a sensor wire.
Speed sensor (P0500). If we tapped the vehicle speed signal wire for a device and the code appeared, the tap is loading the signal. Use a proper high-impedance tap or read speed from the bus instead.
When a light is on before we start: "There's a check engine light on this vehicle. We've recorded the codes. We didn't cause it and we won't clear it, but here's what it says so you can pass it to your shop."
When a light comes on after we finish: we don't leave until we know why. If it's ours, we fix it. If it isn't, we show the customer the before and after code lists so they can see it.
Rather have us do it? We install GPS, cameras and telematics across Georgia, South Carolina and North Carolina, at your yard. Get a free quote or call/text 803-513-1009.
This information is provided as a guide. Verify every circuit with a digital multimeter before connecting to it. Proper installation is the responsibility of the installer.
We install GPS, cameras and telematics across GA, SC & NC — at your yard, on your schedule.