- Home
- Repair Centre
- fault-codes
- Reading J1939 Engine Fault Codes — What SPN and FMI Actually Tell You
Electronically controlled engines — diagnostic message structure
Reading J1939 Engine Fault Codes — What SPN and FMI Actually Tell You
- Applies to
- Generating sets and plant with electronically controlled engines reporting diagnostics over a J1939 CAN link to a controller or display
- Difficulty
- intermediate
- Competence required
- technician
- Diagnosis complexity
- Low to moderate. The code structure is systematic and readable once understood, which is exactly why it is so often over-read.
- Electrical system
- Engine ECM and controller CAN network; set output 240 V / 415 V 50 Hz nominal
- Safety classification
- live electrical
- Author
- EmersonEIMS Engineering
- Technical review
- Mr. Kararaho
- Last reviewed
- 2026-07-27
Scope — read this before relying on the guide
This guide sets out diagnostic method, ranked causes and safety requirements. It deliberately does not state equipment-specific numbers — test voltages, resistance and component values, torque figures, acceptance windows and pin assignments are referred to the manufacturer's documentation for your exact model rather than given here, because a plausible-looking figure for the wrong machine is more dangerous than no figure at all.
Direct technical answer
A J1939 diagnostic message is compositional, and reading it as two separate pieces of information is what makes it useful. The SPN — Suspect Parameter Number — identifies WHICH parameter the engine control module is unhappy about. The FMI — Failure Mode Identifier — identifies HOW it is unhappy: whether the signal is above a normal range, below it, erratic, out of calibration, absent altogether, or whether the ECM has detected a mechanical condition rather than a signal problem. So SPN tells you where to look and FMI tells you what kind of fault to look for, and the two together frequently distinguish a genuine engine problem from a wiring or sensor problem before you touch anything. An occurrence count usually accompanies them, which tells you whether this is a one-off or a recurring condition. What the code does not tell you is the cause, because a sensor circuit fault and a real physical condition on the same parameter produce codes that differ only in their FMI. Look every code up in the engine manufacturer documentation for that exact engine — the standard defines the structure, not the complete meaning of every code on every engine, and manufacturers add their own.
01Symptom description
Controller / display
- A numeric code shown as SPN and FMI, sometimes with an occurrence count
- A single code presented by the controller without indicating it originated in the engine ECM
- Multiple codes appearing together, some of which are consequences of others
- Amber warning versus red stop indication accompanying the code
- A code that clears on power cycle and returns under running conditions
Indicators
- Malfunction or warning lamp on the engine or control panel
- Controller common alarm active with the specific code only on a sub-screen
- Communication or data-link fault indication, which is a different class of problem
Sounds
- Engine running differently in a way that corroborates or contradicts the code
- No audible change at all, which is common for sensor-circuit faults
Smells
- Any burnt smell alongside a code means investigate physically before clearing anything
Behaviour
- Code appears only when the engine is hot, or only under load, which is diagnostic in itself
- Code appears at every start and clears once running
- Code recurs immediately after being cleared, meaning the condition is still present
- Engine derating or shutting down in response to the code
- Code present with no observable symptom, which frequently indicates a sensor or wiring fault rather than an engine condition
- Several codes appearing within seconds, indicating a cascade from one root event
Visible
- The full code list with occurrence counts, not just the first entry
- Whether the code originated in the engine ECM or the generator controller
- Wiring and connector condition at the sensor named by the SPN
- Evidence of recent work, rodent damage or moisture ingress at the harness
- Engine and controller software versions
02What the fault means
In plain language
Modern engines report faults as a pair of numbers. The first says which reading the engine computer is unhappy about — oil pressure, coolant temperature, a fuel parameter and so on. The second says what kind of problem it is: too high, too low, jumping about, or no signal at all. That pairing is useful because it often separates a genuine engine problem from a broken wire or a failed sensor before anyone opens anything.
Technical explanation
SAE J1939 defines a diagnostic message structure used across electronically controlled engines. The Suspect Parameter Number identifies the parameter concerned, and the Failure Mode Identifier classifies the nature of the fault against that parameter — the FMI set distinguishes, among other things, signals reading above or below a valid operating range, signals above or below the range considered electrically plausible, intermittent or erratic data, a value out of calibration, a condition that exists mechanically, and a missing or invalid data link message. That distinction between electrically implausible and merely out of normal operating range is the diagnostically valuable part, because it separates a wiring or sensor circuit failure from a real physical condition on the same parameter. A short to earth on a sensor signal wire and a genuinely low reading of that parameter both raise a fault on the same SPN, and only the FMI tells them apart. Messages usually carry an occurrence count, distinguishing a single transient from a persistent condition, and a lamp status indicating the severity the ECM assigns. Critically, the standard specifies the framework rather than an exhaustive dictionary: manufacturers implement subsets, define proprietary parameters and attach their own thresholds and remedial guidance, so the same SPN and FMI pair does not necessarily carry identical meaning or identical urgency across different engines. Where a generating-set controller displays engine diagnostics, it is relaying a message that originated in the engine ECM, so the code belongs to the engine manufacturer's documentation and not to the controller manual — a distinction that wastes a great deal of time when it is missed.
03Common causes, ranked
These are ordered by likelihood. Presenting every possible cause as equally probable is a failure of diagnosis, not thoroughness.
Most likely
start here- Sensor circuit fault — open, short to earth or short to supply on the signal wire
- Connector corrosion, backed-out pin or moisture ingress at the sensor
- A genuine engine condition correctly detected and correctly reported
- Consequential code following an earlier root event
Possible
check next- Sensor failed or drifted out of calibration
- Harness damage from chafing, heat or rodents
- Data link fault — wiring, termination or a device not communicating
- Code being read against the wrong documentation, so the meaning attributed is not the meaning intended
Less common
after the above- ECM fault
- Software or calibration issue after an update
- Proprietary manufacturer code being interpreted as a standard one
- Controller misreporting a relayed message
Model specific
verify per unit- The standard defines the STRUCTURE; manufacturers implement subsets and add proprietary parameters, so meaning must come from the engine manufacturer documentation for that exact engine
- Thresholds behind a code, and the severity assigned, differ between engines and calibrations
- Some manufacturers publish their own code numbering alongside or instead of SPN and FMI
- Derate and shutdown behaviour in response to a given code is calibration-specific
- Diagnostic tool access and clearing procedures are manufacturer-specific and may require authorisation
Environmental
site conditions- Moisture and condensation at connectors, a leading cause of sensor circuit faults
- Vibration loosening connectors and chafing harnesses
- Heat degrading insulation near the engine
- Rodent damage to harnesses on sets that stand unused
- Dust and corrosion on connector pins
Installation related
built in- Harness routed against hot or moving parts
- Connectors not fully seated or seals omitted after previous work
- Data link wiring without correct termination
- Aftermarket equipment connected to the CAN network incorrectly
Maintenance related
deferred work- Codes cleared habitually without investigation, so history is destroyed
- Occurrence counts never noted, so recurring faults look like new ones
- Harness and connector condition never inspected
- No record of which engine software or calibration is in service
Component level
electronics- Sensor failed
- Signal wire open, or shorted to earth or supply
- Connector pin corroded or backed out
- Data link wiring or termination fault
- ECM input failed
04Safety requirements
Isolation
- Stop the set and prevent automatic restart before working on the engine or harness
- Lock the control in stop and isolate the starting battery before disconnecting connectors
- Isolate the set output breaker before working around the alternator
- Allow hot surfaces to cool before reaching into the engine bay
Lockout and tagout
- Lock the control selector in stop and tag it
- Disconnect and tag the starting battery
- Tag the changeover control so auto operation is not restored during the work
PPE
- Eye protection and gloves
- Hearing protection while the set runs
- Heat-resistant gloves near a recently run engine
- Insulated tools for any work in the control panel
Stored energy
- The starting battery is live at all times
- Exhaust, manifold and turbocharger surfaces stay hot long after shutdown
- Common-rail fuel systems may retain very high pressure after shutdown
- The cooling system remains pressurised while hot
Specific hazards
- A code reporting a protective condition — low oil pressure, high coolant temperature, overspeed — must never be cleared and the engine restarted to see whether it recurs. If the condition is real, the next run destroys the engine.
- Never disconnect ECM connectors with the ignition or control supply live; do it with the battery isolated.
- Never loosen a high-pressure fuel fitting on a running engine — injection-pressure fuel penetrates skin and causes injuries requiring immediate surgery.
- The engine may start automatically during testing if the control is in auto
- Diagnostic tools can command engine functions; know what a command will do before sending it
Stop and call a qualified professional if
- A protective shutdown code whose cause you cannot establish
- Codes requiring manufacturer diagnostic tools or authorisation to interrogate or clear
- Suspected ECM or calibration faults
- Any situation where the proposed action is to clear a protective code and run the engine
- Data link faults on a network you cannot map
05Tools required
| Tool | Why it is needed |
|---|---|
| Engine manufacturer documentation for that exact engine and calibration | The standard defines structure, not complete meaning — codes must be looked up against the engine, not a generic list |
| Manufacturer diagnostic tool or approved service software | Reading full fault detail, occurrence counts and freeze-frame data that a controller display may not show |
| True-RMS digital multimeter | Testing the sensor circuit named by the SPN — continuity, shorts to earth and supply |
| Breakout leads or test harness appropriate to the connector | Measuring at a connector without damaging pins, which is how connectors get ruined |
| Independent gauge for the parameter concerned | Establishing whether the reported value is TRUE, which the code itself cannot tell you |
| Controller documentation | Distinguishing a controller-generated alarm from a relayed engine ECM code |
06Diagnostic decision tree
1. Is the code a protective condition — oil pressure, coolant temperature, overspeed?
Yes → Do NOT clear and restart to test it. Establish the physical condition first.
No → Continue
2. Did the code originate in the ENGINE ECM or the generator controller?
Yes → Look it up in the matching documentation — engine codes are not in the controller manual
No → Establish the source before interpreting the number
3. Have you recorded the full code list and occurrence counts?
Yes → Continue
No → Record before clearing anything — clearing destroys the history you need
4. Which SPN, which parameter is implicated?
Yes → That tells you WHERE to look
No → Look it up against the engine documentation
5. What does the FMI say about the NATURE of the fault?
Yes → Electrically implausible values point at wiring or sensor; out-of-range-but-plausible points at a real condition
No → This is the most valuable half of the code — do not skip it
6. Does an independent measurement agree with the reported value?
Yes → The condition is real — diagnose the engine
No → Sensor or wiring — the engine may be entirely healthy
7. Is the sensor circuit sound — continuity, no short to earth or supply?
Yes → Suspect the sensor or a genuine condition
No → The harness is the fault
07Step-by-step diagnosis
Step 1Record everything before clearing anything
- Inspect
- Full code list, SPN and FMI for each, occurrence counts, lamp status and the order they appeared
- Where
- Controller display or manufacturer diagnostic tool
- Instrument
- Diagnostic tool, or photograph the display
- Expected result
- A complete record including occurrence counts
- If the result is abnormal
- Clearing codes destroys the history, and occurrence counts are what distinguish a transient from a persistent fault. This is the cheapest step and the one most often skipped.
- Next
- Step 2
Safety: Never clear a protective shutdown code and restart to see whether it recurs.
Step 2Establish where the code came from
- Inspect
- Whether the code originated in the engine ECM or was generated by the generator controller
- Where
- Controller display and its documentation
- Instrument
- Controller and engine documentation
- Expected result
- A clear attribution
- If the result is abnormal
- A generating-set controller relays engine ECM messages. Looking an engine code up in the controller manual wastes considerable time and can produce a confidently wrong interpretation.
- Next
- Step 3
Step 3Read the SPN, which parameter
- Inspect
- The parameter the SPN identifies, against the engine manufacturer documentation
- Where
- Engine documentation for that exact engine and calibration
- Instrument
- Manufacturer documentation
- Expected result
- An unambiguous identification of the parameter
- If the result is abnormal
- The standard defines the framework, not an exhaustive dictionary. Manufacturers implement subsets and add proprietary parameters, so a generic online list is not a safe substitute for the engine documentation.
- Next
- Step 4
Verify for your unit: The engine make, model and calibration, and that the documentation matches them.
Step 4Read the FMI — the nature of the fault
- Inspect
- What the FMI says about how the parameter is failing
- Where
- Against the engine documentation
- Instrument
- Manufacturer documentation
- Expected result
- A classification: implausible signal, out of operating range, erratic, missing, or a detected mechanical condition
- If the result is abnormal
- This is the diagnostically valuable half. A signal that is electrically implausible points at wiring or the sensor; a value within electrical plausibility but outside the normal operating range points at a real physical condition. The same SPN with different FMIs is a different job.
- Next
- Step 5
Step 5Separate cause from consequence
- Inspect
- Which code appeared first, and which followed within seconds
- Where
- In the timestamped or ordered code list
- Instrument
- Diagnostic tool
- Expected result
- One root event with later codes explained as consequences
- If the result is abnormal
- A shutdown produces several codes from one event. Working on the last code displayed is a common and costly error.
- Next
- Step 6
Step 6Verify the reported value independently
- Inspect
- The actual physical quantity, measured separately from the ECM
- Where
- At the engine, with an independent gauge or meter
- Instrument
- Independent pressure gauge, thermometer or multimeter
- Expected result
- Agreement, or a clear disagreement
- If the result is abnormal
- Agreement means the condition is real and belongs to the engine. Disagreement means the measurement path is at fault and the engine may be perfectly healthy. The code cannot tell you which.
- Next
- Step 7
Safety: Where verification requires running after a protective shutdown, establish first that running will not cause damage.
Step 7Test the sensor circuit named by the SPN
- Inspect
- Continuity, shorts to earth and to supply, connector and pin condition
- Where
- At the sensor and along its harness
- Instrument
- Multimeter and appropriate breakout leads
- Expected result
- Sound circuit, clean and fully seated connectors
- If the result is abnormal
- Corrosion, backed-out pins, chafed harness and rodent damage are leading causes of codes that look like engine faults. Use proper breakout leads — probing pins directly damages connectors and creates the next fault.
- Next
- Step 8
Verify for your unit: Sensor type and expected circuit behaviour for this engine, from the manufacturer data.
Step 8Correct the cause, then clear and validate deliberately
- Inspect
- That the identified cause is addressed before the code is cleared
- Where
- At the corrected fault
- Instrument
- Diagnostic tool and observation after a run
- Expected result
- Code does not return under the conditions that produced it
- If the result is abnormal
- A code that returns means the condition persists. Record the code, the cause and the action so the next technician starts with information rather than a cleared list.
- Next
- Refer ECM, calibration and unresolved protective codes to the engine manufacturer
08Repair procedure
Harness and connectors — the commonest fix
cleaning and connections- Clean corroded connector pins and reseat connectors fully with seals in place
- Repair chafed, heat-damaged or rodent-damaged harness sections properly rather than taping them
- Re-route harness away from hot and moving parts
- Correct data link wiring and termination faults
A large share of codes that appear to indict the engine are resolved here, on the wiring.
Sensors
sensor replacement- Replace a sensor proven faulty by independent measurement
- Fit the correct sensor for the engine and calibration
- Verify the reported value against an independent measurement after fitting
Software and calibration
firmware- Refer calibration and software issues to the engine manufacturer
- Record the software and calibration version in service before and after any change
Do not improvise ECM programming. A partly programmed module may be unrecoverable.
Engine and ECM
manufacturer level- Refer genuine engine conditions and suspected ECM faults to a properly equipped facility
- Provide the full code list with occurrence counts, independent measurements and circuit test results
09Post-repair validation
- Confirm the code does not return under the conditions that originally produced it
- Confirm the reported value agrees with an independent measurement
- Confirm no new codes were introduced by the work
- Record the full code list after the repair as a new baseline
- Record the engine software and calibration version in service
- Record the SPN, FMI, occurrence count, cause identified and corrective action, so the next visit starts with information
10When not to repair
- Where the correct engine documentation cannot be obtained — interpreting a code from a generic list is guesswork on a specific engine
- Protective shutdown codes whose physical cause cannot be established
- ECM faults requiring manufacturer tools and authorisation
- Where the only proposed action is to clear the code and continue running
- Engines whose calibration or software state cannot be established
11Prevention
- Never clear codes routinely; record them first, because occurrence counts and order are diagnostic
- Inspect harness and connectors at service intervals, particularly on sets that stand unused where rodent damage occurs
- Keep the correct engine documentation with the set, including the calibration in service
- Record the software and calibration version so a change is detectable
- Review the code list at every service visit — recurring low-priority codes often precede a failure
- Seal and protect connectors properly after any work; moisture ingress is a leading cause
- Treat a code with no observable symptom as worth investigating rather than dismissing, since it frequently indicates a developing circuit fault
12Questions engineers actually ask
What is the difference between SPN and FMI?
SPN identifies WHICH parameter the engine control module is unhappy about — it tells you where to look. FMI identifies HOW it is unhappy: implausible signal, out of normal operating range, erratic, missing, or a detected mechanical condition. Reading only the SPN throws away the more useful half, because the same parameter with a different FMI is frequently a completely different job.
Can I look the code up online?
Use it as orientation, never as the answer. The standard defines the message structure rather than an exhaustive dictionary, and manufacturers implement subsets, add proprietary parameters and attach their own thresholds and severities. The same pair of numbers does not necessarily mean the same thing, or carry the same urgency, on a different engine. Look it up in the documentation for that exact engine and calibration.
The controller shows a code but its manual does not list it. Why?
Because it almost certainly originated in the engine ECM and the controller is only relaying it. Engine codes belong in the engine manufacturer's documentation, not the controller manual. Establishing which device generated a code before looking it up saves a great deal of wasted time.
There is a code but the engine seems to run fine. Can I clear it?
Record it first, then investigate rather than clear. A code with no observable symptom very often indicates a sensor or wiring fault — a chafed harness, a corroded pin, moisture in a connector, which is real, is developing, and is cheap to fix now. Clearing it without investigation destroys the occurrence count, which is exactly the information that would have told you whether it was a one-off or a pattern.
Standards and references
- SAE J1939 and its subordinate documents, which define the diagnostic message structure including Suspect Parameter Number and Failure Mode Identifier
- ISO 8528-4 — generating sets: controlgear and switchgear
- The engine manufacturer's documentation for the exact engine and calibration in service, which is the only valid source for the meaning, threshold and severity of any specific code
- The generating-set controller manufacturer's documentation, for distinguishing controller-generated alarms from relayed engine messages
This guidance is written from engineering principle and is not a substitute for the manufacturer's model-specific documentation. Where a figure is model-specific, confirm it against the service data for your unit before acting on it.
Need this diagnosed properly?
Send us the make, model and any fault codes shown, and photographs of the controller display if you have them. Our mobile workshop covers all 47 counties.