Close this search box.

What is J1939 Software Stack?

Learn about the layered architecture and diagnostic trouble codes (DTC)

What is SAE J1939 – An Introduction?

SAE J1939 is a software standard defined by Society of Automotive Engineers (SAE). This software standard has been designed to ensure that Electronic Control Units (ECU) manufactured by different automotive suppliers are able to communicate with each other within an in-vehicle network.

SAE J1939 standard is defined for applications in commercial vehicles for CAN (Controller Area Network) bus.

What is J1939 Stack?

J1939 stack is an embedded software stack with layered architecture, compliant with SAE J1939 standard.

This pre-tested software stack, designed by our embedded automotive engineers, can be easily integrated with commercial vehicle applications for diagnostics and communication services.

Our product engineering team has also developed J1939 bootloader for automotive ECU reprogramming services.

J1939 Layered Architecture Specifications – as Defined by SAE

The Society of Engineers (SAE) has defined all the functions supported by different layers of the J1939 software stack.

J1939 Stack

Following are the details:

  • J1939/21 – Data Link/ Transport Layer: This layer defines the Message/Frame Format, Protocol Data Unit (PDU) Formats, Message Type, Message Priority, Bus Access, Arbitration, Error Detection, PGNs and Transport Protocol Functions
  • J1939/81 – Network Management Layer: This layer defines Name ECU, Address, Network Management Procedure, Network Error Management, Address Claim and ECU Initialization procedures
  • J1939/71 – Vehicle Application Layer: This layer defines Parameter Group Numbers (PGNs), Suspect Parameter Numbers (SPNs) with the Scaling, Limits and Parameter Offset Size. 
  • J1939/73 – Application Layer for Diagnostics services: This layer defines Diagnostic Trouble Codes (DTC), Diagnostic Parameter Group Definitions and Diagnostic Messages (DM)
    (Source: SAE)

What is Diagnostic Trouble Code (DTC) in J1939 Stack?

When certain failure occurs in an automotive ECU, it is noted in the form of a Diagnostic Trouble Code (DTC), also known as Fault Code. DTCs’ are defined by SAE J1939 standard.

Diagnostic Trouble Code (DTC) has the following fields:

DTC In J1939


SPN is Suspect Parameter Number (19 bits)

FMI is Failure Mode Identifier (5 bits)

OC is Occurrence Count (7 bits)

CM is SPN Conversion Method (1 bit).

With help of DTC one can understand failure that has been reported.

For Example:

SPN = 91 Suspect parameter is accelerator pedal position

FMI = 3 Failure mode is identified as voltage above normal

OC = 9 Occurrence count indicates trouble has occurred 9 times

CM = 0 Conversion Method is Intel.

What are Diagnostic Messages (DM) in J1939 Software Stack?

Diagnostic Messages are messages which give information about the health of the system, intimating about the malfunctions which have currently occurred in the automotive system.

Following are the examples of some of the Diagnostic Messages (DM) in J1939:

  • DM1 Message (Active Diagnostic Trouble Codes):Diagnostic Message 1 (DM1) reports active diagnostic codes that are preceded by the diagnostic lamp status in the message byte. It reports diagnostic condition of the automotive ECU over the In-Vehicle Network with Suspect Parameter Number, Failure Mode Identifier and Occurrence Count.
  • DM2 Message (Previously Active Diagnostic Trouble Codes):Diagnostic Message 2 (DM2) reports previously active diagnostic codes that are preceded by the diagnostic lamp status in the message byte. It reports diagnostic condition of the Automotive ECU over the in-vehicle network with same details.
  • DM3 Message (Diagnostics Data Clear):

This message indicates that all the Diagnostic information pertaining to the previously active trouble codes should be cleared or non-active trouble codes should be reset. This ensures that the active trouble codes, which are present in ECU, are not impacted.

Get in Touch with Our J1939 Stack Development Team:

For any queries regarding the J1939 software stack or automotive ECU and tooling applications, get in touch with our team. Send us your Queries

Know more about our J1939 stack solutions and services here


About the Author

Vaibhav is a digital-marketing professional with a deep-rooted interest in everything automotive. Regular collaborations with automotive tech guys keep him apprised of all new trends in the automotive industry. Besides digital marketing, Vaibhav is fond of writing and music.

Scroll to Top