Adapters for Vehicle On-board Diagnostic
It is probably happened for many of us, you are driving along in your car and the
"Check Engine” yellow light illuminates on the dashboard as clear indication that is something wrong with your car. Unfortunately, it
doesn’t give any clue what might be the nature of the problem and can mean many different things, from a loose gas cap to catalytic converter
fault. I do remember back to year 94 Acura Integra used to have the control unit under the driver seat and the LED was flashing if something was wrong. Counting the number of blinks
during repeated intervals you can get the error code. As vehicle computers getting more and more sophisticated the number of possible error codes increases exponentially. The solution is to use on-board diagnostic (OBD). This article describes how to build simple OBD interface and get access to your vehicle’s
Engine Control Unit (ECU).
OBD-II
This project started a few years ago when I wanted to be able to reset the service interval reminder in my 1997 Audi
A4. It turned out that the only way to do it for that particular model is connect to ECU using proprietary Volkswagen
KW1281 protocol or put myself at mercy of dealer. I was able to build a simple adapter inspired by
Jeff Noxon schematic and using VWTool desktop application for resetting the service indicator. That was
apparently a design flaw and in later Audi models you can reset the service reminder by pressing predefined key combination on dashboard.
Volkswagen KW1281 is an example of proprietary protocol and works only in vehicles manufactured by Volkswagen. These days most of the vehicles
equipped with On-Board Diagnostic. The good news is that it’s a standard and should work with any OBD-compliant vehicle. The first incarnation of On-Board Diagnostics specification was developed by
Society of Automobile Engineers (SAE) was known as OBD I. It was not very successful and later on was replaced with OBD-II.
It is mandatory for all cars and light trucks in US since '96. Canada introduced similar requirements two years later. EOBD is a version of OBD-II required in Europe starting year
2004 for diesel vehicles and 2001 for gasoline vehicles. The Data Link Connector (DLC) for connecting the diagnostic equipment is
standard as well. The pinout of DLC connector is shown in Figure 1 as defined by SAE J1962 spec.

Manufacturers are free to use connector pins not listed by SAE document for their own purposes. The connector is usually located on the driver’s side under the dashboard, but you can use the
DLC location database. The DLC connector allows the scan tool to read the diagnostic data from engine computer and reset
the “Check Engine” light. Note that all DMV emission testing facilities are using OBD diagnostics now and inspection will fail if vehicle has
the "Check Engine" light illuminated, even if it is only lit to remind you of a past-due oil change or 60,000-mile tune-up.
|
Pin |
Definition |
| 1 |
Not defined |
| 2 |
Bus positive line of SAE J1850 |
| 3 |
Not defined |
| 4 |
Chassis ground |
| 5 |
Signal ground |
| 6 |
CAN(H) ISO 15765 |
| 7 |
K line ISO 9141/14230 |
| 8 |
Not defined |
| 9 |
Not defined |
| 10 |
Bus negative line of SAE J1850 |
| 11 |
Not defined |
| 12 |
Not defined |
| 13 |
Not defined |
| 14 |
CAN(L) ISO 15765 |
| 15 |
L line ISO 9141/14230 |
| 16 |
+12 volt battery |
Figure 1, DLC connector pin assignment

Figure 2, Female DLC connector view
The OBD-II Communication Protocols
Originally OBD-II standard specified only three communication protocols: ISO 9141, SAE J1850 PWM and SAE J1850 VPW.
All three are vendor-specifics protocols using by Chrysler, GM and Ford, SAE just incorporated all of them in OBD-II standard.
The ISO14230 (Keyword 2000) protocol came in the picture around year 2000 as an attempt to improve and extend the existing ISO9141 protocol.
Controller Area Network (CAN) is a serial bus communication protocol developed by Bosch in the early 80s and started to appear in 2003.
The detail description of the communication protocols goes beyond the scope of this article, I just want briefly to enumerate them. The
ISO9141/14230 is probably the most wide-spread protocol for the moment and being used by Chrysler and the most of European and
Asian-made vehicles. It is deploying bidirectional asynchronous bus with the communication speed 10.4 Kbps similar to RS-232.
The idle bus is defined by presence of the high (+12V) level and signaled bus has the ground level. To start the communication
with the ECU the diagnostic tester using special initialization sequence. After connection is established and there is no activity
on the bus the tester periodically has to send “Keep Alive” packets to maintain the communication channel open.
The original ISO9141 document defined two communication wires, K and L lines. L line is optional and can be used only on the establishing communication step. It became legacy and
not being used these days. SAE
J1850 PWM is 41.6 Kb/s Pulse Width Modulation is the original Ford standard with two wire differential approach. The voltage levels on the bus are in 0÷5V range.
SAE J1850 VPW 10.4Kb/s protocol is being used by GM and Chrysler and stands for Variable Pulse Width. It is serial communication with a single signal wire.
The voltage level on VPW bus is varying between ground and 8V. Both protocols, PWM and VPW employ a multi-master
CSMA/NDA arbitration scheme.
CAN protocol is a popular standard outside
of the US automotive industry and became standard communication bus for today’s vehicles. The communication speeds are being used either
250 Kbps or 500 Kbps with standard 11-bit (CAN A) or extended 29-bit (CAN B) identifiers. By 2008, all vehicles sold in the US will be required
to implement CAN, thus eliminating the ambiguity of the existing five communication protocols. Modern vehicle may have many different electronic
control units for various subsystems and communications among them are essential. Typically the biggest processor is the ECU, others are used for
transmission, airbags, antilock braking, etc. PWM, VPW or CAN protocols are often using for that purpose, making DLC connector just logical extension
of an existing communication bus.
What Communications Protocol does my vehicle use?
If you live in US, all '96 and
newer passenger cars are required to support OBD-II diagnostics. The
same is true for Canada and Europe just years are different, see the table below. If you live in
any other country, your country may have started requiring OBD-II.
|
Country |
OBD Mandatory Starting Year |
| US |
1996 |
| Canada |
1998 |
| Europe |
2000/2001 |
| Europe (diesel) |
2004 |
| Australia |
2006 |
| All other countries |
Optional |
Figure 3, OBD-II standard support by country
If you know for sure that your car
supports OBD-II the next question will be which flavor? In general, GM cars and light trucks use SAE J1850 VPW,
when Ford uses SAE J1850 PWM protocol. Chrysler vehicles might use either ISO9141 or VPW. The European and most of
Asian cars use ISO9141/14230. All the new vehicles have to use CAN protocol. Another way to tell which protocol is used is examining the
DLC connector, see the Figure 4. Note that contacts in pins 4, 5 and 16 should always be present. If your vehicle has this style connector, but doesn't have these pins
populated, you probably have a pre OBD-II vehicle built before 1996. Ok, now you have found your DLC connector ant it looks exactly the
same... Well, having the connector with the contacts shown in Figure 4 is not a guarantee of OBD-II compliance.
Interesting enough the same vehicle models built for different markets may or may not be OBD-II compliant. In general, the car manufactures are
trying to avoid open standards and lock in the diagnostic service with proprietary protocols. Dealers want to have their share as well!
Figure 4, OBD-II connectors pin for different protocols
Anecdotally, I know the case when the particular model made for sale in Turkey actually
had DLC connector, all the ISO9141 pins populated and even passed OBD-II initialization sequence. Then
it replied back with the error code that car was not OBD compliant!
Reading ECU Data
The OBD standard divides the data in multiple groups called services. Within the particular service multiple Parameter Identification
Numbers (PID) are defined. For a list of basic PIDs and their definitions see
Figure 5. Service 1 provides the access to multiple sensors, like engine RPM, coolant temperature, vehicle speed and etc,
see Figure 6. In Service 2 you can retrieve so-called “Freeze Frame” data. The Freeze Frames are a "snapshot" of the vehicle's operating conditions at the time of the fault. Service 3 gives you ability to get
Diagnostic Trouble Codes (DTC). That is when you Check Engine light go on. The generic DTC
list defined in SAE J2012 document is common for the all
vehicles and manufacturers are free to provide the specific
codes as an extension. Service 4 allows you to reset the trouble codes reported in Service 3. There is no way to select the particular DTC to be reset, you can only clear all of them. Service 9 let you read
Vehicle Identification Number (VIN)
and Calibration IDs. See Wiki OBD-II PIDs article for more details.
|
Service |
Definition |
| 1 |
Show Current Diagnostic Data |
| 2 |
Show Freeze Frame Data |
| 3 |
Show stored Diagnostic Trouble Codes |
| 4 |
Diagnostic Trouble Codes |
| 5 |
Test results, oxygen sensor
monitoring |
| 6 |
Test results, other component/system monitoring |
| 7 |
Show Pending Trouble Codes detected during current or last driving cycle |
| 8 |
Control operation of on-board component/system |
| 9 |
Request Vehicle Information |
Figure 5, OBD-II Services
|
PID |
Functions |
| 00 |
PIDs supported in range 01-1F |
| 01 |
System status since DTC cleared |
| 02 |
DTC that cause freeze frame |
| 03 |
Fuel System 1 Status |
| 04 |
Calculated LOAD Value |
| 05 |
Engine Coolant Temperature |
| 06 |
Short Term Fuel Trim - Bank 1 |
| 07 |
Long Term Fuel Trim - Bank 1 |
| 08 |
Short Term Fuel Trim - Bank 2 |
| 09 |
Long Term Fuel Trim - Bank 2 |
| 0A |
Fuel Rail Pressure |
| 0B |
Intake Manifold Pressure |
| 0C |
Engine RPM |
| 0D |
Vehicle Speed |
| 0E |
Ignition Timing Advance for #1 Cylinder |
| 0F |
Air Intake Temperature |
| 10 |
Air Flow Rate from MAF |
| 11 |
Absolute Throttle Position |
| 12 |
Commanded Secondary Air Status |
| 13 |
Location of O2 sensors |
| 14 |
O2 sensor voltages & short term fuel trim Bank 1 Sensor 1 |
| 15 |
O2 sensor voltages & short term fuel trim Bank 1 Sensor 2 |
| 16 |
O2 sensor voltages & short term fuel trim Bank 1 Sensor 3 |
| 17 |
O2 sensor voltages & short term fuel trim Bank 1 Sensor 4 |
| 18 |
O2 sensor voltages & short term fuel trim Bank 2 Sensor 1 |
| 19 |
O2 sensor voltages & short term fuel trim Bank 2 Sensor 2 |
| 1A |
O2 sensor voltages & short term fuel trim Bank 2 Sensor 3 |
| 1B |
O2 sensor voltages & short term fuel trim Bank 2 Sensor 4 |
| 1C |
OBD requirements to which vehicle is designed |
| 1D |
Location of oxygen sensors |
| 1E |
Auxiliary Input Status |
| 1F |
Time Since Engine Start |
| 20 |
Supported PIDs in range 21-3F |
| 21 |
Distance
Traveled While MIL is Activated |
| 22 |
Fuel Rail Pressure relative to manifold vacuum |
| 23 |
Fuel Rail Pressure |
| 24 |
O2 Bank 1 – Sensor 1 (wide range O2S) |
| 25 |
O2 Bank 1 – Sensor 2 (wide range O2S) |
| 26 |
O2 Bank 1 – Sensor 3 (wide range O2S) |
| 27 |
O2 Bank 1 – Sensor 4 (wide range O2S) |
| 28 |
O2 Bank 2 – Sensor 1 (wide range O2S) |
| 29 |
O2 Bank 2 – Sensor 2 (wide range O2S) |
| 2A |
O2 Bank 2 – Sensor 3 (wide range O2S) |
| 2B |
O2 Bank 2 – Sensor 4 (wide range O2S) |
| 2C |
Commanded EGR |
| 2D |
EGR Error value |
| 2E |
Commanded Evaporative Purge |
| 2F |
Fuel Level Input |
| 30 |
Number of warm-ups since DTC cleared |
| 31 |
Distance Since DTC cleared |
| 32 |
Evap System Vapor Pressure |
| 33 |
Barometric Pressure |
| 34 |
O2 Bank 1 – Sensor 1 (wide range O2S) |
| 35 |
O2 Bank 1 – Sensor 2 (wide range O2S) |
| 36 |
O2 Bank 1 – Sensor 3 (wide range O2S) |
| 37 |
O2 Bank 1 – Sensor 4 (wide range O2S) |
| 38 |
O2 Bank 2 – Sensor 1 (wide range O2S) |
| 39 |
O2 Bank 2 – Sensor 2 (wide range O2S) |
| 3A |
O2 Bank 2 – Sensor 3 (wide range O2S) |
| 3B |
O2 Bank 2 – Sensor 4 (wide range O2S) |
| 3C |
Catalyst Temperature Bank 1, Sensor 1 |
| 3D |
Catalyst Temperature Bank 2, Sensor 1 |
| 3E |
Catalyst Temperature Bank 1, Sensor 2 |
| 3F |
Catalyst Temperature Bank 2, Sensor 2 |
| 40 |
Supported PIDs in range 41-5F |
| 41 |
Monitor status this driving cycle |
| 42 |
Control module voltage |
| 43 |
Absolute Load Value |
| 44 |
Commanded Equivalence Ratio |
| 45 |
Relative Throttle Position |
| 46 |
Ambient air temperature |
| 47 |
Absolute Throttle Position B |
| 48 |
Absolute Throttle Position C |
| 49 |
Accelerator Pedal Position D |
| 4A |
Accelerator Pedal Position E |
| 4B |
Accelerator Pedal Position F |
| 4C |
Commanded Throttle Actuator Control |
| 4D |
Minutes run by the engine while MIL activated |
| 4E |
Time since DTC cleared |
Figure 6, Service 1 PIDs supported by Hyundai Elantra ECU
OBD-II vs. Proprietary Protocols
OBD-II was designed for vehicle
emission diagnostic in the first place. Even though the standard defined
many useful functionality vendors are not required to implement all the PIDs listed in SAE
document. That is the most confusing part about OBD-II. For instance, the latest ECUs are supporting the VIN number
request in Service 9, but if your car goes back to year '96 you are out
of luck here. Take a look on Figure 6. It is listing all the PIDs for
Service 1 in blue and PIDs supported by Hyundai Elantra ECU in white
bars.
Not so many of them... In general, you can only read the data and erase the DTC
when the proprietary protocols give you access to all the components.
Want to reprogram your central locks or your Radio? Diagnose a problem
with your ABS, Airbags, or Automatic Transmission? Re-align your
Immobilizer after swapping ECU's? Reset your Service Reminder Indicator?
No way to use OBD here! It is just an example of such
device with support for the most of proprietary vehicle protocols,
MODIS from Snap-on is shown below with the price sticker around $7,000.
Do you really need it? If you just want the check why you are got "Check
Engine” light OBD-II still might be handy...


|
|
|