Posted on

The Difference Between OBD and CAN

The terms OBD and CAN are sometimes used interchangeably and conflated, but they are separate protocols that exist in different layers of the communications stack.

OBD-II and similar protocols, such as Unified Diagnostic Services (UDS), define the actual command and parameter data when communicating with your vehicle. In order to send or receive that data, we need a low-level communications protocol to manage encoding / decoding it on the physical wires. That’s where the CAN bus comes in.

Most Vehicles use CAN for OBD

In the US market, most 2008 and newer vehicles are required to use CAN as the underlying protocol for their OBD implementation, and several manufacturers even started doing this a few years earlier. This is much faster and more capable than the older protocols it replaced, and greatly simplifies compatibility. Further reading: Which Vehicles Support CAN for OBD?

CAN May Also Exist Without OBD

OBD is just one of many uses for CAN. Even within a vehicle, there are commonly multiple CAN busses used to exchange data between different modules, and most of them have no requirement to implement OBD services. Typically, only the engine control module (ECM) and transmission control module (TCM) will respond to OBD requests. Sometimes hybrid, chassis, and body modules will as well. All of these modules will commonly exchange non-OBD data via CAN too, although that traffic may not be visible via the OBD port due to the use of gateways and/or different CAN busses.

CAN in itself does not define what the data means, or which commands or services will be available, as that is up to whatever higher-layer protocol is using it. As such, if someone asks a question like “What is CAN Frame 0x610?”, you can’t accurately answer that without more information on the make / model of vehicle, because that is not an ID defined by OBD standards, so it’s up to the manufacturer.

Similarly, if you have a non-OBD vehicle (such as a 100% Electric Vehicle), the presence of an OBD port does not mean that it will respond to OBD requests, although some raw non-OBD CAN traffic may be accessible this way.

OBD May Exist Without CAN in Older Vehicles

The presence of an OBD port does not mean that the vehicle supports OBD over CAN, or even CAN at all. Most vehicles since 1996 had the same OBD port, but prior to the auto industry fully adopting CAN, they used an assortment of different protocols to implement OBD, such as J1850 VPW (GM), J1850 PWM (Ford), and K-Line ISO-9141 / ISO-14230 / KWP2000 (mostly Imports).

In some cases, a vehicle of this vintage may use CAN for certain functionality and may even expose it via the normal CAN pins on the OBD port, but not actually provide OBD services over CAN. An example of this is the early Nissan 350z models, which have CAN traffic visible via the OBD port, but only services OBD requests via K-Line ISO-9141.

CAN-based products may still work on vehicles like that if they have decoders for the CAN data that is visible via the OBD port, but any attempt to use actual OBD services would fail without the product having support for the older low-level communications protocol. That’s how we support the 350z for our sequential shift light; although this car doesn’t talk OBD via CAN, we’ve figured out how to decode the manufacturer’s CAN data that is visible via the OBD port.