The OBDII standard has done worlds for making vehicle diagnostics available to those who need them, but OBDII is still a fairly scary and confusing place for many developers. The most frequent use of a vehicle’s OBDII port is to provide emissions related diagnostics. This has been standardized by the SAE (Society of Automotive Engineers) as the J1979 standard across all makes and models since 1994, and it makes annual inspections quick and cost effective. If all you need is emissions information, it’s a breeze. If you want to interact with the vehicle’s computer, it’s going to be a lot more complicated.
The OBDII standard has historically supported five different interfaces, CAN – ISO 15765, ISO 9141, ISO 14230, J1850 VPW and J1850 PWM. These are ways of talking to the computer, not different things that the computer says. These interfaces are all unique and involve (among other things) different voltages, different message lengths and different connector pins to input and output data. It’s like communicating with a telegraph vs. smoke signals vs. text messages, so it takes a while to understand each method.
In addition to this, the software architecture differs not only across makes, but often across models as well. To make matters worse, no legislative body has required any of these companies to publish any guides to indicate how to do anything on these platforms. This means that any development for OBDII products usually involves a lot of trial and error.
In 2008, the CAN (Controller Area Network) interface won and was made the new standard in OBDII. All vehicles from 2008 onward have used CAN, though they are still allowed to use their own software hierarchy behind it. Even though they all use CAN, Ford still doesn’t work the way VW works etc. This new CAN standard has caused many IC producers to discontinue production of circuitry for the other 4 old standards. It’s going to become more and more difficult to develop for vehicles from before 2008.