What Is J1939?
SAE J1939 is the communication protocol used by virtually every modern heavy-duty diesel truck. It defines how the engine, transmission, ABS, aftertreatment, and other electronic control modules (ECMs) communicate with each other over the vehicle's CAN bus.
When a fault occurs, the affected ECM broadcasts a Diagnostic Trouble Code (DTC) over the J1939 network. That code has two parts: a Suspect Parameter Number (SPN) and a Failure Mode Identifier (FMI). Together, they tell you exactly what failed and how it failed.
What Is an SPN (Suspect Parameter Number)?
The SPN identifies the specific parameter, component, or system that has a fault. Think of it as the "what" — what part of the truck is affected.
SPNs are standardized by SAE J1939 for common parameters (fuel pressure, coolant temperature, NOx concentration, etc.) but OEMs can also define proprietary SPNs for their own systems. Common SPN ranges:
SPN 1–999: Engine parameters (fuel pressure, coolant temp, oil pressure, turbo speed)
SPN 1000–1999: Transmission and driveline parameters
SPN 2000–3999: Aftertreatment system parameters (DPF, SCR, DEF)
SPN 4000–5999: Extended aftertreatment and emissions parameters
SPN 520192+: OEM-proprietary parameters (manufacturer-specific)
What Is an FMI (Failure Mode Identifier)?
The FMI identifies how the parameter has failed — the "how" of the fault. There are 32 standardized FMI values (0–31), each describing a specific type of failure:
FMI 0 — Data Valid But Above Normal Range (Most Severe). The measured value is higher than the maximum threshold. Example: coolant temperature above 230°F.
FMI 1 — Data Valid But Below Normal Range (Most Severe). The measured value is lower than the minimum threshold. Example: fuel rail pressure below 20,000 PSI.
FMI 2 — Data Erratic, Intermittent, or Incorrect. The signal is present but not behaving as expected. Often indicates a wiring or connector issue.
FMI 3 — Voltage Above Normal or Shorted to High Source. The sensor circuit voltage is too high. Usually a short to power or open ground.
FMI 4 — Voltage Below Normal or Shorted to Low Source. The sensor circuit voltage is too low. Usually a short to ground or open power.
FMI 5 — Current Below Normal or Open Circuit. The circuit current is too low, indicating an open circuit.
FMI 6 — Current Above Normal or Grounded Circuit. The circuit current is too high, indicating a short to ground.
FMI 7 — Mechanical System Not Responding or Out of Adjustment. A mechanical component is not responding to commands. Common with actuators and VGT turbochargers.
FMI 8 — Abnormal Frequency, Pulse Width, or Period. The signal frequency is outside the expected range.
FMI 9 — Abnormal Update Rate. The ECM is not receiving data from another module at the expected rate. Often a CAN bus communication fault.
FMI 11 — Root Cause Not Known. The ECM detected a fault but cannot determine the specific cause.
FMI 14 — Special Instructions. Requires specific diagnostic procedures defined by the OEM.
FMI 18 — Data Valid But Below Normal Range (Moderately Severe). Similar to FMI 1 but less severe.
FMI 19 — Received Network Data in Error. Data received from another ECM over the CAN bus is invalid.
FMI 31 — Condition Exists. A condition is present that the ECM is monitoring. Often used for aftertreatment efficiency faults.
How to Read a J1939 Fault Code
A J1939 fault code is always written as SPN followed by FMI. For example:
- 1
SPN 3216 FMI 16 — DEF Quality: SPN 3216 is the DEF quality parameter. FMI 16 means "Data Valid But Above Normal Range (Least Severe)" — the DEF concentration is higher than expected.
- 2
SPN 4364 FMI 18 — SCR Efficiency: SPN 4364 is the SCR conversion efficiency parameter. FMI 18 means "Data Valid But Below Normal Range (Moderately Severe)" — the SCR is not converting NOx efficiently enough.
- 3
SPN 157 FMI 3 — Fuel Rail Pressure: SPN 157 is the fuel rail pressure parameter. FMI 3 means "Voltage Above Normal or Shorted to High Source" — the pressure sensor circuit voltage is too high.
- 4
SPN 641 FMI 7 — VGT Actuator: SPN 641 is the VGT actuator. FMI 7 means "Mechanical System Not Responding" — the actuator is not moving the turbo vanes as commanded.
How to Prioritize Multiple Fault Codes
Most trucks with a fault will have multiple active codes. The key skill is identifying the root cause fault versus cascade faults — secondary codes triggered by the primary failure.
Look for the fault with the highest occurrence count. The code that has been set the most times is usually the root cause. Codes that appeared at the same time as the primary fault are often cascade faults.
Look for the fault that appeared first. If you have access to freeze frame data or fault history, the oldest fault is usually the root cause.
Understand cascade relationships. A low fuel rail pressure fault (SPN 157) will often trigger injector faults, power derate faults, and fuel system faults. Fix the fuel pressure first and the cascade faults will clear.
Aftertreatment faults cascade heavily. A DEF quality fault (SPN 3216) will trigger SCR efficiency faults (SPN 4364), NOx sensor faults, and eventually a derate fault (SPN 5246). Always start with the DEF system when you see multiple aftertreatment codes.
J1939 vs OBD-II: What's the Difference?
OBD-II (On-Board Diagnostics II) is the diagnostic standard for light-duty vehicles (cars and light trucks under 8,500 lbs GVWR). It uses P-codes (P0087, P0401, etc.) and communicates over a standardized 16-pin OBD-II port.
J1939 is the diagnostic standard for heavy-duty commercial vehicles (Class 6, 7, and 8 trucks). It uses SPN/FMI codes and communicates over a 9-pin Deutsch connector (or 6-pin on older trucks).
Some heavy-duty trucks have both — an OBD-II port for emissions monitoring and a 9-pin J1939 connector for full diagnostic access. For complete diagnostics on a heavy-duty truck, always use the J1939 connector.
Using AI Diesel Tech to Diagnose J1939 Faults
Once you have the SPN and FMI, AI Diesel Tech generates a complete diagnostic procedure — the physical tests to run, the expected values, and the repair steps. No hardware dongle, no Windows laptop, no OEM software license required.
Enter the SPN and FMI, describe the truck (year, make, engine), and the AI identifies the subsystem, the likely failure modes, and the step-by-step tests to confirm the root cause. It works on any smartphone, directly at the truck.