Truck and tractor fault codes
On a car a fault is one code: P0171. On a truck it is two numbers — SPN says WHAT is wrong, FMI says HOW. Enter both and we will read them in plain words.
SPN 3216
- What
- Aftertreatment intake NOx
Add the FMI and the answer becomes specific: the same SPN with a different FMI is a different job.
Where to start
- The unit reports a state rather than a failure: an engaged mode, a triggered protection, a service demand.
Why two numbers and not one
SPN 100 FMI 1 means low oil pressure: the pump, the level, wear. SPN 100 FMI 4 means an open or short in the pressure SENSOR circuit, and the pressure itself may be fine. Mixing them up means replacing a healthy pump.
What our app can and cannot do
Honestly: the app can reach the J1939 bus (29-bit, 250 kbit/s). But it does not yet decode the DM1 messages in which a truck reports SPN and FMI — it reads car OBD-II. So this reference is for numbers you already have: most tractor units show SPN and FMI right in the dashboard menu.
And about the socket: a tractor unit usually has a 9-pin Deutsch connector rather than the 16-pin OBD-II. A 9-to-16 adapter is needed, and cheap ones only carry pins C and D — which is exactly what J1939 needs.
Light commercial vehicles up to 3.5 tonnes are a different story: they use ordinary OBD-II, and our app reads them like any car. Their codes are in the main reference.
Tractor units before 2007: MID, PID/SID, FMI
A used Freightliner Century, International 9400, Kenworth T600, Peterbilt 379, an early Volvo VNL or a Mack CH speaks a different language: SAE J1587 over the J1708 wire pair. There will never be an "SPN" in its scanner, and the code has THREE parts, not two.
- MID — who is complaining: engine, gearbox, tractor ABS, trailer ABS, dashboard. Without it the number means nothing.
- PID or SID — what about: PID is a measured value (oil pressure, speed), SID is a part or a circuit (injector, sensor, valve).
- FMI — how it failed.
And the trap that catches everyone: in J1587 the FMI range is only 0–15. Take the table from the newer standard, where it runs to 31, and you get an invented fault.
The socket differs too: a round 6-pin Deutsch until the mid-2000s, a 9-pin later. A J1939 adapter cable will not work here — different pins.
Who can complain (MID)
All 16 failure modes of J1587 (FMI)
| FMI | Meaning |
|---|---|
| 0 | Data valid but above normal range |
| 1 | Data valid but below normal range |
| 2 | Data erratic, intermittent 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 |
| 7 | Mechanical system not responding properly |
| 8 | Abnormal frequency, pulse width or period |
| 9 | Abnormal update rate |
| 10 | Abnormal rate of change |
| 11 | Failure mode not identifiable |
| 12 | Bad intelligent device or component |
| 13 | Out of calibration |
| 14 | Special instructions |
| 15 | Reserved |
All 32 failure modes (FMI)
The list is complete and closed: 0–21 carry meaning, 22–30 are reserved by SAE, 31 means the condition exists but is not otherwise defined.
| FMI | Meaning |
|---|---|
| 0 | Data valid but above normal range — most severe |
| 1 | Data valid but below normal range — most severe |
| 2 | Data erratic, intermittent 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 |
| 7 | Mechanical system not responding or out of adjustment |
| 8 | Abnormal frequency, pulse width or period |
| 9 | Abnormal update rate |
| 10 | Abnormal rate of change |
| 11 | Root cause not known |
| 12 | Bad intelligent device or component |
| 13 | Out of calibration |
| 14 | Special instructions |
| 15 | Data valid but above normal range — least severe |
| 16 | Data valid but above normal range — moderately severe |
| 17 | Data valid but below normal range — least severe |
| 18 | Data valid but below normal range — moderately severe |
| 19 | Received network data in error |
| 20 | Data drifted high |
| 21 | Data drifted low |
| 22–30 | Reserved for SAE assignment |
| 31 | Condition exists (not otherwise defined) |
Common parameters (SPN) 151
SAE J1939-71 holds thousands of parameters, and numbers from 520192 up are proprietary — each maker defines its own. Below are the ones that turn up in real life. We do not promise "all truck codes": that would not be true.