All diagnostics
ISO 15031 / SAE J1979

OBD-II

On-Board Diagnostics II — emissions diagnostics standardized worldwide.

Overview

OBD-II provides a standardized subset of diagnostic services (Modes 0x01–0x0A) accessible through the SAE J1962 connector. It exposes live PIDs, freeze frames, and DTCs related to emissions.

Frame / message structure

FieldBitsDescription
Mode8Service mode (0x01 current data, 0x03 stored DTCs…)
PID8Parameter ID (e.g. 0x0C engine RPM)
DatavarMode/PID-specific

Byte structure — request & response

OBD-II — SAE J1979 over CAN ISO 15765-4

Frame template
[CAN_ID 0x7DF/0x7E8][PCI 1B][Mode 1B][PID 1B][Data…]
Request
OffSizeFieldValueDescription
0–12 BCAN ID07 DFFunctional broadcast ID for OBD-II requests.
21 BPCI0x02ISO-TP single frame, length = 2.
31 BMode0x01Show current data.
41 BPID0x0CEngine RPM.
5–73 BPaddingCC CC CCPadded to 8 bytes.
Response
OffSizeFieldValueDescription
0–12 BCAN ID07 E8Engine ECU response ID.
21 BPCI0x04ISO-TP single frame, length = 4.
31 BMode + 0x400x41Positive response to Mode 01.
41 BPID echo0x0CEchoed PID.
5–62 BData A B1A F8(A·256 + B)/4 = 1726 RPM.
71 BPaddingCCPad to 8 bytes.

OBD-II requests use functional address 0x7DF; ECUs reply individually on 0x7E8…0x7EF. Modes 0x01–0x0A defined in J1979.

Use cases

  • · Emissions testing
  • · Generic scan tools
  • · Fleet telematics

Pros

  • Universal across all light-duty vehicles
  • Cheap tooling

Cons

  • Limited to emissions data
  • No access to manufacturer-specific functions

Request / Response examples

Read engine RPM (Mode 01 PID 0C)

Request
010C
Response
410C1AF8

(0x1A * 256 + 0xF8) / 4 = 1726 RPM.