OBD-II PIDs

From testwiki
Revision as of 22:46, 20 February 2025 by imported>Joeyla2025 (Add formula for calculating Engine Hours (32-bit in seconds))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Short description Template:Multiple issues OBD-II PIDs (On-board diagnostics Parameter IDs) are codes used to request data from a vehicle, used as a diagnostic tool.

SAE standard J1979 defines many OBD-II PIDs. All on-road vehicles and trucks sold in North America are required to support a subset of these codes, primarily for state mandated emissions inspections. Manufacturers also define additional PIDs specific to their vehicles. Though not mandated, many motorcycles also support OBD-II PIDs.

In 1996, light duty vehicles (less than Template:Convert) were the first to be mandated followed by medium duty vehicles (Template:Convert) in 2005.[1] They are both required to be accessed through a standardized data link connector defined by SAE J1962.

Heavy duty vehicles (greater than Template:Convert) made after 2010,[1] for sale in the US are allowed to support OBD-II diagnostics through SAE standard J1939-13 (a round diagnostic connector) according to CARB in title 13 CCR 1971.1. Some heavy duty trucks in North America use the SAE J1962 OBD-II diagnostic connector that is common with passenger cars, notably Mack and Volvo Trucks, however they use 29 bit CAN identifiers (unlike 11 bit headers used by passenger cars).

Services / Modes

There are 10 diagnostic services described in the latest OBD-II standard SAE J1979. Before 2002, J1979 referred to these services as "modes". They are as follows:

Service / Mode (hex) Description
[[#Service 01|Template:Mono]] Show current data
[[#Service 02|Template:Mono]] Show freeze frame data
[[#Service 03|Template:Mono]] Show stored Diagnostic Trouble Codes
[[#Service 04|Template:Mono]] Clear Diagnostic Trouble Codes and stored values
[[#Service 05|Template:Mono]] Test results, oxygen sensor monitoring (non CAN only)
Template:Mono Test results, other component/system monitoring (Test results, oxygen sensor monitoring for CAN only)
Template:Mono Show pending Diagnostic Trouble Codes (detected during current or last driving cycle)
Template:Mono Control operation of on-board component/system
[[#Service 09|Template:Mono]] Request vehicle information
Template:Mono Permanent Diagnostic Trouble Codes (DTCs) (Cleared DTCs)

Vehicle manufacturers are not required to support all services. Each manufacturer may define additional services above #9 (e.g.: service 22 as defined by SAE J2190 for Ford/GM, service 21 for Toyota) for other information e.g. the voltage of the traction battery in a hybrid electric vehicle (HEV).[2]

The nonOBD UDS services start at 0x10 to avoid overlap of ID-range.

Standard PIDs

The table below shows the standard OBD-II PIDs as defined by SAE J1979. The expected response for each PID is given, along with information on how to translate the response into meaningful data. Again, not all vehicles will support all PIDs and there can be manufacturer-defined custom PIDs that are not defined in the OBD-II standard.

Note that services 01 and 02 are basically identical, except that service 01 provides current information, whereas service 02 provides a snapshot of the same data taken at the point when the last diagnostic trouble code was set. The exceptions are PID 01, which is only available in service 01, and PID 02, which is only available in service 02. If service 02 PID 02 returns zero, then there is no snapshot and all other service 02 data is meaningless.

When using Bit-Encoded-Notation, quantities like C4 means bit 4 from data byte C. Each bit is numbered from 0 to 7, so 7 is the most significant bit and 0 is the least significant bit (See below).

A B C D
A7 A6 A5 A4 A3 A2 A1 A0 B7 B6 B5 B4 B3 B2 B1 B0 C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0

Service Template:Mono - Show current data

PIDs
(hex)
PID
(Dec)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn
Template:Mono Template:Mono 4 PIDs supported [$01 - $20] Bit encoded [A7..D0] == [PID $01..PID $20] See below
Template:Mono Template:Mono 4 Monitor status since DTCs cleared. (Includes malfunction indicator lamp (MIL), status and number of DTCs, components tests, DTC readiness checks) Bit encoded. See below
Template:Mono Template:Mono 2 DTC that caused freeze frame to be stored. Decoded as in service 3
Template:Mono Template:Mono 2 Fuel system status Bit encoded. See below
Template:Mono Template:Mono 1 Calculated engine load 0 100 % 100255A (or A2.55)
Template:Mono Template:Mono 1 Engine coolant temperature -40 215 °C A40
Template:Mono Template:Mono 1 Short term fuel trim (STFT)—Bank 1 -100 (Reduce Fuel: Too Rich) 99.2 (Add Fuel: Too Lean) % 100128A100(or A1.28100 )
Template:Mono Template:Mono 1 Long term fuel trim (LTFT)—Bank 1
Template:Mono Template:Mono 1 Short term fuel trim (STFT)—Bank 2
Template:Mono Template:Mono 1 Long term fuel trim (LTFT)—Bank 2
Template:Mono Template:Mono 1 Fuel pressure (gauge pressure) 0 765 kPa 3A
Template:Mono Template:Mono 1 Intake manifold absolute pressure 0 255 kPa A
Template:Mono Template:Mono 2 Engine speed 0 16,383.75 rpm 256A+B4
Template:Mono Template:Mono 1 Vehicle speed 0 255 km/h A
Template:Mono Template:Mono 1 Timing advance -64 63.5 ° before TDC A264
Template:Mono Template:Mono 1 Intake air temperature -40 215 °C A40
Template:Mono Template:Mono 2 Mass air flow sensor (MAF) air flow rate 0 655.35 g/s 256A+B100
Template:Mono Template:Mono 1 Throttle position 0 100 % 100255A
Template:Mono Template:Mono 1 Commanded secondary air status Bit encoded. See below
Template:Mono Template:Mono 1 Oxygen sensors present (in 2 banks) [A0..A3] == Bank 1, Sensors 1-4. [A4..A7] == Bank 2...
Template:Mono Template:Mono 2 Oxygen Sensor 1
A: Voltage
B: Short term fuel trim
0
-100
1.275
99.2
V

%

A200100128B100(if B==$FF, sensor is not used in trim calculation)
Template:Mono Template:Mono 2 Oxygen Sensor 2
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 3
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 4
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 5
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 6
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 7
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 2 Oxygen Sensor 8
A: Voltage
B: Short term fuel trim
Template:Mono Template:Mono 1 OBD standards this vehicle conforms to 1 250 enumerated. See below
Template:Mono Template:Mono 1 Oxygen sensors present (in 4 banks) Similar to PID $13, but [A0..A7] == [B1S1, B1S2, B2S1, B2S2, B3S1, B3S2, B4S1, B4S2]
Template:Mono Template:Mono 1 Auxiliary input status A0 == Power Take Off (PTO) status (1 == active)
[A1..A7] not used
Template:Mono Template:Mono 2 Run time since engine start 0 65,535 s 256A+B
Template:Mono Template:Mono 4 PIDs supported [$21 - $40] Bit encoded [A7..D0] == [PID $21..PID $40] See below
Template:Mono Template:Mono 2 Distance traveled with malfunction indicator lamp (MIL) on 0 65,535 km 256A+B
Template:Mono Template:Mono 2 Fuel Rail Pressure (relative to manifold vacuum) 0 5177.265 kPa 0.079(256A+B)
Template:Mono Template:Mono 2 Fuel Rail Gauge Pressure (diesel, or gasoline direct injection) 0 655,350 kPa 10(256A+B)
Template:Mono Template:Mono 4 Oxygen Sensor 1
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
0
0
< 2
< 8
ratio
V
265536(256A+B)865536(256C+D)
Template:Mono Template:Mono 4 Oxygen Sensor 2
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 3
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 4
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 5
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 6
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 7
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 4 Oxygen Sensor 8
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Voltage
Template:Mono Template:Mono 1 Commanded EGR 0 100 % 100255A
Template:Mono Template:Mono 1 EGR Error -100 99.2 % 100128A100
Template:Mono Template:Mono 1 Commanded evaporative purge 0 100 % 100255A
Template:Mono Template:Mono 1 Fuel Tank Level Input 0 100 % 100255A
Template:Mono Template:Mono 1 Warm-ups since codes cleared 0 255 A
Template:Mono Template:Mono 2 Distance traveled since codes cleared 0 65,535 km 256A+B
Template:Mono Template:Mono 2 Evap. System Vapor Pressure -8,192 8191.75 Pa 256A+B4

(AB is two's complement signed)[3]

Template:Mono Template:Mono 1 Absolute Barometric Pressure 0 255 kPa A
Template:Mono Template:Mono 4 Oxygen Sensor 1
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
0
-128
< 2
<128
ratio
mA
265536(256A+B)256C+D256128
Template:Mono Template:Mono 4 Oxygen Sensor 2
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 3
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 4
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 5
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 6
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 7
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 4 Oxygen Sensor 8
AB: Air-Fuel Equivalence Ratio (lambda,λ)
CD: Current
Template:Mono Template:Mono 2 Catalyst Temperature: Bank 1, Sensor 1 -40 6,513.5 °C 256A+B1040
Template:Mono Template:Mono 2 Catalyst Temperature: Bank 2, Sensor 1
Template:Mono Template:Mono 2 Catalyst Temperature: Bank 1, Sensor 2
Template:Mono Template:Mono 2 Catalyst Temperature: Bank 2, Sensor 2
Template:Mono Template:Mono 4 PIDs supported [$41 - $60] Bit encoded [A7..D0] == [PID $41..PID $60] See below
Template:Mono Template:Mono 4 Monitor status this drive cycle Bit encoded. See below
Template:Mono Template:Mono 2 Control module voltage 0 65.535 V 256A+B1000
Template:Mono Template:Mono 2 Absolute load value 0 25,700 % 100255(256A+B)
Template:Mono Template:Mono 2 Commanded Air-Fuel Equivalence Ratio (lambda,λ) 0 < 2 ratio 265536(256A+B)
Template:Mono Template:Mono 1 Relative throttle position 0 100 % 100255A
Template:Mono Template:Mono 1 Ambient air temperature -40 215 °C A40
Template:Mono Template:Mono 1 Absolute throttle position B 0 100 % 100255A
Template:Mono Template:Mono 1 Absolute throttle position C
Template:Mono Template:Mono 1 Accelerator pedal position D
Template:Mono Template:Mono 1 Accelerator pedal position E
Template:Mono Template:Mono 1 Accelerator pedal position F
Template:Mono Template:Mono 1 Commanded throttle actuator
Template:Mono Template:Mono 2 Time run with MIL on 0 65,535 min 256A+B
Template:Mono Template:Mono 2 Time since trouble codes cleared
Template:Mono Template:Mono 4 Maximum value for Fuel–Air equivalence ratio, oxygen sensor voltage, oxygen sensor current, and intake manifold absolute pressure 0, 0, 0, 0 255, 255, 255, 2550 ratio, V, mA, kPa A, B, C, D×10
Template:Mono Template:Mono 4 Maximum value for air flow rate from mass air flow sensor 0 2550 g/s A×10; B, C, and D are reserved for future use
Template:Mono Template:Mono 1 Fuel Type From fuel type table see below
Template:Mono Template:Mono 1 Ethanol fuel % 0 100 % 100255A
Template:Mono Template:Mono 2 Absolute Evap system Vapor Pressure 0 327.675 kPa 256A+B200
Template:Mono Template:Mono 2 Evap system vapor pressure -32,768 32,767 Pa 256A+B(AB is two's complement signed)[3]
Template:Mono Template:Mono 2 Short term secondary oxygen sensor trim, A: bank 1, B: bank 3 -100 99.2 % 100128A100

100128B100

Template:Mono Template:Mono 2 Long term secondary oxygen sensor trim, A: bank 1, B: bank 3
Template:Mono Template:Mono 2 Short term secondary oxygen sensor trim, A: bank 2, B: bank 4
Template:Mono Template:Mono 2 Long term secondary oxygen sensor trim, A: bank 2, B: bank 4
Template:Mono Template:Mono 2 Fuel rail absolute pressure 0 655,350 kPa 10(256A+B)
Template:Mono Template:Mono 1 Relative accelerator pedal position 0 100 % 100255A
Template:Mono Template:Mono 1 Hybrid battery pack remaining life 0 100 % 100255A
Template:Mono Template:Mono 1 Engine oil temperature -40 210 °C A40
Template:Mono Template:Mono 2 Fuel injection timing -210.00 301.992 ° 256A+B128210
Template:Mono Template:Mono 2 Engine fuel rate 0 3212.75 L/h 256A+B20
Template:Mono Template:Mono 1 Emission requirements to which vehicle is designed Bit Encoded
Template:Mono Template:Mono 4 PIDs supported [$61 - $80] Bit encoded [A7..D0] == [PID $61..PID $80] See below
Template:Mono Template:Mono 1 Driver's demand engine - percent torque -125 130 % A125
Template:Mono Template:Mono 1 Actual engine - percent torque -125 130 % A125
Template:Mono Template:Mono 2 Engine reference torque 0 65,535 N⋅m 256A+B
Template:Mono Template:Mono 5 Engine percent torque data -125 130 % A125 Idle
B125 Engine point 1
C125 Engine point 2
D125 Engine point 3
E125 Engine point 4
Template:Mono Template:Mono 2 Auxiliary input / output supported Bit Encoded
Template:Mono Template:Mono 5 Mass air flow sensor 0 2047.96875 g/s [A0]== Sensor A Supported
[A1]== Sensor B Supported
Sensor A:256B+C32
Sensor B:256D+E32
Template:Mono Template:Mono 3 Engine coolant temperature -40 215 °C [A0]== Sensor 1 Supported
[A1]== Sensor 2 Supported
Sensor 1:B40
Sensor 2:C40
Template:Mono Template:Mono 3 Intake air temperature sensor -40 215 °C [A0]== Sensor 1 Supported
[A1]== Sensor 2 Supported
Sensor 1:B40
Sensor 2:C40
Template:Mono Template:Mono 7 Actual EGR, Commanded EGR, and EGR Error
Template:Mono Template:Mono 5 Commanded Diesel intake air flow control and relative intake air flow position
Template:Mono Template:Mono 5 Exhaust gas recirculation temperature
Template:Mono Template:Mono 5 Commanded throttle actuator control and relative throttle position
Template:Mono Template:Mono 11 Fuel pressure control system
Template:Mono Template:Mono 9 Injection pressure control system
Template:Mono Template:Mono 3 Turbocharger compressor inlet pressure
Template:Mono Template:Mono 10 Boost pressure control
Template:Mono Template:Mono 6 Variable Geometry turbo (VGT) control
Template:Mono Template:Mono 5 Wastegate control
Template:Mono Template:Mono 5 Exhaust pressure
Template:Mono Template:Mono 5 Turbocharger RPM
Template:Mono Template:Mono 7 Turbocharger temperature
Template:Mono Template:Mono 7 Turbocharger temperature
Template:Mono Template:Mono 5 Charge air cooler temperature (CACT)
Template:Mono Template:Mono 9 Exhaust Gas temperature (EGT) Bank 1 Special PID. See below
Template:Mono Template:Mono 9 Exhaust Gas temperature (EGT) Bank 2 Special PID. See below
Template:Mono Template:Mono 7 Diesel particulate filter (DPF)

differential pressure

Template:Mono Template:Mono 7 Diesel particulate filter (DPF)
Template:Mono Template:Mono 9 Diesel Particulate filter (DPF) temperature °C 256A+B1040
Template:Mono Template:Mono 1 NOx NTE (Not-To-Exceed) control area status
Template:Mono Template:Mono 1 PM NTE (Not-To-Exceed) control area status
Template:Mono Template:Mono 13 Engine run time Template:Efn s B(224)+C(216)+D(28)+E
Template:Mono Template:Mono 4 PIDs supported [$81 - $A0] Bit encoded [A7..D0] == [PID $81..PID $A0] See below
Template:Mono Template:Mono 41 Engine run time for Auxiliary Emissions Control Device(AECD)
Template:Mono Template:Mono 41 Engine run time for Auxiliary Emissions Control Device(AECD)
Template:Mono Template:Mono 9 NOx sensor
Template:Mono Template:Mono 1 Manifold surface temperature
Template:Mono Template:Mono 10 NOx reagent system % 100255F
Template:Mono Template:Mono 5 Particulate matter (PM) sensor
Template:Mono Template:Mono 5 Intake manifold absolute pressure
Template:Mono Template:Mono 13 SCR Induce System
Template:Mono Template:Mono 41 Run Time for AECD #11-#15
Template:Mono Template:Mono 41 Run Time for AECD #16-#20
Template:Mono Template:Mono 7 Diesel Aftertreatment
Template:Mono Template:Mono 17 O2 Sensor (Wide Range)
Template:Mono Template:Mono 1 Throttle Position G 0 100 %
Template:Mono Template:Mono 1 Engine Friction - Percent Torque -125 130 % A125
Template:Mono Template:Mono 7 PM Sensor Bank 1 & 2
Template:Mono Template:Mono 3 WWH-OBD Vehicle OBD System Information h
Template:Mono Template:Mono 5 WWH-OBD Vehicle OBD System Information h
Template:Mono Template:Mono 2 Fuel System Control
Template:Mono Template:Mono 3 WWH-OBD Vehicle OBD Counters support h
Template:Mono Template:Mono 12 NOx Warning And Inducement System
Template:Mono Template:Mono 9 Exhaust Gas Temperature Sensor
Template:Mono Template:Mono 9 Exhaust Gas Temperature Sensor
Template:Mono Template:Mono 6 Hybrid/EV Vehicle System Data, Battery, Voltage
Template:Mono Template:Mono 4 Diesel Exhaust Fluid Sensor Data % 100255D
Template:Mono Template:Mono 17 O2 Sensor Data
Template:Mono Template:Mono 4 Engine Fuel Rate g/s
Template:Mono Template:Mono 2 Engine Exhaust Flow Rate kg/h
Template:Mono Template:Mono 9 Fuel System Percentage Use
Template:Mono Template:Mono 4 PIDs supported [$A1 - $C0] Bit encoded [A7..D0] == [PID $A1..PID $C0] See below
Template:Mono Template:Mono 9 NOx Sensor Corrected Data ppm
Template:Mono Template:Mono 2 Cylinder Fuel Rate 0 2047.96875 mg/stroke 256A+B32
Template:Mono Template:Mono 9 Evap System Vapor Pressure Pa
Template:Mono Template:Mono 4 Transmission Actual Gear 0 65.535 ratio [A1]==Supported

256C+D1000

Template:Mono Template:Mono 4 Commanded Diesel Exhaust Fluid Dosing 0 127.5 % [A0]= 1:Supported; 0:Unsupported

B2

Template:Mono Template:Mono 4 Odometer Template:Efn 0 429,496,729.5 km A(224)+B(216)+C(28)+D10
Template:Mono Template:Mono 4 NOx Sensor Concentration Sensors 3 and 4
Template:Mono Template:Mono 4 NOx Sensor Corrected Concentration Sensors 3 and 4
Template:Mono Template:Mono 4 ABS Disable Switch State [A0]= 1:Supported; 0:Unsupported

[B0]= 1:Yes;0:No

Template:Mono Template:Mono 4 PIDs supported [$C1 - $E0] Bit encoded [A7..D0] == [PID $C1..PID $E0] See below
Template:Mono Template:Mono 2 Fuel Level Input A/B 0 25,700 % Returns numerous data, including Drive Condition ID and Engine Speed*
Template:Mono Template:Mono 8 Exhaust Particulate Control System Diagnostic Time/Count 0 4,294,967,295 seconds / Count B5 is Engine Idle Request
B6 is Engine Stop Request*
First byte = Time in seconds
Second byte = Count
Template:Mono Template:Mono 4 Fuel Pressure A and B 0 5,177 kPa
Template:Mono Template:Mono 7 Byte 1 - Particulate control - driver inducement system status
Byte 2,3 - Removal or block of the particulate aftertreatment system counter
Byte 4,5 - Liquid regent injection system (e.g. fuel-borne catalyst) failure counter
Byte 6,7 - Malfunction of Particulate control monitoring system counter
0 65,535 h
Template:Mono Template:Mono 2 Distance Since Reflash or Module Replacement 0 65,535 km
Template:Mono Template:Mono 1 NOx Control Diagnostic (NCD) and Particulate Control Diagnostic (PCD) Warning Lamp status - - Bit
PID
(hex)
PID
(Dec)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn

Service Template:Mono - Show freeze frame data

Service Template:Mono accepts the same PIDs as service Template:Mono, with the same meaning,[4] but information given is from when the freeze frame[5] was created. Note that PID Template:Mono is used to obtain the DTC that triggered the freeze frame.

A person has to send the frame number in the data section of the message.

Service Template:Mono - Show stored Diagnostic Trouble Codes (DTCs)

PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn
N/A n*6 Request trouble codes 3 codes per message frame. See below

Service Template:Mono - Clear Diagnostic Trouble Codes and stored values

PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn
N/A 0 Clear trouble codes / Malfunction indicator lamp (MIL) / Check engine light Clears all stored trouble codes and turns the MIL off.

Service Template:Mono - Test results, oxygen sensor monitoring (non CAN only)

PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn
Template:Mono 4 OBD Monitor IDs supported ($01 – $20) 0x0 0xffffffff
Template:Mono 2 O2 Sensor Monitor Bank 1 Sensor 1 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 2 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 3 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 4 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 1 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 2 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 3 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 4 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 1 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 2 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 3 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 4 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 1 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 2 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 3 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 4 0.00 1.275 V 0.005 Rich to lean sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 1 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 2 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 3 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 1 Sensor 4 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 1 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 2 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 3 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 2 Sensor 4 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 1 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 2 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 3 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 3 Sensor 4 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 1 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 2 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 3 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
Template:Mono O2 Sensor Monitor Bank 4 Sensor 4 0.00 1.275 V 0.005 Lean to Rich sensor threshold voltage
PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn

Service Template:Mono - Request vehicle information

PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn
Template:Mono 4 Service 9 supported PIDs ($01 to $20) Bit encoded. [A7..D0] = [PID $01..PID $20] See below
Template:Mono 1 VIN Message Count in PID Template:Mono. Only for ISO 9141-2, ISO 14230-4 and SAE J1850. Usually the value will be 5.
Template:Mono 17 Vehicle Identification Number (VIN) 17-char VIN, ASCII-encoded and left-padded with null chars (Template:Mono) if needed to.
Template:Mono 1 Calibration ID message count for PID Template:Mono. Only for ISO 9141-2, ISO 14230-4 and SAE J1850. It will be a multiple of 4 (4 messages are needed for each ID).
Template:Mono 16,32,48,64.. Calibration ID Up to 16 ASCII chars. Data bytes not used will be reported as null bytes (Template:Mono). Several CALID can be outputed (16 bytes each)
Template:Mono 1 Calibration verification numbers (CVN) message count for PID Template:Mono. Only for ISO 9141-2, ISO 14230-4 and SAE J1850.
Template:Mono 4,8,12,16 Calibration Verification Numbers (CVN) Several CVN can be output (4 bytes each) the number of CVN and CALID must match Raw data left-padded with null characters (Template:Mono). Usually displayed as hex string.
Template:Mono 1 In-use performance tracking message count for PID Template:Mono and Template:Mono. Only for ISO 9141-2, ISO 14230-4 and SAE J1850. 8 10 8 if sixteen values are required to be reported, 9 if eighteen values are required to be reported, and 10 if twenty values are required to be reported (one message reports two values, each one consisting in two bytes).
Template:Mono 4 In-use performance tracking for spark ignition vehicles 4 or 5 messages, each one containing 4 bytes (two values). See below
Template:Mono 1 ECU name message count for PID Template:Mono
Template:Mono 20 ECU name ASCII-coded. Right-padded with null chars (Template:Mono).
Template:Mono 4 In-use performance tracking for compression ignition vehicles 5 messages, each one containing 4 bytes (two values). See below
PID
(hex)
Data bytes returned Description Min value Max value Units FormulaTemplate:Efn

Template:Notelist

Bitwise encoded PIDs

Some of the PIDs in the above table cannot be explained with a simple formula. A more elaborate explanation of these data is provided here:

Service 01 PID Template:Mono - Show PIDs supported

A request for this PID returns 4 bytes of data (Big-endian). Each bit, from MSB to LSB, represents one of the next 32 PIDs and specifies whether that PID is supported.

For example, if the car response is Template:Mono, it can be decoded like this:

Hexadecimal Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Binary Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Supported? Template:Yes Template:No Template:Yes Template:Yes Template:Yes Template:Yes Template:Yes Template:No Template:No Template:No Template:No Template:Yes Template:Yes Template:Yes Template:Yes Template:Yes Template:Yes Template:No Template:Yes Template:No Template:Yes Template:No Template:No Template:No Template:No Template:No Template:No Template:Yes Template:No Template:No Template:Yes Template:Yes
PID number Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono

So, supported PIDs are: Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono, Template:Mono and Template:Mono

Service 01 PID Template:Mono - Monitor status since DTCs cleared

A request for this PID returns 4 bytes of data, labeled A, B, C and D.

The first byte (A) contains two pieces of information. Bit Template:Mono (MSB of byte A) indicates whether or not the MIL (malfunction indicator light, aka. check engine light) is illuminated. Bits Template:Mono through Template:Mono represent the number of diagnostic trouble codes currently flagged in the ECU.

The second, third, and fourth bytes (B, C and D) give information about the availability and completeness of certain on-board tests ("OBD readiness checks"). The third and fourth bytes are to be interpreted differently depending upon whether the engine is spark ignition (e.g. Otto or Wankel engines) or compression ignition (e.g. Diesel engines). In the second byte (B), bit Template:Mono indicates the engine type and thus how to interpret bytes C and D, with Template:Mono being spark (Otto or Wankel) and Template:Mono (set) being compression (Diesel). Bits Template:Mono to Template:Mono and Template:Mono to Template:Mono are used for information about tests that not engine-type specific, and thus termed common tests. Note that for bits indicating test availability a bit set to Template:Mono indicates available, whilst for bits indicating test completeness a bit set to Template:Mono indicates complete.

Bits Definition
Template:Mono State of the CEL/MIL (on/off).
Template:Mono-Template:Mono Number of confirmed emissions-related DTCs available for display.
Template:Mono Reserved (should be Template:Mono)
Template:Mono-Template:Mono Bitmap indicating completeness of common tests.
Template:Mono Indication of engine type
Template:Mono = Spark ignition (e.g. Otto or Wankel engines)
Template:Mono = Compression ignition (e.g. Diesel engines)
Template:Mono-Template:Mono Bitmap indicating availability of common tests.
Template:Mono-Template:Mono Bitmap indicating availability of engine-type specific tests.
Template:Mono-Template:Mono Bitmap indicating completeness of engine-type specific tests.

Bits from byte B representing common test indicators (those not engine-type specific) are mapped as follows:

Test availability Test completeness
Components Template:Mono Template:Mono
Fuel System Template:Mono Template:Mono
Misfire Template:Mono Template:Mono

Bytes C and D are mapped as follows for spark ignition engine types (e.g. Otto or Wankel engines):

Test availability Test completeness
EGR and/or VVT System Template:Mono Template:Mono
Oxygen Sensor Heater Template:Mono Template:Mono
Oxygen Sensor Template:Mono Template:Mono
Gasoline Particulate FilterTemplate:Efn Template:Mono Template:Mono
Secondary Air System Template:Mono Template:Mono
Evaporative System Template:Mono Template:Mono
Heated Catalyst Template:Mono Template:Mono
Catalyst Template:Mono Template:Mono

Bytes C and D are alternatively mapped as follows for compression ignition engine types (Diesel engines):

Test availability Test completeness
EGR and/or VVT System Template:Mono Template:Mono
PM filter monitoring Template:Mono Template:Mono
Exhaust Gas Sensor Template:Mono Template:Mono
- Reserved - Template:Mono Template:Mono
Boost Pressure Template:Mono Template:Mono
- Reserved - Template:Mono Template:Mono
NOx/SCR Monitor Template:Mono Template:Mono
NMHC CatalystTemplate:Efn Template:Mono Template:Mono

Template:Notelist

Service 01 PID Template:Mono - Monitor status this drive cycle

A request for this PID returns 4 bytes of data. The data returned is of an identical form to that returned for PID Template:Mono, with one exception - the first byte is always zero.

Service 01 PID 78 and 79 - Exhaust Gas temperature (EGT) Bank 1 and Bank 2

A request for one of these two PIDs will return 9 bytes of data. PID Template:Mono returns data relating to EGT sensors for bank 1, whilst PID Template:Mono similarly returns data for bank 2. The first byte is a bit encoded field indicating which EGT sensors are supported for the respective bank.

Bytes Description
Template:Mono EGT sensor support
Template:Mono-Template:Mono Temperature read by EGT sensor 1
Template:Mono-Template:Mono Temperature read by EGT sensor 2
Template:Mono-Template:Mono Temperature read by EGT sensor 3
Template:Mono-Template:Mono Temperature read by EGT sensor 4

The first byte is bit-encoded as follows:

Bits Description
Template:Mono-Template:Mono Reserved
Template:Mono EGT sensor 4 supported?
Template:Mono EGT sensor 3 supported?
Template:Mono EGT sensor 2 supported?
Template:Mono EGT sensor 1 supported?

Bytes B through I provide 16-bit integers indicating the temperatures of the sensors. The temperature values are interpreted in degrees Celsius in the range -40 to 6513.5 (scale 0.1), using the usual (A×256+B)/1040 formula (MSB is A, LSB is B). Only values for which the corresponding sensor is supported are meaningful.

Service 03 (no PID required) - Show stored Diagnostic Trouble Codes

A request for this service returns a list of the DTCs that have been set. The list is encapsulated using the ISO 15765-2 protocol.

If there are two or fewer DTCs (up to 4 bytes) then they are returned in an ISO-TP Single Frame (SF). Three or more DTCs in the list are reported in multiple frames, with the exact count of frames dependent on the communication type and addressing details.

Each trouble code requires 2 bytes to describe. Encoded in these bytes are a category and a number. It is typically shown decoded into a five-character form like "Template:Mono", where the first character (here 'U') represents the category the DTC belongs to, and the remaining four characters are a hexadecimal representation of the number under that category. The first two bits (Template:Mono and Template:Mono) of the first byte (A) represent the category. The remaining 14 bits represent the number. Of note is that since the second character is formed from only two bits, it can thus only be within the range Template:Mono-Template:Mono.

Bits Definition
Template:Mono-Template:Mono Category
Template:Mono: Template:Mono - Powertrain
Template:Mono: Template:Mono - Chassis
Template:Mono: Template:Mono - Body
Template:Mono: Template:Mono - NetworkTemplate:Efn
Template:Mono-Template:Mono Number (within category)

Template:Notelist

An example DTC of "Template:Mono" would be decoded as follows:

Bit Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Binary Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono
Hexadecimal Template:Mono Template:Mono Template:Mono Template:Mono
Decoded DTC Template:Mono Template:Mono Template:Mono Template:Mono Template:Mono

The resulting five-character code, e.g. "Template:Mono", can be looked up in a table of OBD-II DTCs to get an actual description of what it represents. Of note, whilst some blocks of DTC code ranges have generic meanings that apply to all vehicles and manufacturers, the meanings of others can vary per manufacturer or even model.

It is also worth noting that DTCs may sometimes be encountered in a four-character form, e.g. "Template:Mono", which is simply the plain hexadecimal representation of the two bytes, with proper decoding with respect to the category not having been performed.

Service 09 PID 08 - In-use performance tracking for spark ignition engines

It provides information about track in-use performance for catalyst banks, oxygen sensor banks, evaporative leak detection systems, EGR systems and secondary air system.

The numerator for each component or system tracks the number of times that all conditions necessary for a specific monitor to detect a malfunction have been encountered. The denominator for each component or system tracks the number of times that the vehicle has been operated in the specified conditions.

The count of data items should be reported at the beginning (the first byte).

All data items of the In-use Performance Tracking record consist of two bytes and are reported in this order (each message contains two items, hence the message length is 4).

Mnemonic Description
OBDCOND OBD Monitoring Conditions Encountered Counts
IGNCNTR Ignition Counter
CATCOMP1 Catalyst Monitor Completion Counts Bank 1
CATCOND1 Catalyst Monitor Conditions Encountered Counts Bank 1
CATCOMP2 Catalyst Monitor Completion Counts Bank 2
CATCOND2 Catalyst Monitor Conditions Encountered Counts Bank 2
O2SCOMP1 O2 Sensor Monitor Completion Counts Bank 1
O2SCOND1 O2 Sensor Monitor Conditions Encountered Counts Bank 1
O2SCOMP2 O2 Sensor Monitor Completion Counts Bank 2
O2SCOND2 O2 Sensor Monitor Conditions Encountered Counts Bank 2
EGRCOMP EGR Monitor Completion Condition Counts
EGRCOND EGR Monitor Conditions Encountered Counts
AIRCOMP AIR Monitor Completion Condition Counts (Secondary Air)
AIRCOND AIR Monitor Conditions Encountered Counts (Secondary Air)
EVAPCOMP EVAP Monitor Completion Condition Counts
EVAPCOND EVAP Monitor Conditions Encountered Counts
SO2SCOMP1 Secondary O2 Sensor Monitor Completion Counts Bank 1
SO2SCOND1 Secondary O2 Sensor Monitor Conditions Encountered Counts Bank 1
SO2SCOMP2 Secondary O2 Sensor Monitor Completion Counts Bank 2
SO2SCOND2 Secondary O2 Sensor Monitor Conditions Encountered Counts Bank 2

Service 09 PID 0B - In-use performance tracking for compression ignition engines

It provides information about track in-use performance for NMHC catalyst, NOx catalyst monitor, NOx adsorber monitor, PM filter monitor, exhaust gas sensor monitor, EGR/ VVT monitor, boost pressure monitor and fuel system monitor.

All data items consist of two bytes and are reported in this order (each message contains two items, hence message length is 4):

Mnemonic Description
OBDCOND OBD Monitoring Conditions Encountered Counts
IGNCNTR Ignition Counter
HCCATCOMP NMHC Catalyst Monitor Completion Condition Counts
HCCATCOND NMHC Catalyst Monitor Conditions Encountered Counts
NCATCOMP NOx/SCR Catalyst Monitor Completion Condition Counts
NCATCOND NOx/SCR Catalyst Monitor Conditions Encountered Counts
NADSCOMP NOx Adsorber Monitor Completion Condition Counts
NADSCOND NOx Adsorber Monitor Conditions Encountered Counts
PMCOMP PM Filter Monitor Completion Condition Counts
PMCOND PM Filter Monitor Conditions Encountered Counts
EGSCOMP Exhaust Gas Sensor Monitor Completion Condition Counts
EGSCOND Exhaust Gas Sensor Monitor Conditions Encountered Counts
EGRCOMP EGR and/or VVT Monitor Completion Condition Counts
EGRCOND EGR and/or VVT Monitor Conditions Encountered Counts
BPCOMP Boost Pressure Monitor Completion Condition Counts
BPCOND Boost Pressure Monitor Conditions Encountered Counts
FUELCOMP Fuel Monitor Completion Condition Counts
FUELCOND Fuel Monitor Conditions Encountered Counts

Enumerated PIDs

Some PIDs are to be interpreted specially, and aren't necessarily exactly bitwise encoded, or in any scale. The values for these PIDs are enumerated.

Service 01 PID Template:Mono - Fuel system status

A request for this PID returns 2 bytes of data. The first byte describes fuel system #1. The second byte describes fuel system #2 (if it exists) and is encoded identically to the first byte. The meaning assigned to the value of each byte is as follows:

Value Description
0 The motor is off
1 Open loop due to insufficient engine temperature
2 Closed loop, using oxygen sensor feedback to determine fuel mix
4 Open loop due to engine load OR fuel cut due to deceleration
8 Open loop due to system failure
16 Closed loop, using at least one oxygen sensor but there is a fault in the feedback system

Any other value is an invalid response.

Service 01 PID Template:Mono - Commanded secondary air status

A request for this PID returns a single byte of data which describes the secondary air status.

Value Description
1 Upstream
2 Downstream of catalytic converter
4 From the outside atmosphere or off
8 Pump commanded on for diagnostics

Any other value is an invalid response.

Service 01 PID Template:Mono - OBD standards this vehicle conforms to

A request for this PID returns a single byte of data which describes which OBD standards this ECU was designed to comply with. The different values the data byte can hold are shown below, next to what they mean:

Value Description
1 OBD-II as defined by the CARB
2 OBD as defined by the EPA
3 OBD and OBD-II
4 OBD-I
5 Not OBD compliant
6 EOBD (Europe)
7 EOBD and OBD-II
8 EOBD and OBD
9 EOBD, OBD and OBD II
10 JOBD (Japan)
11 JOBD and OBD II
12 JOBD and EOBD
13 JOBD, EOBD, and OBD II
14 Reserved
15 Reserved
16 Reserved
17 Engine Manufacturer Diagnostics (EMD)
18 Engine Manufacturer Diagnostics Enhanced (EMD+)
19 Heavy Duty On-Board Diagnostics (Child/Partial) (HD OBD-C)
20 Heavy Duty On-Board Diagnostics (HD OBD)
21 World Wide Harmonized OBD (WWH OBD)
22 Reserved
23 Heavy Duty Euro OBD Stage I without NOx control (HD EOBD-I)
24 Heavy Duty Euro OBD Stage I with NOx control (HD EOBD-I N)
25 Heavy Duty Euro OBD Stage II without NOx control (HD EOBD-II)
26 Heavy Duty Euro OBD Stage II with NOx control (HD EOBD-II N)
27 Reserved
28 Brazil OBD Phase 1 (OBDBr-1)
29 Brazil OBD Phase 2 (OBDBr-2)
30 Korean OBD (KOBD)
31 India OBD I (IOBD I)
32 India OBD II (IOBD II)
33 Heavy Duty Euro OBD Stage VI (HD EOBD-IV)
34-250 Reserved
251-255 Not available for assignment (SAE J1939 special meaning)

Service 01 PID Template:Mono - Fuel Type Coding

This PID returns a value from an enumerated list giving the fuel type of the vehicle. The fuel type is returned as a single byte, and the value is given by the following table:

Value Description
0 Not available
1 Gasoline
2 Methanol
3 Ethanol
4 Diesel
5 LPG
6 CNG
7 Propane
8 Electric
9 Bifuel running Gasoline
10 Bifuel running Methanol
11 Bifuel running Ethanol
12 Bifuel running LPG
13 Bifuel running CNG
14 Bifuel running Propane
15 Bifuel running Electricity
16 Bifuel running electric and combustion engine
17 Hybrid gasoline
18 Hybrid Ethanol
19 Hybrid Diesel
20 Hybrid Electric
21 Hybrid running electric and combustion engine
22 Hybrid Regenerative
23 Bifuel running diesel

Any other value is reserved by ISO/SAE. There are currently no definitions for flexible-fuel vehicle.

Non-standard PIDs

The majority of all OBD-II PIDs in use are non-standard. For most modern vehicles, there are many more functions supported on the OBD-II interface than are covered by the standard PIDs, and there is relatively minor overlap between vehicle manufacturers for these non-standard PIDs.

There is very limited information available in the public domain for non-standard PIDs. The primary source of information on non-standard PIDs across different manufacturers is maintained by the US-based Equipment and Tool Institute and only available to members. The price of ETI membership for access to scan codes varies based on company size defined by annual sales of automotive tools and equipment in North America:

Annual Sales in North America Annual Dues
Under $10,000,000 $5,000
$10,000,000 - $50,000,000 $7,500
Greater than $50,000,000 $10,000

However, even ETI membership will not provide full documentation for non-standard PIDs. ETI states:[6][7]

Some OEMs refuse to use ETI as a one-stop source of scan tool information. They prefer to do business with each tool company separately. These companies also require that you enter into a contract with them. The charges vary but here is a snapshot as of April 13th, 2015 of the per year charges:

GM $50,000
Honda $5,000
Suzuki $1,000
BMW $25,500 plus $2,000 per update. Updates occur annually.

CAN (11-bit) bus format

As defined in ISO 15765-4, emissions protocols (including OBD-II, EOBD, UDS, etc.) use the ISO-TP transport layer (ISO 15765-2). All CAN frames sent using ISO-TP use a data length of 8 bytes (and DLC of 8). It is recommended to pad the unused data bytes with 0xCC.

The PID query and response occurs on the vehicle's CAN bus. Standard OBD requests and responses use functional addresses. The diagnostic reader initiates a query using CAN ID 7DFh, which acts as a broadcast address, and accepts responses from any ID in the range 7E8h to 7EFh. ECUs that can respond to OBD queries listen both to the functional broadcast ID of 7DFh and one assigned ID in the range 7E0h to 7E7h. Their response has an ID of their assigned ID plus 8 e.g. 7E8h through 7EFh.

This approach allows up to eight ECUs, each independently responding to OBD queries. The diagnostic reader can use the ID in the ECU response frame to continue communication with a specific ECU. In particular, multi-frame communication requires a response to the specific ECU ID rather than to ID 7DFh.

CAN bus may also be used for communication beyond the standard OBD messages. Physical addressing uses particular CAN IDs for specific modules (e.g., 720h for the instrument cluster in Fords) with proprietary frame payloads.

Query

The functional PID query is sent to the vehicle on the CAN bus at ID 7DFh, using 8 data bytes. The bytes are:

Byte
PID Type 0 1 2 3 4 5 6 7
SAE Standard Number of
additional
data bytes:
2
Service
01 = show current data;
02 = freeze frame;
etc.
PID code
(e.g.: 05 = Engine coolant temperature)
not used
(ISO 15765-2 suggests CCh)
Vehicle specific Number of
additional
data bytes:
3
Custom service: (e.g.: 22 = enhanced data) PID code
(e.g.: 4980h)
not used
(ISO 15765-2 suggests CCh)

Response

The vehicle responds to the PID query on the CAN bus with message IDs that depend on which module responded. Typically the engine or main ECU responds at ID 7E8h. Other modules, like the hybrid controller or battery controller in a Prius, respond at 07E9h, 07EAh, 07EBh, etc. These are 8h higher than the physical address the module responds to. Even though the number of bytes in the returned value is variable, the message uses 8 data bytes regardless (CAN bus protocol form Frameformat with 8 data bytes). The bytes are:

Byte
CAN Address 0 1 2 3 4 5 6 7
SAE Standard
7E8h,
7E9h,
7EAh,
etc.
Number of
additional
data bytes:
3 to 6
Custom service
Same as query, except that 40h is added to the service value. So:
41h = show current data;
42h = freeze frame;
etc.
PID code
(e.g.: 05 = Engine coolant temperature)
value of the specified parameter, byte 0 value, byte 1 (optional) value, byte 2 (optional) value, byte 3 (optional) not used
(may be 00h or 55h)
Vehicle specific
7E8h, or 8h + physical ID of module.
Number of
additional
data bytes:
4to 7
Custom service: same as query, except that 40h is added to the service value.(e.g.: 62h = response to service 22h request) PID code
(e.g.: 4980h)
value of the specified parameter, byte 0 value, byte 1 (optional) value, byte 2 (optional) value, byte 3 (optional)
Vehicle specific
7E8h, or 8h + physical ID of module.
Number of
additional
data bytes:
3
7Fh this a general response usually indicating the module doesn't recognize the request. Custom service: (e.g.: 22h = enhanced diagnostic data by PID, 21h = enhanced data by offset) 31h not used
(may be 00h)

See also

References

Template:Reflist

Further reading