The Definitive Guide to SAE J1939 | Noregon (2024)

Since the late 1980s, commercial vehicles have used electronic systems in their daily operations. In modern systems, Electronic Control Units or ECUs collect, transmit, command, and control information pertaining to commercial trucks’ systems and components, which are then communicated through a Controller Area Network or CAN.

The messages shared between ECUs through CAN communicate data such as vehicle road speed, torque, oil temperature, and fault codes that indicate current and historic component issues. This information can also be used to identify and diagnose mechanical and electronic problems, making maintenance significantly easier.

SAE J1939 provides a protocol framework that allows all the vehicle’s CAN components to work together to control the vehicle’s operation and provide info about the vehicle’s health. Understanding the J1939 protocol basics is a key part of understanding truck fault codes.

What Is SAE J1939?

The SAE is the Society of Automotive Engineers, which consists of multiple subcommittees that help determine standards of design for various types of vehicles. The Truck and Bus Control and Communications Subcommittee is responsible for setting standards pertaining to commercial vehicles. This committee developed SAE J1939 and its companion documents as a family of standards that provide a basis of design for ECUs, related devices, and network topology.

J1939 is a set of standards that defines how information is transferred within a CAN to communicate information between ECUs. While a CAN provides a tool for communication, J1939 is a higher-layer protocol that provides a language for communicating using that tool.

J1939 is specifically built to work with the CAN model, but codes messages in a way that is standardized for all users of the network, making it easier to communicate data efficiently and effectively.

The History of SAE J1939

Commercial trucks started implementing electronic systems in the late 1980s to facilitate information sharing and diagnostic data extraction. One of the first electronic systems used was based on protocols SAE J1587 and J1708.

In this combination of systems, J1708 defined the physical layer of the system, while J1587 defined the application layer and the communication system. This system became more popular after manufacturers stopped using proprietary connectors and began using the standard 6-pin Deutsch-connector that was popular from the early 1990’s to the mid 2000’s.

Unfortunately, while the SAE J1587/J1708 system worked well, it was relatively limited. J1587 messages are limited to 21 bytes and transmitted at aspeed of 9.6 Kbps, and manufacturers were implementing an increasing number of sensors that required more robust data transmission methods.

In the development of a new system, the SAE leveraged the new CAN 2.0 system created in 1991, which allowed for more robust data transmission. This CAN protocol served as the base for the new SAE J1939 standard.

SAE J1939 was initially released in 1994, but the top-level document waspublished in 2000. Around the mid-2000s, manufacturers began switching from the SAE J1587/J1708 system to the SAE J1939 protocol. This was also around the time that 9-pin Deutsch-connectors were gaining popularity for their ability to pull more sensor data from vehicles.

Today, the SAE J1939 500k standard has practically replaced former standards and is expected to continue expanding in utility. With the massive growth of the Internet of Things and mobile connectivity, communication standards will continue to gain importance.

Applications of SAE J1939

Since its development, SAE J1939 has become the industry standard for trucks and buses. On top of these vehicle types, however,SAE J1939 has become a standard for a wide variety of commercial vehicles, including:

  • Foresting machinery such as delimbers and skidders
  • Mining vehicles like bulldozers and excavators
  • Military vehicles like tanks and transport vehicles
  • Agriculture equipment such as tractors and harvesters
  • Construction equipment including cranes
  • Emergency vehicles including ambulances and fire trucks
  • Maritime vessels including military and commercial ships

While heavy-duty vehicles are the most well-known applications of SAE J1939, that isn’t the extent of this specification’s application. Many other industries use SAE J1939 as a whole or as a basis for their own standards. In fact, many military standards use SAE J1939 as a base or framework.

Understanding the Variables and Acronyms of SAE J1939

There are various variables and acronyms associated with SAE J1939 that are essential to recognize and understand. While they may seem confusing at first, they are relatively straightforward once you understand how they relate to one another. The most important of these are the variables included in diagnostic trouble codes or DTCs. Understanding truck fault codes depends on understanding these variables and what they mean.

The first and most important acronym to understand is DTC. DTC stands for Diagnostic Trouble Code and is a string of numbers that, when paired with FMI (Failure Mode Indicator) information, identifies the location and nature of a problem in a vehicle. The first number is an SPN (Suspect Parameter Number). The SPN codes help determine the system having an issue. The second number is the FMI which indicates the nature of the problem (e.g. circuit short, data high, plausibility).

Below is a summary of terms belonging to the SAE J1587/J1708 and the SAE J1939 standard and how they compare:

Acronyms for SAE J1587/J1708

The J1587/J1708 system uses a string of codes and identifiers to identify the location and nature of a problem. These numbers mean specific things based on their location. They are explained in more detail below:


MID stands for Message Identifier and is the first of the three problem-identifying numbers in the SAE J1587/J1708 coding system. The MID identifies the system that the signal is coming from. Each component within a vehicle’s system has a unique MID — for example, MID 218 refers to signals coming from the engine, while MID 206 identifies a signal coming from a radio. There are hundreds of defined MIDs.


The second number in the SAE J1587/J1708 code is either a PID or an SID — there cannot be both in the same code. SID stands for subsystem identifier. SIDs are used in combination with an MID to indicate a subsystem within a specific system. For example, a signal may show an MID of 128 and an SID of 6, indicating that the signal is coming from injector number 6 in the engine system. SIDs are unique to each system — for example, SID 6 will indicate injector number 6 in the engine, but the C6 solenoid valve in the transmission. Some manufacturers have proprietary SIDs, known as PSIDs.


PID stands for Parameter Identifier and is a system of numbers and names that quantifies the data being read from each system. For example, for a signal coming from an oil system, the PID shows the quantifiable readings from that system. Some manufacturers have proprietary PIDs, known as PPIDs.


The third number in this system is the FMI, which is found in every DTC.

While this system worked, it didn’t allow the specificity needed for newer, more advanced commercial trucks. The SAE J1939 system addressed this by taking the existing system and altering it to allow for greater detail.

Acronyms for SAE J1939

While based on similar principles, the SAE J1939 system organizes data differently than the previous system. Instead of having three identifiers, J1939 messages are structured into an identifier and associated parameters, allcoded into a hexadecimal format. The first 29 bits of the signal is called the “message” and identifies the source, while the remaining 54 bits are 8-byte data parameters, or “signals” associated with the message. The identifier contains a PGN, while the parameters consist of SPNs.


A PGN is a unique ID that tells the system the function of the message and any associated data parameters. The PGN comes at the beginning of the J1939 message in the 29-bit identifier — the first three bits indicate the message priority, the next 18 bits are the PGN and the last eight bits are the source address.


SPN stands for Suspect Parameters Number and is functionally the same as a PID. In fact, SPN and PID numbers are nearly identical from 1 to 511, but SPN numbers go beyond 511 to over 50,000. SPNs are grouped after the PGN in a DTC.

In total, an SAE J1939 message typically consists of a minimum of 93 bits and tells users the exact source and nature of data, which can be used to diagnose issues as they arise.

The Definitive Guide to SAE J1939 | Noregon (2024)


Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated:

Views: 5911

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.