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
| Field | Bits | Description |
|---|---|---|
| Mode | 8 | Service mode (0x01 current data, 0x03 stored DTCs…) |
| PID | 8 | Parameter ID (e.g. 0x0C engine RPM) |
| Data | var | Mode/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
| Off | Size | Field | Value | Description |
|---|---|---|---|---|
| 0–1 | 2 B | CAN ID | 07 DF | Functional broadcast ID for OBD-II requests. |
| 2 | 1 B | PCI | 0x02 | ISO-TP single frame, length = 2. |
| 3 | 1 B | Mode | 0x01 | Show current data. |
| 4 | 1 B | PID | 0x0C | Engine RPM. |
| 5–7 | 3 B | Padding | CC CC CC | Padded to 8 bytes. |
Response
| Off | Size | Field | Value | Description |
|---|---|---|---|---|
| 0–1 | 2 B | CAN ID | 07 E8 | Engine ECU response ID. |
| 2 | 1 B | PCI | 0x04 | ISO-TP single frame, length = 4. |
| 3 | 1 B | Mode + 0x40 | 0x41 | Positive response to Mode 01. |
| 4 | 1 B | PID echo | 0x0C | Echoed PID. |
| 5–6 | 2 B | Data A B | 1A F8 | (A·256 + B)/4 = 1726 RPM. |
| 7 | 1 B | Padding | CC | Pad 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.