CarScan

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 3363

What
DEF tank heater

Add the FMI and the answer becomes specific: the same SPN with a different FMI is a different job.

Where to start

  • Without heating, urea freezes at −11 °C in winter and the unit derates the engine.
  • 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)

FMIMeaning
0Data valid but above normal range
1Data valid but below normal range
2Data erratic, intermittent or incorrect
3Voltage above normal or shorted high
4Voltage below normal or shorted low
5Current below normal or open circuit
6Current above normal or grounded circuit
7Mechanical system not responding properly
8Abnormal frequency, pulse width or period
9Abnormal update rate
10Abnormal rate of change
11Failure mode not identifiable
12Bad intelligent device or component
13Out of calibration
14Special instructions
15Reserved

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.

FMIMeaning
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.

Exhaust: DPF, AdBlue, NOx 50

SPN 3251 DPF differential pressure SPN 3242 DPF intake temperature SPN 3246 DPF outlet temperature SPN 3719 DPF soot load SPN 1761 DEF (AdBlue) tank level SPN 3031 DEF tank temperature SPN 3363 DEF tank heater SPN 3361 DEF dosing unit SPN 5394 DEF dosing valve SPN 3364 DEF quality SPN 3216 Aftertreatment intake NOx SPN 3226 Aftertreatment outlet NOx SPN 3556 Aftertreatment hydrocarbon doser SPN 4094 NOx limits exceeded — inducement SPN 4095 Insufficient reagent quality — inducement SPN 5246 SCR inducement severity SPN 3610 DPF outlet pressure SPN 3249 Aftertreatment exhaust gas temperature 2 SPN 4765 DOC intake temperature SPN 4796 Diesel oxidation catalyst missing SPN 4809 Warm up DOC intake temperature SPN 4810 Warm up DOC outlet temperature SPN 3480 Aftertreatment fuel pressure SPN 3482 Aftertreatment fuel enable actuator SPN 4097 Aftertreatment fuel drain actuator SPN 3490 Aftertreatment purge air actuator SPN 3695 Regeneration inhibit switch SPN 5741 Aftertreatment outlet soot sensor SPN 5747 Outlet soot sensor heater SPN 5742 DPF temperature sensor module SPN 6882 DOC temperature sensor module SPN 5797 Warm up DOC temperature sensor module SPN 4360 SCR catalyst intake gas temperature SPN 4363 SCR catalyst outlet gas temperature SPN 4364 SCR conversion efficiency SPN 3228 Outlet NOx sensor power status SPN 5031 Outlet NOx sensor heater ratio SPN 4334 DEF doser absolute pressure SPN 4337 DEF dosing temperature SPN 3515 DEF temperature 2 SPN 3521 DEF property SPN 4340 DEF line heater 1 SPN 4342 DEF line heater 2 SPN 4344 DEF line heater 3 SPN 5491 DEF line heater relay SPN 5745 DEF dosing unit heater SPN 5746 DEF dosing unit heater relay SPN 5798 DEF dosing unit heater temperature SPN 4376 DEF return valve SPN 6928 SCR cleaning inhibited due to timeout