How to Read SPN/FMI Fault Codes on Heavy Duty Trucks

TL;DR: J1939 fault codes consist of an SPN (Suspect Parameter Number — identifies the component) and FMI (Failure Mode Identifier — describes the failure type). Connect a heavy-duty scanner to the 9-pin port, read codes, and decode using the SPN/FMI pair. SPNs are standardized across all truck brands.

If you are used to reading OBD-II codes like P0420 on cars, heavy-duty truck fault codes will look foreign at first. Instead of a single alphanumeric code, trucks use a two-part system: an SPN that tells you what is wrong and an FMI that tells you how it failed.

Once you understand the system, it is actually more precise and informative than OBD-II. This guide walks you through reading and interpreting SPN/FMI codes step by step.

Part of our protocol education series. See also: J1939 vs J1708 vs OBD2 — Protocols Explained and What Is SAE J1939?

Step-by-Step: Reading Fault Codes

Step 1: Connect the Scanner

Locate the 9-pin Deutsch diagnostic connector under the driver-side dash. On most trucks, it is near the steering column or kick panel, often with a rubber dust cap. Connect your heavy-duty scanner using the 9-pin cable and turn the ignition to ON.

Step 2: Navigate to Fault Codes

Select your truck manufacturer on the scanner (e.g., Freightliner, Peterbilt, Kenworth), then navigate to Fault Codes or DTC. Select Read Active Codes to pull DM1 messages from all ECUs on the J1939 bus. You can also select Stored/Inactive Codes to see DM2 (previously active) faults.

Step 3: Read the SPN

The SPN (Suspect Parameter Number) is the first number and identifies the specific component or parameter with the issue. SPNs range from single digits to six-digit numbers. Some common SPNs you will see frequently:

  • SPN 91 — Accelerator Pedal Position
  • SPN 100 — Engine Oil Pressure
  • SPN 102 — Boost Pressure (Intake Manifold)
  • SPN 110 — Engine Coolant Temperature
  • SPN 175 — Engine Oil Temperature
  • SPN 3251 — DPF Soot Load Percent
  • SPN 3936 — SCR Catalyst Conversion Efficiency
  • SPN 4364 — Aftertreatment SCR Operator Inducement Severity

Step 4: Read the FMI

The FMI (Failure Mode Identifier) is the second number and describes the nature of the failure. There are 32 defined FMIs:

FMI Meaning Typical Cause
0 Data Valid But Above Normal Range Parameter exceeded upper threshold
1 Data Valid But Below Normal Range Parameter below lower threshold
2 Data Erratic, Intermittent, or Incorrect Loose connection, wiring issue
3 Voltage Above Normal Short to power, open ground
4 Voltage Below Normal Short to ground, open circuit
5 Current Below Normal (Open Circuit) Broken wire, disconnected sensor
6 Current Above Normal (Short Circuit) Shorted actuator, wiring short
7 Mechanical System Not Responding Stuck valve, seized actuator
9 Abnormal Update Rate CAN bus communication issue
10 Abnormal Rate of Change Sensor signal changing too fast
12 Bad Intelligent Device or Component Failed ECU or smart sensor
14 Special Instructions See manufacturer service manual
16 Moderately Severe — Above Normal EPA emissions-related severity level
18 Moderately Severe — Below Normal EPA emissions-related severity level
19 Received Network Data in Error CAN bus data corruption
31 Condition Exists General flag that condition is active

Step 5: Look Up the Combined Meaning

The SPN tells you the component; the FMI tells you the failure type. Combined, they give you a precise diagnosis. Your scanner should display this in plain language automatically.

Step 6: Determine Repair Action

Use the decoded fault to guide your repair. Check for related codes from other ECUs — multiple codes often point to a single root cause. After repair, clear codes using your scanner's Clear Faults function and verify the code does not return.

Common SPN/FMI Codes You Will See

Here are some of the most frequently encountered fault codes in modern diesel trucks:

SPN FMI Description Common Cause Severity
3251 0 DPF Soot Loading Excessively High Missed regenerations, excessive idle time, failed DOC High — can cause derate
3936 16 SCR Catalyst Conversion Efficiency Low Bad DEF fluid, failed DEF injector, contaminated SCR catalyst High — EPA derate
102 3 Intake Manifold Pressure Voltage High Boost pressure sensor failure, wiring short to +V Medium
520322 5 Aftertreatment Fuel Pressure Low (Open Circuit) Broken wire to AT fuel pressure sensor, failed sensor High — blocks regen
3226 0 AT Exhaust Temp Too Low for DPF Regen Failed DOC, exhaust leak before DOC, low fuel pressure to 7th injector High — prevents regen
1761 1 DEF Quality Poor (Below Normal) Wrong DEF concentration, contaminated DEF, failed quality sensor High — 5 mph derate
100 1 Engine Oil Pressure Below Normal Low oil level, worn oil pump, oil filter restriction, bearing wear Critical — engine protection
110 0 Engine Coolant Temperature High Thermostat, water pump, radiator blockage, fan clutch failure Critical — engine protection
157 3 Fuel Rail Pressure Voltage High Sensor failure, wiring issue, fuel system mechanical fault High
627 2 Battery Voltage Erratic Alternator failing, loose battery connections, voltage regulator Medium

SPN Ranges: Quick Reference

SPNs are organized into ranges by system. Knowing the range helps you quickly identify which system is affected:

SPN Range System
0–999 Engine, drivetrain, vehicle systems
1000–1999 Transmission, brakes, electrical
2000–2999 Marine, ag, off-highway specific
3000–3999 Aftertreatment (DPF, SCR, DOC, DEF)
4000–4999 Aftertreatment extended, inducement
5000–5999 Body, lighting, HVAC
520000+ Manufacturer-specific (proprietary)
Pro Tip: If you see an SPN in the 520000+ range, it is a manufacturer-proprietary code. You will need the specific engine or truck manufacturer's service manual to decode it — these are not in the public SAE J1939 standard. A good heavy-duty scanner will still decode these if it has the manufacturer's enhanced database.

DM Messages: How Codes Travel on the Bus

SPN/FMI codes are carried inside DM (Diagnostic Message) types on the J1939 bus. The most important ones for everyday diagnostics:

  • DM1 (PGN 65226): Active fault codes — these are currently triggered. Broadcast every second by each ECU.
  • DM2 (PGN 65227): Previously active (stored) codes — the fault occurred but is no longer active. Sent on request.
  • DM3 (PGN 65228): Clear/reset command — sent by the scanner to erase codes.
  • DM5 (PGN 65230): Readiness status — similar to OBD-II readiness monitors.
  • DM11: Clear all active and previously active codes (used during service resets).
  • DM12 (PGN 65236): Emissions-related active codes (used for HD-OBD compliance).

Decode Every Fault Code Instantly

ThinkCar HD scanners decode SPN/FMI codes in plain language with repair guidance for every major truck brand and engine.

Shop Heavy-Duty Scanners

Questions about a specific fault code? Call (866) 217-0063