Company News

How to Diagnose J1939 Fault Codes in Mobile Machinery

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.





How J1939 Fault Codes Work

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.


How to Diagnose J1939 Fault Codes in Mobile Machinery



What Is SPN?

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.


How to Diagnose J1939 Fault Codes in Mobile Machinery


What Is FMI?

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.





What Is a DM1 Message?

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 vs DM2

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.





How to Diagnose a J1939 Fault

When a J1939 fault appears, technicians should avoid replacing components based only on the fault-code description.

A more systematic diagnostic process is useful.






Step 1: Identify the ECU Reporting the Fault

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.






Step 2: Read the SPN

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.







Step 3: Read the FMI

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.






Step 4: Check Live Machine Data

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.






Step 5: Inspect Wiring and Connectors

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.







Step 6: Check CAN Communication

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.





Step 7: Verify the Repair

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.











Using an HMI for J1939 Diagnostics

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.





Using a Mobile Controller as the Diagnostic Gateway

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.






J1939 Fault Code Does Not Always Mean a Failed Component

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.





Conclusion

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.