One protocol for an entire industry
A heavy truck is assembled from major components made by different suppliers, often chosen by the fleet customer: engine, transmission, retarder, axle, brakes, body equipment. That only works if every ECU interprets the network the same way. SAE J1939 provides exactly that: a complete, openly documented stack on top of CAN 2.0B extended frames, from wiring rules to the meaning and scaling of individual parameters. It is not a single document but a family, each part numbered after the slash.
Anatomy of the 29-bit identifier
Classic CAN treats the identifier as one number that sets priority in arbitration. J1939 gives the 29 bits of the extended identifier internal structure, so that one field tells every receiver what the message contains and another tells it who sent it.
PDU2 (PF 240 or above): PS extends the parameter group.
The parameter group number (PGN) is the 18-bit name of the content: EDP, DP, PF and, for PDU2 messages only, PS. In PDU1 messages the PS field carries a destination address and is not part of the PGN. The priority is deliberately excluded, so the same PGN can be sent at a different priority without changing its meaning. The standard recommends priority 3 for time-critical control messages and 6 for most other traffic.
PGN = EDP × 2¹⁷ + DP × 2¹⁶ + PF × 2⁸ + (PF ≥ 240 ? PS : 0)Worked example: decoding four identifiers
- 010x18EEFF00: Address Claimed
Priority 6, EDP 0, DP 0, PF 0xEE (238, so PDU1), PS 0xFF as destination (global), SA 0x00. PGN 0xEE00 = 60928: the ECU at address 0, by convention engine #1, is announcing its address to every node.
- 020x18EA00F9: Request
Priority 6, PF 0xEA (234, PDU1), destination 0x00, SA 0xF9. PGN 0xEA00 = 59904: an off-board diagnostic tool at its preferred address 249 asks engine #1 to transmit a specific parameter group.
- 030x18FECA00: DM1
Priority 6, PF 0xFE (254, PDU2), group extension 0xCA, SA 0x00. PGN 0xFECA = 65226: the active diagnostic trouble codes of engine #1, broadcast to the whole network.
- 040x1CECFF00: Transport protocol
Priority 7, PF 0xEC (236, PDU1), destination 0xFF, SA 0x00. PGN 0xEC00 = 60416, TP.CM: engine #1 announcing a multi-packet broadcast (BAM).
Source addresses and address claiming
The 8-bit source address gives 254 usable addresses (0 to 253); 254 is the null address used by a node that could not claim one, and 255 is the global destination. J1939 assigns preferred addresses to common functions: 0 for engine #1, 3 for transmission #1, 11 for the brake system controller, 23 for instrument cluster #1, 249 and 250 for off-board diagnostic tools. Fixed addresses keep simple vehicles simple, but a body builder adding a crane controller or a refrigeration unit needs a way to avoid conflicts.
J1939-81 solves this with address claiming. At power-up every node sends an Address Claimed message (PGN 60928) containing its 64-bit NAME. If two nodes claim the same address, the one with the numerically lower NAME keeps it. The other either claims a different address, if it is arbitrary-address capable, or announces that it cannot claim one by sending from the null address 254.
Physical layers: 250 kbit/s, 500 kbit/s and CAN FD
For two decades, 250 kbit/s was synonymous with J1939. Growing traffic from emissions aftertreatment, driver assistance and telematics pushed the industry to 500 kbit/s with J1939-14, and SAE has since published CAN FD variants. All variants are high-speed CAN per ISO 11898-2 with a linear backbone, short stubs and a 120 Ω terminator at each end of the backbone. J1939 practice places these terminators at the backbone ends in the harness rather than inside ECUs, so that removing an ECU never removes termination.
One trunk, a terminator at each physical end and short stubs to every control unit.
Every node on a segment must run the same bitrate. A 250 kbit/s ECU on a 500 kbit/s backbone does not just fail to communicate; it produces error frames that disturb everyone else. Mixed fleets and retrofits therefore rely on gateways between segments of different speeds, as described in Bitrates and bus types.
The 9-pin diagnostic connector
J1939-13 defines the off-board diagnostic connector, a 9-pin Deutsch-style receptacle: A ground, B battery positive, C CAN-H, D CAN-L, E CAN shield, F and G the legacy J1708 pair, H and J manufacturer-specific, often a second CAN. The original black Type I connector belongs to 250 kbit/s networks. The green Type II connector, seen on North American trucks from around model year 2016, marks vehicles whose diagnostic network may run at 500 kbit/s. Its centre pin is thinner, so a green tool cable fits both green and black receptacles, while an older black cable cannot be plugged into a green receptacle. A 250 kbit/s-only tool is mechanically kept off a 500 kbit/s network.
Parameter groups, SPNs and data representation
A parameter group bundles related parameters that are transmitted together at a defined repetition rate. Each parameter is identified by a suspect parameter number (SPN), with a defined length, resolution, offset, data range and position in the group. Multi-byte values are little-endian. A powerful convention runs through the whole standard: the top of every value range is reserved for status, so a receiver can always tell a real measurement from an error or from a parameter the sender does not support.
physical value = raw × resolution + offset → 125 × 1 °C − 40 °C = 85 °CThe same rule protects against a classic integration error. With that definition, a raw 0xFE does not mean 214 °C, it means the sensor or its ECU reports an error; a raw 0xFF means the parameter is not available from this sender. A receiver that converts every byte into engineering units without checking the reserved ranges will display impossible values the moment a sensor fails.
Transport protocol: messages longer than eight bytes
Fault code lists, vehicle identification and configuration data do not fit into eight bytes. J1939-21 defines a transport protocol that segments such messages into packets of seven data bytes plus a sequence number. Connection management uses TP.CM (PGN 60416, 0xEC00) and the data travel in TP.DT packets (PGN 60160, 0xEB00). With at most 255 packets, the limit is 255 × 7 = 1,785 bytes.
- 01Size the message
A DM1 message with lamp status (2 bytes) and five active fault codes (4 bytes each) carries 22 bytes, so it needs ⌈22 ÷ 7⌉ = 4 TP.DT packets.
- 02Add the pacing
Broadcast with BAM at the classic minimum spacing of 50 ms, the four packets take at least 200 ms after the announcement, compared with a single frame for a message of eight bytes or less.
- 03Scale it up
A maximum-size BAM of 1,785 bytes needs 255 packets: at 50 ms spacing that is about 12.8 s; at 200 ms it is 51 s.
- 04Draw the conclusion
Transport protocol is designed for occasional larger messages such as fault lists and identification. Fast control data always fits into single frames.
CAN FD removes much of this overhead. J1939-22 packs several parameter groups into one CAN FD frame of up to 64 bytes and defines its own transport mechanism for larger messages. The Classic CAN vs CAN FD article explains the frame format behind it.
Bus load at 250 and 500 kbit/s
Extended frame, 8 data bytes: 131 bits without stuffing … 160 bits with worst-case stuffing (including the 3-bit interframe space)Take a powertrain segment carrying 600 frames per second. At 250 kbit/s that is 600 × 131 = 78,600 bit/s, or 31.4 % load, rising to 600 × 160 = 96,000 bit/s, or 38.4 %, with worst-case bit stuffing. The same traffic at 500 kbit/s occupies 15.7 to 19.2 %. Each new function, from advanced emergency braking to aftertreatment diagnostics, adds messages, and the transport protocol adds bursts on top. That arithmetic is why new heavy-duty platforms move to 500 kbit/s and CAN FD.
Beyond the truck: ISOBUS, trailers, buses and boats
ISOBUS (ISO 11783)
Agricultural tractors and implements from different manufacturers connect through ISOBUS, standardised as ISO 11783 and built on J1939 principles at 250 kbit/s. Its physical layer (ISO 11783-2) uses four unshielded twisted wires: CAN-H and CAN-L plus TBC_PWR and TBC_RTN, which feed active terminating bias circuits at each end of a segment. Because termination is powered independently of the ECUs, the network stays correctly terminated when an implement is coupled or uncoupled in the field. Higher layers define the virtual terminal (ISO 11783-6) and the task controller (ISO 11783-10), and newer functions such as tractor implement management build on them. The Agricultural Industry Electronics Foundation (AEF) runs conformance testing between manufacturers.
Truck and trailer: ISO 11992
The link between a towing vehicle and its trailer uses ISO 11992, not the J1939 backbone. It is a point-to-point CAN connection at 125 kbit/s with a physical layer (ISO 11992-1) designed for the electrical environment of the coupling. ISO 11992-2 carries brake and running-gear messages over pins 6 and 7 of the ISO 7638 ABS/EBS connector; ISO 11992-3 covers other equipment such as lighting and body functions. The towing vehicle's gateway translates between this link and the internal J1939 network.
Buses, marine and stationary engines
City buses and coaches use J1939 in the powertrain just like trucks, often with a dedicated gateway that publishes a defined, read-only subset of vehicle data for fleet systems, the approach formalised in the FMS-Standard. Marine electronics use NMEA 2000 (IEC 61162-3), which builds on the J1939 data link layer and address claiming. Generator sets, compressors and construction machines with industrial diesel engines expose their engine controllers through J1939 as well. Wherever a heavy-duty engine goes, J1939 usually goes with it. Commercial vehicles also host the tachograph, covered in Tachographs and the 2026 rules for light commercial vehicles.
Diagnostics: the DM messages
J1939-73 defines diagnostic messages, abbreviated DM. The most important is DM1, broadcast once per second by every ECU that supports it, which lists active trouble codes together with the status of four lamps: malfunction indicator, red stop, amber warning and protect. Each diagnostic trouble code (DTC) is four bytes: a 19-bit SPN that names the affected parameter, a 5-bit failure mode identifier (FMI), a 7-bit occurrence count and a conversion method bit.
Is J1939 just CAN with 29-bit identifiers?
No. CAN defines how frames are transmitted. J1939 adds wiring rules, a structured identifier, addressing and address claiming, a transport protocol, diagnostics and a dictionary of standard parameters, so that ECUs from different suppliers interoperate.
Can a 500 kbit/s J1939 network include older 250 kbit/s ECUs?
Not on the same segment. Every node on a segment must use the same bitrate. Mixed installations use a gateway between a 250 kbit/s and a 500 kbit/s segment.
Is ISOBUS the same as J1939?
ISOBUS (ISO 11783) is based on J1939 and shares its identifier structure, addressing and transport principles, but it adds its own physical layer with powered termination and application layers for implements, such as the virtual terminal and task controller.
Does J1939 use CAN FD?
Yes. SAE published the J1939-17 CAN FD physical layer at the end of 2020 and the J1939-22 data link layer in 2021. Adoption in new heavy-duty platforms is gradual, and classic J1939 will remain in service for many years.
What does the green 9-pin diagnostic connector mean?
It is the J1939-13 Type II connector. It marks vehicles whose diagnostic network may run at 500 kbit/s and is keyed so that older 250 kbit/s-only tool cables cannot be plugged in.
