Company News

What Are SPN and FMI in J1939 Diagnostics?

When a fault appears on a J1939 network, technicians may see diagnostic information such as:

SPN 110 FMI 0

These numbers are part of the Diagnostic Trouble Code (DTC) structure used in SAE J1939.

The SPN identifies what parameter or system is associated with the fault, while the FMI describes what type of failure has been detected.

Understanding SPN and FMI is therefore one of the first steps in diagnosing engine and machine faults on J1939-based mobile machinery.





What Is an SPN in J1939?

SPN stands for Suspect Parameter Number.

It identifies a specific parameter, signal, component, or condition within a J1939 system.

SPNs can represent information such as:

  • Engine speed

  • Engine coolant temperature

  • Engine oil pressure

  • Fuel pressure

  • Accelerator position

  • Battery voltage

  • Transmission parameters

  • Aftertreatment parameters

For example:

SPN 110 = Engine Coolant Temperature

If an ECU reports a DTC containing SPN 110, the diagnostic information is related to engine coolant temperature.

However, the SPN alone does not explain what is wrong with that parameter.

For that, we need the FMI.





What Is an FMI in J1939?

FMI stands for Failure Mode Identifier.

It describes the type of failure associated with the SPN.

For example, an FMI may indicate that a value is:

  • Above its normal operating range

  • Below its normal operating range

  • Electrically too high

  • Electrically too low

  • Not updating correctly

  • Mechanically not responding as expected

This means:

SPN = What has a problem?

FMI = What kind of problem is it?

The two values should normally be interpreted together.


What Are SPN and FMI in J1939 Diagnostics?cid=16


How SPN and FMI Work Together

Consider this diagnostic code:

SPN 110 FMI 0

SPN 110 identifies:

Engine Coolant Temperature

FMI 0 indicates:

Data valid but above normal operational range – most severe level

Together, the diagnostic information indicates that the ECU has detected an excessively high engine coolant temperature.

The relationship can be simplified as:

J1939 DTC
  │
  ├── SPN → Which parameter?
  │
  └── FMI → What type of failure?

This provides much more useful information than a generic “Engine Fault” warning.




Common FMI Values

J1939 defines multiple FMI values for different types of faults.

Some commonly encountered examples include:

FMIGeneral Meaning
0Data valid but above normal range – most severe
1Data valid but below normal range – most severe
2Data erratic, intermittent, or incorrect
3Voltage above normal or shorted high
4Voltage below normal or shorted low
5Current below normal or open circuit
6Current above normal or grounded circuit
7Mechanical system not responding properly
9Abnormal update rate
12Bad intelligent device or component
13Out of calibration
19Received network data in error

The exact interpretation should still be checked against the relevant ECU or equipment manufacturer's diagnostic documentation.




SPN/FMI Examples

The same SPN can appear with different FMI values.

Suppose an SPN identifies a pressure sensor.

The ECU might report:

SPN XXX FMI 3

This may indicate that the sensor circuit voltage is above the expected range.

Another fault could be:

SPN XXX FMI 4

This may indicate that the voltage is below the expected range.

Or:

SPN XXX FMI 0

This could indicate that the measured pressure itself is above the normal operating range.

The SPN remains the same, but the FMI changes the meaning of the fault.

This distinction is important because the troubleshooting process may be completely different.






Where Are SPN and FMI Found?

SPN and FMI information is commonly carried in J1939 diagnostic messages.

One of the most important is:

DM1 — Active Diagnostic Trouble Codes

DM1 reports currently active diagnostic faults.

A simplified communication path is:

Engine ECU
   ↓
J1939 DM1
   ↓
SPN + FMI
   ↓
Mobile Controller
   ↓
HMI Display

The controller can receive the diagnostic message, decode the DTC information, and send relevant fault information to the HMI.






What Else Is Included in a J1939 DTC?

SPN and FMI are important, but they are not the only useful diagnostic information.

A J1939 diagnostic message may also provide information such as the Occurrence Count (OC).

The occurrence count indicates how many times a particular fault condition has been detected, subject to the behavior implemented by the ECU.

For example, an HMI diagnostic page might display:

Engine ECU

SPN: 110
FMI: 0
Occurrence Count: 3
Status: Active

This gives technicians more context than simply displaying a warning lamp.






How an HMI Can Display SPN and FMI

Raw SPN and FMI numbers are useful to engineers, but they may not be intuitive for machine operators.

An HMI can convert diagnostic data into more readable information.

Instead of showing only:

SPN 110 FMI 0

the screen could display:

ENGINE COOLANT TEMPERATURE TOO HIGH

Additional technical information can remain available on a diagnostic page:

ENGINE FAULT

Source: Engine ECU
SPN: 110
FMI: 0
Occurrence Count: 3
Status: Active

Coolant Temperature: 108°C

This gives operators a clear warning while still providing detailed information for service technicians.





How Mobile Controllers Use SPN/FMI Information

In a mobile control system, the controller can do more than simply forward diagnostic messages.

Depending on the application logic, it may use diagnostic information to trigger:

  • HMI warnings

  • Audible alarms

  • Fault logging

  • Limited operating modes

  • Protection strategies

  • Maintenance notifications

For example:

Engine ECU
   ↓
DM1: SPN + FMI
   ↓
Mobile Controller
   ↓
Fault Evaluation
  ↙          ↘
HMI Warning   Machine Response

This allows diagnostic information to become part of the overall machine control strategy.





Does an SPN/FMI Code Identify the Failed Component?

Not always.

This is an important distinction.

Suppose a DTC points to a pressure sensor parameter. The sensor itself may be faulty, but other possible causes include:

  • Damaged wiring

  • Loose connector

  • Short circuit

  • Open circuit

  • Poor ground

  • Unstable supply voltage

  • CAN communication problems

  • Actual mechanical pressure outside the normal range

Therefore, an SPN/FMI combination should be treated as a diagnostic starting point, not automatic proof that a particular component must be replaced.




How to Troubleshoot an SPN/FMI Fault

A practical troubleshooting process can be:

1. Identify the ECU source

Determine which J1939 device reported the fault.

2. Read the SPN

Identify the affected parameter or system.

3. Read the FMI

Determine the reported failure mode.

4. Check live data

Compare the current sensor or machine value with expected operating conditions.

5. Inspect wiring and connectors

Check power, ground, harnesses, connectors, and sensor wiring.

6. Check CAN communication

Confirm that the ECU is online and J1939 communication is stable.

7. Verify the repair

After correcting the suspected problem, confirm that the active fault disappears and does not return.






SPN/FMI vs Fault Description

For machine manufacturers, it is often useful to provide both the technical code and a readable description.

For example:

Diagnostic DataHMI Display
SPN 110 FMI 0Engine Coolant Temperature Too High
SPN XXX FMI 3Sensor Voltage Above Normal
SPN XXX FMI 4Sensor Voltage Below Normal
SPN XXX FMI 9Abnormal Update Rate

This approach serves two different users:

Operators receive understandable warnings.

Service technicians still have access to the original SPN/FMI information for troubleshooting.




Conclusion

SPN and FMI are fundamental parts of J1939 diagnostics.

The basic concept is simple:

SPN identifies what parameter is associated with the fault.

FMI identifies what type of failure has been detected.

When combined with DM1 messages, ECU source information, occurrence counts, live machine data, and HMI diagnostics, SPN/FMI codes provide technicians with valuable information for troubleshooting mobile machinery.

For OEMs developing J1939-based control systems, integrating diagnostic information into the mobile controller and HMI can make machine faults easier to understand, improve service efficiency, and reduce troubleshooting time.