SAE J1939 is widely used in construction equipment, agricultural machinery, mining vehicles, and other off-highway machines to exchange data between electronic control units.
The same network that carries engine speed, temperature, pressure, and operating status can also carry diagnostic information.
When an engine ECU or another J1939 device detects a fault, it can transmit diagnostic messages containing information such as:
Which parameter or component has a problem
What type of failure has occurred
Whether the fault is currently active
How many times the fault has occurred
Understanding these messages can help engineers and service technicians diagnose machine problems more efficiently.
This article explains the basic J1939 fault-code structure and a practical process for diagnosing faults in mobile machinery.
A J1939 diagnostic fault is commonly represented by a Diagnostic Trouble Code (DTC).
A DTC contains several pieces of information, but two of the most important are:
SPN — Suspect Parameter Number
Identifies the parameter, component, or condition associated with the fault.
FMI — Failure Mode Identifier
Describes the type of failure detected.
A simplified diagnostic path looks like this:
ECU → J1939 Diagnostic Message → SPN + FMI → Controller/HMI
For example, an SPN may identify an engine coolant temperature signal, while the FMI indicates whether the value is too high, too low, or otherwise abnormal.
Therefore, reading the SPN alone is usually not enough. Interpret the SPN and FMI together.

SPN stands for Suspect Parameter Number.
Each SPN identifies a specific parameter or condition within the J1939 system.
Depending on the ECU and application, SPNs may relate to:
Engine speed
Coolant temperature
Oil pressure
Fuel pressure
Accelerator position
Battery voltage
Exhaust system parameters
Transmission information
When a fault occurs, the SPN helps identify where the problem is being reported.
However, it does not necessarily tell you why the problem occurred.
That is where the FMI becomes important.

FMI stands for Failure Mode Identifier.
It provides additional information about the nature of the fault associated with an SPN.
For example, an FMI may indicate conditions such as:
Data valid but above normal operating range
Data valid but below normal operating range
Voltage above normal
Voltage below normal
Current below normal
Mechanical system not responding correctly
Abnormal update rate
Consider a pressure sensor.
The SPN identifies the pressure parameter, while the FMI may indicate whether the pressure itself is outside the expected range or whether the electrical signal has a problem.
This distinction is important during troubleshooting.
One of the most important J1939 diagnostic messages is DM1 — Active Diagnostic Trouble Codes.
DM1 communicates currently active faults.
A DM1 message can contain information about:
Warning lamp status
Active SPN
FMI
Occurrence Count
When an ECU detects an active problem, it can transmit this diagnostic information over the J1939 network.
A mobile controller or HMI can receive the message and present the relevant fault information to the operator.
A typical architecture is:
Engine ECU → J1939 CAN Bus → Mobile Controller → HMI Display
The operator may then see a message such as:
Engine Fault
SPN: XXXX
FMI: XX
More advanced HMI software can translate these numbers into readable fault descriptions.
DM1 and DM2 serve different diagnostic purposes.
DM1 reports currently active diagnostic trouble codes.
DM2 is associated with previously active diagnostic trouble codes.
This distinction helps technicians determine whether they are dealing with a current problem or investigating a fault that occurred earlier.
For example, if a machine experienced an intermittent sensor problem during operation but the fault is no longer active, historical diagnostic information can still be useful during maintenance.
When a J1939 fault appears, technicians should avoid replacing components based only on the fault-code description.
A more systematic diagnostic process is useful.
A machine may contain several J1939 devices, including:
Engine ECU
Transmission controller
Mobile controller
Hydraulic controller
Aftertreatment controller
First, determine which ECU generated the diagnostic message.
This helps narrow the troubleshooting scope.
Identify the SPN contained in the DTC.
The SPN tells you which parameter or system the ECU is reporting.
Refer to the ECU manufacturer's diagnostic documentation when necessary because interpretation can depend on the specific device and implementation.
Next, check the FMI.
The FMI provides information about the failure mode.
For example, the same sensor may generate different diagnostic codes depending on whether its signal is:
Above the expected range
Below the expected range
Electrically shorted
Missing
Updating incorrectly
SPN + FMI together provide much more useful diagnostic information than either value alone.
After identifying the DTC, compare it with real-time operating data.
A controller or HMI may allow technicians to view:
Sensor values
Engine parameters
Battery voltage
CAN communication status
Digital input status
Analog input values
Suppose a pressure-related fault is active.
The technician can compare the reported pressure value with expected machine conditions to determine whether the problem is likely related to the sensor, wiring, mechanical system, or ECU.
Many electronic faults are caused by physical connection problems rather than failed controllers.
Check:
Connectors
Harnesses
Ground connections
Power supply
CAN wiring
Sensor wiring
Mobile machinery operates in environments with vibration, moisture, dust, temperature changes, and mechanical stress, so wiring and connector inspection is an important part of diagnosis.
If several parameters disappear at the same time, the problem may be related to communication rather than individual sensors.
Check whether:
The ECU is online
J1939 messages are being received
CAN wiring is intact
Termination is correct
Supply voltage is stable
A communication failure can cause multiple signals from the same ECU to become unavailable simultaneously.
After repairing the suspected problem, operate the machine under the relevant conditions again.
Confirm that:
The active DTC disappears
Sensor values return to normal
Communication remains stable
The fault does not reappear
This helps ensure that the root cause has actually been corrected.
An HMI can make J1939 diagnostics much easier for operators and technicians.
Instead of displaying only:
SPN 110 FMI 0
the HMI software can convert the diagnostic information into a more understandable message, for example:
Engine Coolant Temperature Too High
The diagnostic page can also display additional information such as:
ECU source
SPN
FMI
Occurrence count
Active/inactive status
Current sensor values
This reduces the need for operators to interpret raw CAN data during normal machine operation.
In many machine architectures, the HMI does not need to communicate independently with every device.
The mobile controller can collect diagnostic information from different systems and send relevant information to the HMI.
For example:
Engine ECU ── J1939 ──┐
│
Remote I/O ── CAN ─────┼── Mobile Controller ── CAN ── HMI
│
Sensors ── I/O ────────┘
The controller can combine information from J1939 devices, sensors, and I/O channels to provide a more complete view of machine status.
This is especially useful when diagnosing faults that involve more than one subsystem.
This is an important point during troubleshooting.
A fault code identifying a sensor does not automatically mean the sensor itself has failed.
Possible causes can include:
Damaged sensor
Broken wire
Loose connector
Short circuit
Poor ground
Unstable power supply
CAN communication problem
Mechanical condition outside the expected range
For this reason, J1939 DTCs should be treated as diagnostic clues, not automatic instructions to replace a component.
J1939 diagnostics provide a standardized way for electronic control units to report machine faults over the CAN network.
Understanding DTCs, SPNs, FMIs, DM1 messages, and live machine data allows engineers and technicians to diagnose problems more systematically.
A practical diagnostic workflow is:
Identify ECU → Read SPN → Read FMI → Check Live Data → Inspect Wiring → Check CAN → Verify Repair
When J1939 diagnostics are integrated with a programmable mobile controller and HMI, fault information can be presented directly to operators and service technicians, making troubleshooting faster and helping reduce machine downtime. For mobile machinery OEMs, integrating J1939 diagnostics into the control system can provide better fault visibility and a more efficient maintenance experience.