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) |
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 ScannersQuestions about a specific fault code? Call (866) 217-0063