The J1939 protocol stack is a complete, portable ANSI-C implementation of SAE J1939 for heavy-duty on- and off-highway vehicles and machinery. It gives an ECU the full J1939 communication layer over CAN — parameter groups, multi-packet transport, address claiming and diagnostics — behind a clean, MISRA-C-friendly API to build on. For functional-safety designs, a dedicated J1939 Safety Stack is available separately.
What the J1939 protocol stack covers
The stack handles Parameter Groups (PGNs) and Suspect Parameter Numbers (SPNs), cyclic transmit and receive, single-frame and multi-packet transport (BAM broadcast and CMDT/TP connection mode, up to 1785 bytes), and full network address claiming so your ECU takes and defends its 8-bit address automatically. Diagnostic messages (DM1, DM2 and related DMs) expose active and previously-active trouble codes (DTCs), lamp status and freeze frames per the J1939-73 application layer. Message timeout supervision and clean per-layer APIs — data link, network management, application and diagnostics — round out the implementation.
Telematics, FMS and fleet data
Because it decodes the standard J1939 parameter set, the J1939 protocol stack is well suited to telematics, data-logging and remote-diagnostics products. It can read the FMS (Fleet Management System) standard signals — vehicle and wheel-based speed, engine speed and hours, fuel level and total fuel used, coolant temperature, axle weight, PTO status, tachograph data and the vehicle identification number — and hand them to your application or cloud back-end in a usable form. Combined with GPS or sensor data, that turns a gateway or data logger into a single source of fleet insight.
Portable and hardware-independent
Delivered as a ready-to-integrate binary with a thin hardware abstraction layer, the J1939 protocol stack runs on any MCU, any RTOS or bare metal, with no third-party dependencies. It works over classic CAN and CAN FD across the standard J1939 bit rates, and is engineered for deterministic, real-time behaviour on the resource-constrained controllers used in vehicles and mobile machinery. It also coexists with a CANopen stack when a device has to speak both protocols on one network.
Where the J1939 protocol stack fits
You’ll find the J1939 protocol stack in engine and after-treatment controllers, transmissions, telematics and display units, body and chassis controllers, and off-highway machinery ECUs. It fits trucks, buses, agricultural and construction equipment, marine and power-generation systems — and, through the related J1939 derivatives, agricultural ISOBUS (ISO 11783), marine NMEA 2000 and tractor-trailer (ISO 11992) designs — anywhere SAE J1939 is the vehicle network.
About the J1939 protocol
SAE J1939 is the standard the commercial-vehicle industry uses for robust, plug-and-play communication between electronic control units (ECUs) over CAN. Up to 254 ECUs can share a network; each message uses the 29-bit extended CAN identifier, carrying an 18-bit Parameter Group Number (PGN) that identifies the data, while transport protocols move payloads beyond the 8-byte CAN limit up to 1785 bytes. Standard bit rates are 250 kbit/s and 500 kbit/s, and the newer SAE J1939-22 (J1939 FD) extends the model to CAN FD and 64-byte frames. The specification is layered across SAE J1939-21 (data link and transport), J1939-71 (vehicle application), J1939-73 (diagnostics) and J1939-81 (network management), with the Digital Annex (J1939DA) cataloguing every PGN and signal.
Standards and conformance
The J1939 protocol stack follows the SAE J1939 family — J1939-21 (transport), J1939-71 (application parameters), J1939-73 (diagnostics) and J1939-81 (network management / address claiming) — and is ready for CAN FD as SAE J1939-22 (J1939 FD) adoption grows. It ships as a ready-to-integrate binary with a documented API and a sample application, and is supported by the engineers who wrote it.