J1939 SPN and FMI reference
A J1939 fault is two numbers. The SPN says which parameter went wrong. The FMI says how. You need both, and the FMI is the half most people skip.
What an SPN is
The Suspect Parameter Number identifies a specific measured or commanded value on the vehicle network — DPF differential pressure, DEF concentration, engine coolant temperature, and several thousand others. The numbers are assigned by SAE, so SPN 3251 means the same thing on a Detroit as it does on a Cummins.
What differs between manufacturers is the diagnostic procedure, the part numbers, and the proprietary fault number the dash chooses to display alongside it. That is why an SPN lookup is a starting point and not an answer.
Every FMI, in plain language
Defined by SAE J1939-73. FMIs 22 through 30 are reserved for future SAE assignment and should not appear on a healthy network.
| FMI | Standard definition | What it means for you |
|---|---|---|
| 0 | Data valid but above normal operational range — most severe level | The reading is far too high and the ECM considers it critical. |
| 1 | Data valid but below normal operational range — most severe level | The reading is far too low and the ECM considers it critical. |
| 2 | Data erratic, intermittent, or incorrect | The signal is jumping around or disagrees with what other sensors say. |
| 3 | Voltage above normal or shorted to high source | Electrical fault — the circuit is seeing more voltage than it should. |
| 4 | Voltage below normal or shorted to low source | Electrical fault — the circuit is grounded or seeing too little voltage. |
| 5 | Current below normal or open circuit | The circuit is broken, unplugged, or the component is open. |
| 6 | Current above normal or grounded circuit | The circuit is drawing too much current, usually a short to ground. |
| 7 | Mechanical system not responding or out of adjustment | The ECM commanded something and the hardware did not do it. |
| 8 | Abnormal frequency, pulse width, or period | A timing-based signal is arriving in the wrong shape. |
| 9 | Abnormal update rate | A module is reporting too often or not often enough. |
| 10 | Abnormal rate of change | The value moved faster than physically plausible. |
| 11 | Root cause not known | The ECM knows something is wrong but cannot classify it. |
| 12 | Bad intelligent device or component | A smart module has reported its own internal failure. |
| 13 | Out of calibration | The component needs a calibration or learn procedure, not replacement. |
| 14 | Special instructions | Manufacturer-specific — you need the OEM service literature for this one. |
| 15 | Data valid but above normal operating range — least severe level | Slightly high. Usually a warning before anything derates. |
| 16 | Data valid but above normal operating range — moderately severe level | High enough to act on; often the stage before a derate. |
| 17 | Data valid but below normal operating range — least severe level | Slightly low. Usually a warning only. |
| 18 | Data valid but below normal operating range — moderately severe level | Low enough to act on; often the stage before a derate. |
| 19 | Received network data in error | Another module sent a message this one could not use — a network problem. |
| 20 | Data drifted high | The reading has crept upward over time rather than jumped. |
| 21 | Data drifted low | The reading has crept downward over time rather than jumped. |
| 31 | Condition exists | A state, not a failure. The named condition is currently true. |
SPNs we have full pages for
Each of these carries causes, diagnosis steps, parts, labour hours, and a drive/don't-drive call — not just a definition.
Have a code that is not here?
The lookup tool searches everything we hold. If we do not have your code, tell us which one — we write in request order, and a code somebody is actually stuck on beats one we guessed at.
FMI definitions reproduced from SAE J1939-73, Application Layer — Diagnostics. Plain-language glosses are ours. TODO(verify): confirm wording against the current revision of the standard rather than the 2022-08 revision we worked from.