TRUCK SAE CODES SUCH AS J1939, J1708, SPN, FMI, & MID EXPLAINED
The Society of Automotive Engineers (SAE) and the American Trucking Association (ATA)
Please note: this article was originally published on October 13, 2016 on the old Diesel Laptops blog.
Without making this too complicated, the short version is this: commercial trucks started to go away from mechanical systems to electronic systems in the early 1990s. When the first generations of these trucks started to come on the market, each truck maker was using their own special plugs and their own proprietary tools. This is where the Cummins QuickCheck, ProLink 9000, and other tools started to emerge. These were handheld devices, and in some cases, you could purchase additional cartridges to get the software you needed. Here are some examples of those.
The problem with this solution was that the truck and engine manufacturers were not talking and communicating well with each other, and since certain vendors such as CAT, Cummins, Bendix, Meritor, and others are used in a variety of different truck manufacturers, they needed to get standardized. This is where the SAE and the ATA stepped in and started developing some standardization.
Download the PDFs
During this blog post, you will see references to certain PDF files that contain master lists of common SAE standards that we will be covering. This includes lists of MIDs, PIDs, SPNs, SIDs, and a lot more. To have this list emailed to you, please fill out the form below.
J1708 – THE FIRST STANDARD
In the early to mid-1990s is when we first saw the standard 6-pin plug placed in commercial trucks. This would be used for the next 10-15 years, and we now saw computerized diagnostic tools enter the market. This was great because instead of having to purchase tools that only dealers could have, hardware and software were made available to the general public.
THE INTRODUCTION OF MID, PID, SID, & FMI
Now that a standard had been set for both the physical connections and the software language, the manufacturers need a logical way to read and display this data. This is where we first saw this new system. If you have ever used some diagnostic software or a generic code reader, these acronyms will look familiar. Here is how they work.
MESSAGE IDENTIFIERS (MID’S)
The MID tells which system it is coming from. Each component on a truck (Engine, transmission, ABS, etc…) all have a MID that is used. There are hundreds of MIDs that are defined, but only a handful are commonly used. Here are the most common ones:
- MID 128 = Engine
- MID 130 = Transmission Control Unit
- MID 136 = Anti-lock Brakes (ABS)
- MID 140 = Instrument Cluster
- MID 142 = Satellite Communications
- MID 144 = Vehicle ECU
- MID 146 = Climate Control ECU
- MID 206 = Radio
- MID 216 = Lighting Control Module
- MID 219 = VORAD/ACC
- MID 232 = Airbag Control Unit
- MID 249 = Body Builder Module
- MID 250 = Steering Wheel Module
We have also compiled a list of all MIDs that are created. Please use the link at the top of this page to receive them.
PARAMETER IDENTIFIERS (PIDS)
Parameters Identifiers, or PIDs, are numbers and names used to identify data being displayed. So think if PIDs in terms of “readings” such as oil temperature, coolant level, miles driven, engine RPMs, and so on. PID is a J1708 term and PIDs go from 0 to 511.
The entire PID list can be downloaded by filling out the form at the top of the page. It is approximately 11 pages in total.
FAILURE MODE IDENTIFIERS (FMI)
Now that we have defined MID (The component) and PID (types of data), we can talk about Failure Mode Identifiers (FMI). Every diagnostic trouble code (DTC) that you find will have an FMI. This code is set by the ECM detecting a variety of problems, such as too much voltage, not enough voltage, resistance is incorrect, and so on. So here is the list of possible FMI values:
- 0 = Data Valid but Above Normal Operational Range, Most Severe Level
- 1 = Data Valid but Below Normal Operational Range, Most Severe Level
- 2 = Data Erratic, Intermittent or Incorrect (rationality)
- 3 = Voltage Above Normal, or Shorted to High Source
- 4 = Voltage Below Normal, or Shorted to High Source
- 5 = Current Below Normal, or Open Circuit
- 6 = Current Above Normal, or Grounded Circuit
- 7 = Mechanical System not Responding or Out of Adjustment
- 8 = Abnormal Frequency or Pulse Width or Period
- 9 = Abnormal Update Rate
- 10 = Abnormal Rate of Change
- 11 = Failure Code not Identifiable
- 12 = Bad Intelligent Device or Component
- 13 = Out of Calibration
- 14 = Special Instructions
- 15 = Data Valid but Above Normal Range: Least Severe Level
- 16 = Data Valid but Above Normal Range: Moderately Severe Level
- 17 = Data Valid but Below Normal Range: Least Severe Level
- 18 = Data Valid but Below Normal Range: Moderately Severe Level
- 19 = Received Network Data in Error: (Multiplexed Data)
- 20 = Data Drifted High (rationality high)
- 21 = Data Drifted Low (rationality low)
- 22 to 30 = Reserved for SAE Assignment
- 31 = Condition Exists
SUBSYSTEM IDENTIFIERS (SIDS)
Now that we understand that a MID is a component, such as an engine, it can be further broken down into subsystems. Each subsystem has its own set of SIDs. For example, MID 128 (Engine) could have SID 6 for Injector number 6. However, SID 6 on a Mid 136 (Transmission) is for the C6 Solenoid Valve.
We have compiled a PDF that contains all the SIDs for J1708. It is broken down by MID, which this list gives you:
- Common SIDs
- Engine SIDs (MID = 128, 175, 183, 184, 185, 186)
- Transmission SIDs (MID = 130)
- Brake SIDs (MID = 136, 137, 138, 139, 246, 247)
We have also compiled a list of the smaller subsystems as well, which includes:
- Instrument Panel SIDs (MID = 140, 234)
- Vehicle Management Systems SIDs (MID = 142)
- Fuel System SIDs (MID = 143)
- Cab Climate Control SIDs (MID = 146, 200)
- Suspension SIDs (MID = 150, 151, 152, 153)
- Vehicle Navigation SIDs (MID = 162, 191)
- Vehicle Security SIDs (MID = 163)
- Tire SIDs (MID = 166, 167, 168, 169)
- Particular Trap System SIDs (MID = 177)
- Refrigerant Management Systems SIDs (MID = 190)
- Tractor/Trailer Bridge SIs (MID = 217, 218)
- Collision Avoidance Radar SIDs (MID = 219)
- Driveline Retarder SIDs (MID = 222)
- Vehicle Sensors to Data Coverter SIDs (MID = 178)
- Safety Restraint Systems SIDs (MID = 232)
- Forward Road Image Processor SIDs (MID = 248).
You can download the entire list of SIDs for each of these MIDs using for the form at the top of the website. It is approximately 40 pages in total.
The important thing to note when it comes to diagnostic trouble codes is that you will either have a PID or SID, followed with an FMI. You will never have both.
PROPRIETARY PIDS AND SIDS (PPID AND PSID)
Some manufacturers, mainly Volvo & Mack, decided that they needed to add their own PIDs and SIDs to the mix. We call this Proprietary PID and Proprietary SID, or PPID and PSID for short. While we do not have a list of these, it is important to know what they are.
J1939 – GOODBYE J1708!
Before we can move much further, everyone needs to understand the relationship between J1708 and J1939. Basically, J1708 worked great, but it was quickly becoming obsolete. This is because manufacturers started adding more sensors, needs to collect more data, and everything was getting more complex. This is where J1939 steps in, and around the mid-2000’s equipment manufacturers started to navigate away from the J1708 to J1939. This is where we started seeing the 9-pin Deutch connector placed in trucks.
PARAMETER IDENTIFIERS (PIDS) & SUSPECT PARAMETERS NUMBER (SPN)
Parameters Identifiers, or PIDs, are numbers and names used to identify data being displayed. So think if PIDs in terms of “readings” such as oil temperature, coolant level, engine RPMs, and so on. PID is a J1708 term, and then SPN is a J1939 term. If you compared a list of PIDs to SPNs, you would notice two things. One, PIDs go from 0 to 511. SPNs go from 0 to over 50,000. Again, the SPN was needed because of the extra complexity of commercial trucks. The other thing you would notice that both lists are almost identical from 0 to 511.
The important thing to understand is that there is a “static” list of SPN numbers, but not every vehicle uses each one. An example is CAT, which can be found on Numerakod’s website. This website shows which SPNs are currently being used by CAT.
We have also compiled a list of all known SPNs, which is available by using the form at the top of this page.
DIAGNOSTIC TROUBLE CODES & HOW IT ALL RELATES
So now that we understand the basics of how trucks read & display code information, we can take it one step further and explain how it all related to diagnostic trouble codes. Almost all equipment manufacturers (Also called OEMs) take all of these acronyms we just discussed and then translate them to a flash code. This is where a lot of customers run into problems. Let's use one of the code readers we sell as an example.
In this example, we have a $300 or so heavy truck scanner connected to an ABS system. Notice how we get the SID and the FMI? Those results are what give us our generic, or “raw data” from the ECM. This is why you purchase a generic scanner to “read” codes. The problem is that we do not know the true flash code that this ABS manufacturer uses. The cheaper hand-held scanner can’t convert the J1708 & J1939 codes to true flash codes. At this point, the technician using the tool can attempt to find service manuals or use Internet searches to find repair and troubleshooting information.
The next example is a universal diagnostic software program called PF-Diagnose, which is made by Pocketfleet. In this program, it shows us the column for “CODE” and “FMI”, but also gives us the “FLASH” code. On the code that is highlighted, you will see that we have a flash code of “26”, which also is PID 108 FMI 03. This is great because now we actually find the repair information in a service manual or easily find the information online.
So there you have, a beginners guide to all those crazy acronyms that you see with commercial trucks and diesel diagnostic tools. We hope that this information gave you some insight into how these heavy-duty scan tools work, and why you need to make sure you match up the correct tool with what you are trying to accomplish. Comments are always appreciated!