Home » heavy-duty vehicle networks
Developing an SAE J1939 application has traditionally required a substantial investment—not only in hardware and engineering time, but also in software. Commercial SAE J1939 protocol stacks are often expensive, frequently licensed per device, and in many cases remain closed-source. For students, hobbyists, researchers, startups, and even experienced engineers who simply…
One of the first questions engineers ask when starting with SAE J1939 development is: “Which hardware platform should I use?” The good news is that there is no shortage of choices. Over the years I have worked with numerous embedded platforms, development environments, and operating systems. They all have their…
In this post, I would like to address what is arguably the most important concept in the SAE J1939 standard: the Parameter Group Number (PGN). PGNs are the heart and soul of J1939. Every application you design, whether it transmits engine speed, requests a VIN, or reports diagnostic information, revolves…
If you spend enough time working with heavy-duty vehicles, agricultural equipment, construction machinery, or industrial engines, you will eventually encounter proprietary J1939 messages. At that point, many engineers ask the same question: Can I reverse engineer a J1939 network? The short answer is yes—but only to a certain extent. Before…
If you’ve worked with SAE J1939 long enough, you’ve probably experienced the frustration of connecting two devices to a CAN bus and seeing… absolutely nothing happen. No engine data. No diagnostic messages. No responses to requests. Just silence. The good news is that most J1939 communication problems are caused by…
If you have recently started working with SAE J1939, chances are your search history looks something like this: How do I monitor J1939 traffic? What hardware do I need for J1939 development? How do I simulate a J1939 ECU? How can I test my software without connecting to a real…
One of the more common questions when analyzing or simulating SAE J1939 traffic is surprisingly simple: “How accurate must a J1939 message frequency be?” If a message is supposed to be transmitted every 100 milliseconds, does that mean exactly 100 milliseconds? Can it be 101 milliseconds? 105 milliseconds? What happens…
When people talk about SAE J1939, they often jump straight to CAN frames, PGNs, or diagnostic trouble codes. But all of those live downstream from the most important part of the standard: the application layer. The application layer is where J1939 stops being a transport mechanism and becomes a language.…
In the late 1980s and 1990s, heavy-duty vehicles (like diesel trucks and buses) began using electronic networks to share data among engine, transmission, brake, and other control units (ECUs). The industry’s first standardized solution was a combination of SAE J1708 and SAE J1587. In this two-part system, J1708 defined the…