What MID Is in J1587/J1708 Diagnostics
MID stands for Message Identifier. It is a value defined in the SAE J1587 diagnostic messaging standard that identifies the electronic module (controller) responsible for a diagnostic message. MID serves the same function in J1587/J1708 that Source Address (SA) serves in J1939 — both identify which module sent a message. However, the two systems use different encoding and cannot be cross-referenced by number.
MID values are listed in the SAE J1587 standard document. Common MIDs include MID 128 (engine retarder — sometimes used for the engine controller), MID 130 (transmission), and MID 136 (brakes). Different module types have assigned MID values, allowing J1708 diagnostic tools to display the type of module that reported a fault alongside the fault's PID or SID.
Which Trucks Use MID-Based Codes
MID-based fault codes appear on trucks using the J1708/J1587 communication standards, which was the dominant protocol for heavy-duty truck diagnostics from the early 1990s through approximately 2007–2010. Trucks manufactured in that era — pre-2007 emissions, older Cummins ISX, Detroit Series 60, Caterpillar 3406E/C15 engines — use J1708/J1587 for most diagnostic communication. These trucks remain in service and their diagnostic codes still use MID/PID/SID formatting.
Transitional-era trucks (approximately 2003–2012) sometimes used both J1939 and J1708/J1587 simultaneously. Newer engine ECMs used J1939 while older ABS controllers or instrument clusters still used J1708. A complete diagnostic on these trucks requires a scan tool that supports both protocols. Understanding which protocol a module uses determines whether to look up its codes in a J1939 SPN reference or a J1587 MID/PID reference.
MID vs. Source Address: How They Compare
Both MID and Source Address identify the reporting module in their respective communication standards. The technical difference is that J1939 source addressing is dynamic (modules can claim addresses when they power on) while J1708 MID values are statically assigned in the standard. J1939 also uses a more sophisticated message structure that includes additional routing and priority information not present in J1708 messages.
A J1708 MID is not numerically equivalent to a J1939 SA. MID 128 does not mean the same module as SA 128. When working with fault code records that mix both protocols, each code must be identified by its protocol format (is this an SPN/FMI code or a MID/PID/SID code?) before looking up its meaning.
Looking Up MID Codes on Older Trucks
To decode a MID-based fault code from an older truck, use a J1587 MID/PID/SID lookup reference rather than a J1939 SPN lookup. The SAE J1587 standard document contains the complete MID and PID assignments. OEM-specific service manuals for older engines (Cummins ISX pre-2010, Detroit Series 60) include fault code lists in MID/PID/SID format with explanations and diagnostic procedures.
Several professional heavy-duty diagnostic software platforms (Noregon DLA+, JPro) support J1708/J1587 with appropriate cable adapters and include MID-based fault code interpretation. Older dedicated scan tools (such as the original Cummins INSITE versions, older Detroit DiagnosticLink versions) also support J1587 directly. A J1939-only tool will not read J1708/J1587 messages.
Related Pages
Sources
- SAE J1939 Standards Collection SAE International · official · accessed 2026-05-05 · confidence medium
Source: SAE International, SAE J1939 Standards Collection. This page paraphrases factual fields only and is not a substitute for the original document.
Open source
FAQ
Is MID only used on older trucks, or does it still appear on newer ones?
MID is part of the J1587/J1708 communication standard, which was common through the mid-2000s and was used alongside J1939 on transitional-era trucks. Most heavy trucks manufactured after approximately 2008–2010 are fully J1939-based and use SPN/FMI rather than MID/PID/SID. Older trucks still in service may use MID, and some legacy modules on newer trucks (particularly older ABS systems) may still communicate via J1587.
What is the equivalent of MID in the current J1939 system?
Source Address (SA) in J1939 serves the same purpose as MID in J1587/J1708 — it identifies which module sent the message. The MID lookup tables are separate from J1939 SA tables. A scan tool that supports J1587 will translate MID numbers to module names; a J1939-only tool will not read J1708 messages.
If a truck shows MID codes and SPN codes at the same time, does that mean two different networks are active?
Yes. On transitional-era trucks, J1708/J1587 and J1939 networks often ran simultaneously, with different modules communicating on each. Older components (certain engines, older ABS controllers) may still broadcast on J1708, while newer modules use J1939. A scan tool that supports both protocols can read fault codes from each network separately.