Company News

What Is a J1939 DM1 Message? A Guide to Active Fault Codes

SAE J1939 allows electronic control units in mobile machinery to exchange not only operating data but also diagnostic information.

One of the most important diagnostic messages is DM1.

DM1 is used to report currently active Diagnostic Trouble Codes (DTCs). When an engine ECU or another J1939 device detects an active fault, DM1 can communicate information such as:

  • Lamp status

  • SPN

  • FMI

  • Occurrence Count

A mobile controller or HMI can receive this information and use it to warn operators, display fault details, or support troubleshooting.

This article explains what a J1939 DM1 message is, what information it contains, and how it can be used in mobile machinery diagnostic systems.







What Does DM1 Mean in J1939?

DM1 stands for:

Diagnostic Message 1

Its primary purpose is to report active diagnostic trouble codes from a J1939 device.

For example, an engine ECU may detect:

  • Excessive coolant temperature

  • Low oil pressure

  • Sensor circuit faults

  • Abnormal voltage

  • Communication problems

When one of these faults becomes active, the ECU can report it through DM1.

A simplified diagnostic path looks like this:


Engine ECU
   ↓
Active Fault Detected
   ↓
J1939 DM1
   ↓
Mobile Controller
   ↓
HMI Warning


This allows fault information to travel across the same J1939 network used for normal machine data.






What Information Does a DM1 Message Contain?

DM1 contains two main categories of diagnostic information:

1. Diagnostic lamp status

2. Active Diagnostic Trouble Codes

The DTC information includes important fields such as:

  • SPN — Suspect Parameter Number

  • FMI — Failure Mode Identifier

  • OC — Occurrence Count

Together, these fields help identify what fault has occurred.




SPN in a DM1 Message

SPN stands for Suspect Parameter Number.

It identifies the parameter, signal, component, or condition associated with the fault.

For example:

SPN 110

refers to:

Engine Coolant Temperature

If DM1 contains SPN 110, the ECU is reporting a fault related to engine coolant temperature.

However, SPN alone does not describe the type of failure.

For that, DM1 also includes an FMI.



What Is a J1939 DM1 Message? A Guide to Active Fault Codes


FMI in a DM1 Message

FMI stands for Failure Mode Identifier.

It describes how the parameter identified by the SPN has failed or become abnormal.

For example:

SPN 110 FMI 0

indicates that the engine coolant temperature is valid but above its normal operating range at the most severe level.

The basic relationship is:

SPN = What parameter has a problem?

FMI = What type of problem has occurred?

This combination forms an important part of the J1939 DTC.





What Is the Occurrence Count?

DM1 can also include an Occurrence Count (OC) as part of each DTC.

The occurrence count provides information about how many times the ECU has detected the fault, according to the ECU's diagnostic implementation.

For example:

SPN: 110
FMI: 0
OC: 3

This tells the diagnostic system that the fault is associated with SPN 110 and FMI 0, with an occurrence count of 3.

Occurrence information can provide additional context when technicians investigate intermittent or recurring faults.






What Is Lamp Status in DM1?

DM1 also includes information related to diagnostic lamps.

J1939 defines diagnostic lamp indications such as:

  • MIL — Malfunction Indicator Lamp

  • RSL — Red Stop Lamp

  • AWL — Amber Warning Lamp

  • PL — Protect Lamp

These lamp states help indicate the general severity or category of a diagnostic condition.

For example, a serious engine condition may be associated with a Red Stop Lamp request, while another fault may trigger an Amber Warning Lamp.

The HMI can use this information to display an appropriate visual warning to the operator.






DM1 Can Contain More Than One Active DTC

A machine does not necessarily have only one active fault at a time.

An ECU may detect multiple faults simultaneously.

For example:

Engine ECU

DTC 1
SPN 110
FMI 0

DTC 2
SPN XXX
FMI 3

DTC 3
SPN XXX
FMI 9

DM1 can communicate multiple active DTCs.

This is important when designing controller and HMI software because the system should be able to process and display more than one fault.






Single-Frame and Multi-Packet DM1 Messages

A CAN data frame has limited payload capacity.

When the DM1 information is small enough, it may fit within a single CAN frame.

However, when multiple active DTCs need to be transmitted, the diagnostic information may exceed the capacity of one Classical CAN frame.

J1939 can then use its transport protocol to transmit the larger message across multiple CAN frames.

Conceptually:

Few Diagnostic Data
       ↓
Single CAN Frame

Multiple DTCs
       ↓
J1939 Transport Protocol
       ↓
Multiple CAN Frames

This is important for controller software because receiving DM1 may involve more than simply reading one CAN frame.







How Often Is DM1 Transmitted?

DM1 is not simply a message that appears once and disappears.

An ECU can transmit DM1 periodically while faults remain active, and diagnostic state changes can also affect transmission behavior.

This allows other devices on the network to maintain an updated view of active faults.

For a mobile controller, this means DM1 information can be monitored continuously rather than treated as a one-time event.





How a Mobile Controller Processes DM1

A programmable mobile controller can receive J1939 DM1 messages from an engine ECU or other compatible devices.

A simplified process is:

Engine ECU
   ↓
DM1
   ↓
Mobile Controller
   ↓
Decode Diagnostic Data
   ↓
SPN + FMI + OC + Lamp Status
   ↓
Fault Logic

After decoding the message, the controller can use the information for different purposes.

For example, it may:

  • Send a warning to the HMI

  • Record the fault

  • Trigger an audible alarm

  • Change machine operating mode

  • Limit certain functions

  • Support maintenance diagnostics

The exact machine response depends on the application and control strategy.






How an HMI Displays DM1 Faults

Raw DM1 data is useful to engineers, but operators usually need simpler information.

Instead of displaying:

SPN 110 FMI 0

an HMI can show:

ENGINE COOLANT TEMPERATURE TOO HIGH

A diagnostic page may still provide detailed information for technicians:

ACTIVE ENGINE FAULT

Source: Engine ECU

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

Coolant Temperature: 108°C

This allows one interface to serve both operators and maintenance personnel.







DM1 in a Complete Machine Diagnostic System

DM1 becomes especially useful when combined with other machine information.

For example:

             Engine ECU
                │
             J1939
                │
                ↓
        Mobile Controller
         ↙      ↓       ↘
      DM1    Live Data   I/O
       ↓         ↓        ↓
       └─────────┬────────┘
                 ↓
                HMI

The controller may combine:

  • J1939 diagnostic messages

  • Engine operating parameters

  • Analog sensor values

  • Digital I/O status

  • CAN device status

This gives technicians more context when troubleshooting a machine.

For example, a coolant-temperature DTC becomes more useful when the HMI can also display the current coolant temperature and engine operating condition.





DM1 vs DM2

DM1 and DM2 are both J1939 diagnostic messages, but they serve different purposes.

DM1 is used for currently active DTCs.

DM2 is associated with previously active DTCs.

In simple terms:

MessagePurpose
DM1Active faults
DM2Previously active faults

If an abnormal condition is happening now, DM1 is the primary diagnostic message of interest.

If a technician is investigating a fault that occurred earlier but is no longer active, previously active diagnostic information may also be useful.





Is DM1 the Same as a J1939 Fault Code?

Not exactly.

DM1 is a diagnostic message, while the DTC is the fault information carried within that message.

The relationship can be understood as:

DM1
│
├── Lamp Status
│
├── DTC 1
│    ├── SPN
│    ├── FMI
│    └── OC
│
├── DTC 2
│    ├── SPN
│    ├── FMI
│    └── OC
│
└── ...

So saying “DM1 fault code” is convenient in everyday discussion, but technically DM1 is the message that communicates active DTC information.






Does a DM1 Fault Mean the Component Is Broken?

Not necessarily.

Suppose DM1 reports a DTC related to a pressure sensor.

Possible causes may include:

  • Failed sensor

  • Broken wire

  • Loose connector

  • Open circuit

  • Short circuit

  • Poor ground

  • Power supply problem

  • Actual pressure outside the expected range

The DTC tells technicians what condition the ECU has detected, but further troubleshooting is still required to determine the root cause.

DM1 should therefore be treated as an important diagnostic starting point rather than an automatic instruction to replace a component.





Using DM1 for Machine Protection

DM1 information can also become part of the machine control strategy.

For example, if the controller receives a critical engine fault, the system may:

DM1 Critical Fault

↓

Controller Evaluates Fault

↓

HMI Warning + Audible Alarm

↓

Limit Machine Function

The actual response should be defined according to the machine's control and safety requirements.

This allows J1939 diagnostics to support not only maintenance but also more intelligent machine operation.





Conclusion

J1939 DM1 is one of the key diagnostic messages used in mobile machinery.

It communicates currently active diagnostic trouble codes together with information such as:

  • Lamp status

  • SPN

  • FMI

  • Occurrence Count

A mobile controller can receive and decode DM1 messages, while an HMI can convert the diagnostic data into clear warnings and detailed service information.

The basic diagnostic flow is:

ECU detects fault → DM1 transmits DTC → Controller decodes SPN/FMI → HMI displays fault → Technician diagnoses the cause

For mobile machinery OEMs, integrating DM1 diagnostics into the controller and HMI can improve fault visibility, simplify troubleshooting, and help reduce machine downtime.