All articles

    Diagnostics & electrical

    J1939 fault codes: from SPN and FMI to root cause

    How to read J1939 fault codes by SPN and FMI, which code families derate a diesel truck, and the sequence that finds the cause instead of swapping parts.

    5.0 from 203 Google reviewsWritten quote before work65+ person team

    May 22, 2026 · 8 min read · Updated September 2026

    The short answer

    J1939 fault codes pair an SPN, which names the parameter or component, with an FMI, which says how it failed, plus the module that raised it and how often. Read the FMI before the SPN: 3 through 6 mean a circuit problem, 0 and 1 mean the reading is real. Pull active and stored codes, verify with a meter or a gauge, fix the cause, then road-test and confirm the count stops climbing.

    J1939 fault codes: from SPN and FMI to root cause — guide from Truck Clinic in Romeoville, IL

    If you have ever had a driver call from the shoulder of I-55 reading numbers off the dash, you already know the code is only the start. J1939 fault codes are built from two numbers: an SPN that names the parameter or component, and an FMI that says how it misbehaved. Read the FMI first, because it separates a wiring problem from a real out-of-range reading. Then pull the history, verify with a direct test, fix the cause and prove it on a road test.

    What do J1939 fault codes tell you?

    SAE J1939 is the network standard that lets a heavy-duty truck's engine, transmission, brake, cluster and aftertreatment modules talk over one CAN bus, and every module reports faults with the same pieces:

    • SPN (Suspect Parameter Number) names what the fault is about: SPN 100 is engine oil pressure, SPN 168 is battery voltage.
    • FMI (Failure Mode Identifier) says how it failed, on a 0 to 31 scale defined by the standard.
    • OC (occurrence count) says how many times the fault has set and cleared; a high count on a code the driver reported yesterday means the fault has been setting for a long time.
    • Source address says which module raised it. Codes from every module at once usually mean one power or network problem. A transmission lamp or a gearbox that drops to neutral is the same question on an automated manual, and the signs a semi truck transmission is failing show how to tell a network fault from a gearbox fault.

    Active codes arrive as a DM1 message and previously active codes as DM2, so a tool that only shows active codes hides half the story. Most OEMs also print a proprietary fault number beside the SPN/FMI pair, and older trucks on J1587/J1708 use MID, PID and SID codes instead.

    How do you read SPN and FMI codes?

    Read the FMI first. The SPN tells you where to look; the FMI tells you whether the part is bad, the wiring is bad, or the reading is real and something upstream caused it.

    FMIStandard meaningWhat it usually means in the bay
    0 / 1 (15 to 18 at lower severity)Data valid but out of rangeThe reading is real. Put a gauge on it before blaming the sensor.
    2Data erratic or intermittentLoose pin, chafed harness, dying sensor. Wiggle-test with live data.
    3Voltage above normal or shorted highOpen signal wire or a short to power. Circuit, not the part.
    4Voltage below normal or shorted lowSignal wire shorted to ground, or a sensor pulling the line down.
    5Current below normal or open circuitBroken wire, backed-out pin, unplugged connector.
    6Current above normal or grounded circuitActuator or coil shorted to ground, pinched harness.

    One SPN, two different jobs: SPN 100 FMI 1 means the engine controller believes oil pressure is low, so put a mechanical gauge on the block before condemning anything. SPN 100 FMI 4 says the signal wire is shorted low or the sensor failed electrically; the fix is at the connector.

    Which diesel fault codes will derate the truck?

    Not every diesel fault code carries the same clock. The SPN's family tells you how much time you have and where the fix usually is.

    Code familyTypical SPNsUsual causeHow urgent
    Engine protection100 oil pressure, 110 coolant tempLow oil, coolant loss, fan or thermostatRed stop lamp. Stop and check before driving on.
    Aftertreatment3216 / 3226 NOx, 3251 DPF differential pressure, 3719 soot load, 4364 SCR efficiency, 5246 inducementDEF quality, doser, NOx sensor, failed regen, EGR cooler leakDerate countdown. Repair before the inducement stage.
    Sensor and actuator circuitsAny SPN with FMI 3, 4, 5 or 6Chafed harness, corroded pin, failed sensorTest the circuit; derates only for protection-critical parameters.
    Air and brake46 pneumatic supply pressure, brake controller codesDryer cartridge, leaking line, failed governorSafety stop and a roadside inspection item.

    The aftertreatment row is where derate calls usually come from. The EPA's heavy-duty emissions rules are why the engine controller escalates an SCR or DEF fault into a power and speed limit, and SPN 5246 tracks the inducement stage. Decoding derate codes covers the stages; at 5 MPH, a derate reset only holds after the triggering code is fixed.

    A low-air or ABS fault found at roadside lands in the Vehicle Maintenance BASIC in FMCSA's Safety Measurement System, and the air-brake leak guide covers finding the leak first.

    What should you do when the check engine light comes on in a diesel truck?

    An amber check engine light on a diesel truck is a request for a diagnostic, not a parts order. This sequence gets to the cause with the fewest parts on the bench.

    1. Pull everything before you clear anything. Active and previously active codes, counts, time stamps and the freeze-frame data stored when the code set. Clearing first throws away the history that says whether this is a trend or a one-off.
    2. Sort by lamp and by module. Red stop lamp codes first, then inducement-related aftertreatment codes, then the rest. Several modules setting codes at the same time stamp is one power or network event until proven otherwise.
    3. Verify with a direct test before ordering the named part. FMI 3 through 6 means meter work at the connector: supply voltage, ground voltage drop, continuity, a wiggle test with live data. FMI 0 and 1 mean measuring the real thing: an oil pressure gauge, a manometer across the DPF, a refractometer on the DEF.
    4. Fix the cause, not the reporter. A high soot load code on a truck that idles all shift is an idling problem. A low SCR efficiency code with good DEF is usually the doser or a NOx sensor; DEF and SCR failures sorts those apart. A boost code with an oily charge-air cooler is usually a turbo seal; turbo and EGR cooler failures has the tests.
    5. Road-test under the conditions that set the code, then re-scan. Loaded, at operating temperature, on the same kind of route. Either the code stays gone and the count stops climbing, or the diagnosis was wrong.

    That is the sequence a diesel truck diagnostic at Truck Clinic follows: read, verify, then a written quote, and nothing is opened or ordered until you approve it. The trade-off is time: verifying takes longer than swapping the named part, and it pays because the named part is often not the failed part.

    How do you find intermittent electrical problems on a truck?

    Intermittent electrical problems on a truck are the ones that never fail in the bay: the dash goes dark on a wet morning, the truck derates on Tuesday and scans clean on Wednesday. The stored codes still help. An FMI 2, an FMI 9, or a batch of codes sharing a time stamp with rising counts is the fingerprint of a connection that opens under vibration, heat or moisture.

    Work the list in this order, because each step is cheaper than the next:

    • Grounds. Battery negative to frame, engine to frame, cab to frame. Measure voltage drop across each strap while cranking against the OEM's published limit; a clean-looking strap can still read high under load. Loose or corroded grounds are a common cause of intermittent faults, and cleaning and re-torquing them costs almost nothing.
    • Battery and charging. A charging system that sags under load browns out modules one at a time, and each logs a different code. Check SPN 168 history before chasing the others.
    • The J1939 backbone (SPN 639, or FMI 9 and 19 on any SPN). Key off, a healthy bus reads about 60 ohms across CAN high and CAN low, because the standard puts a 120-ohm terminating resistor at each end. Around 120 means a terminator or connector dropped out; near zero is a short.
    • Connectors. Unplug, look for green corrosion and backed-out pins, pull-test each terminal. Salt brine wicks along the strands, so the damage is often an inch inside the insulation; the winter washing routine slows it but does not undo it.
    • Harness chafe points. Cab-to-chassis crossing, over the frame rail, near the turbo and exhaust, at the bell housing. Flex each section with live data streaming and watch for the value to jump.
    • The conditions log. Ambient temperature, wet or dry, load, time since start, every time it acts up. The pattern usually shows across several events.

    When the fault still will not reproduce, the next step is a data logger on the bus while the truck runs its route, which is where an electrical repair visit earns its bay time: the recording turns a "sometimes" complaint into a time-stamped event traced to one circuit.

    Talk to Truck Clinic

    If a truck in the Romeoville, Joliet or Bolingbrook area has a code you cannot pin down, bring it to 565 Anderson Dr Unit B, Romeoville, IL 60446, just off I-55, or call (815) 887-0212. We scan, verify and put a written quote in front of you before anything is opened or ordered; same-day work is possible when a bay is open. You can also request a quote online to get started.

    Frequently asked questions

    What is the difference between SPN and FMI on a truck fault code?

    The SPN names what the fault is about, such as SPN 100 for engine oil pressure. The FMI says how it failed: FMI 3 through 6 point at the wiring or sensor, while FMI 0 and 1 mean the reading itself is out of range.

    Can I keep driving a diesel truck with the check engine light on?

    A red stop lamp with an oil pressure or coolant temperature code means stop and check before driving on. An amber lamp with an aftertreatment code usually gives you time but starts a derate countdown, so scan the truck within days rather than weeks.

    Why does my truck throw many fault codes at once?

    A burst of codes from several modules with the same time stamp is almost always one event: a battery or charging sag, a bad ground, or a J1939 backbone fault. Fix supply voltage, grounds and the bus first, clear the codes, and see what comes back.

    Should I replace the sensor named in the fault code?

    Not until it is tested. An FMI 3, 4, 5 or 6 code is a circuit fault that a chafed harness or corroded pin produces as easily as a bad sensor. An FMI 0 or 1 code may be a healthy sensor reporting a real problem. A voltage-drop test or a gauge comes before the parts order.

    Quote first, then the work.

    Tell us what the truck is doing.

    A no-start, a derate counting down, a brake out of adjustment the week before an inspection, or a fleet that needs a maintenance schedule someone actually follows — send the fault code and the engine, or call (815) 887-0212, and you get a straight answer: bay today, part first, or tow. The diagnosis and the price come to you in writing, and nothing is opened up until you approve it.

    (815) 887-0212

    Monday - Friday: 7:00 AM - 5:00 PM

    Saturday: 7:00 AM - 12:00 PM

    Sunday: Closed

    Shop-based only — we don't run roadside or mobile service, so the truck comes to Romeoville. Same-day whenever a bay is open.

    Request a written quote

    Shop-hours callback. Nothing starts until you approve the quote.

    Company, email, service (optional)

    Shop-hours callback only. Privacy policy