How J1939 Sends Large Messages: Understanding Multi-Packet Communication
We explored how J1939 carries data using structured PGNs, SPNs, bytes, and bits. However, many pieces of information inside a vehicle do not fit within a single 8-byte CAN frame. Examples include:
- Vehicle Identification Number (VIN)
- Detailed component information
- Large diagnostic messages
- Configuration data
- Certain proprietary data sets
To handle this, J1939 includes a transport protocol that allows larger messages to be broken into smaller packets and reassembled by devices like ELDs. At HardFault, this mechanism is crucial because essential data such as VIN and extended diagnostic information rely on it.
This episode explains how J1939 reliably sends these large messages, in a simple and accessible way.
Why Multi-Packet Communication Exists
A standard CAN frame can only carry eight bytes of data. Many vehicle parameters, especially identification and diagnostic information, are larger than this.
For example:
- VIN requires 17 characters
- Detailed diagnostic records may contain dozens of bytes
- ECU manufacturer information can exceed typical frame limits
Without a multi-packet system, this data could never be transmitted over CAN.
J1939 solves this with a standardized transport protocol that ensures all devices interpret larger messages consistently.
Two Main Methods for Large Messages
J1939 uses two communication modes for transferring multi-packet data:
- Broadcast Announce Message (BAM)
- Request to Send / Clear to Send (RTS / CTS)
Both serve different purposes but follow similar principles.
Broadcast Announce Message (BAM)
BAM is used when the sending ECU wants to send large data openly to all devices on the network. It does not wait for permission or acknowledgment. Instead, it announces the size of the message, the number of packets, and then sends them sequentially.
This method is ideal for information such as:
- VIN
- Component identification
- Public broadcasted records
For ELD development, this is how VIN is typically received from the engine control module.
Request to Send / Clear to Send (RTS / CTS)
RTS / CTS is used for point-to-point communication.
In this case:
- The sender asks permission to transmit
- The receiver responds with how many packets it can accept at a time
- The sender sends them accordingly
- The receiver acknowledges completion
This mechanism ensures the receiver is not overloaded and prevents network congestion. It is commonly used for diagnostic data or information requested specifically by an ELD or service tool.
How an ELD Reassembles Large Messages
When the HardFault ELD receives multi-packet data, it follows a standard decoding flow:
- Detect the transport protocol message
- Read the total message size
- Track the expected number of packets
- Store each packet in order
- Combine them into a single complete data set
- Process and decode the final information
This ensures that even long messages, such as VIN or diagnostic events, are interpreted correctly without missing or corrupting data.
Why Transport Protocol Is Important for ELD Accuracy
Some of the most important ELD-required data cannot fit in eight bytes. For example:
- VIN is required for identity verification
- Diagnostic data is essential for safety and compliance
- Certain engine parameters may require multi-packet delivery
If an ELD cannot decode multi-packet messages properly, it will fail to capture essential information.
At HardFault, we design our ELD firmware to handle all transport protocol conditions, including packet loss, incomplete streams, and varying packet timing across vehicle brands.
Multi-Packet Messages Keep Vehicles Fully Transparent
From an industry perspective, the transport protocol allows manufacturers to provide complete visibility into essential vehicle information. Without it:
- Diagnostic tools would be incomplete
- Telematics systems would miss key data
- Compliance devices like ELDs would fail regulatory checks
This mechanism ensures that vehicles can communicate both simple and complex information with the same reliability.
Conclusion
Multi-packet communication is a critical part of J1939. It enables the transmission of larger datasets such as VIN, diagnostics, and configuration information. For ELDs and telematics systems, the ability to correctly receive and reassemble these messages is essential for compliance, accuracy, and reliability.
Understanding this mechanism brings us closer to a complete picture of how data flows inside a heavy vehicle.

Leave a comment