OBD 1 & OBD 1.5 Protocols
Deep technical details of manufacturer-specific diagnostic protocols: Ford DCL/CART, Chrysler CCD/SCI, Toyota TCCS, Honda serial.
The Pre-OBD-II Landscape
Before the 1996 federal mandate, every automaker used proprietary diagnostic systems. No standard connector, protocol, trouble codes, or scan tool. This page covers the actual electrical and protocol-level details of each system.
Ford EEC-IV — DCL/CART Protocol
Ford EEC-IV used two communication methods: the flash-code self-test (KOEO/KOER) and the DCL (Data Communications Link) / CART (Custom Automotive Radio Transceiver) protocol for bidirectional scan tool communication.
Physical Layer — DCL (RS-485)
Standard: RS-485 (differential) or single-wire Baud rate: 160 baud (early) or 8192 baud (DCL/CART) Connector: 2-pin, 3-pin, 6-pin, or 16-pin OBD-II Voltage: 0-5V TTL (single-wire) or differential Direction: Bidirectional (TX and RX on same pin) 2-pin connector (oldest): Pin 1 — DCL Bus + Pin 2 — DCL Bus - 3-pin connector: Pin 1 — GND (Signal Ground) Pin 2 — DCL Bus + Pin 3 — DCL Bus - 6-pin connector (1988-1995): Pin 1 — Signal Ground Pin 2 — Self-Test Output (STO) Pin 3 — Not used Pin 4 — Power Ground Pin 5 — Self-Test Input (STI) Pin 6 — DCL+ (Data stream) 16-pin OBD-II connector (1994-1995): Pin 2 — SAE J1850 Bus + Pin 4 — Chassis Ground Pin 5 — Signal Ground Pin 6 — ISO 9141 K-Line Pin 7 — ISO 9141 K-Line (DCL+) Pin 10 — SAE J1850 Bus - Pin 15 — ISO 9141 L-Line
Self-Test Protocol (KOEO/KOER)
KOEO (Key On, Engine Off):
1. Connect STI (Pin 5) to Signal Ground (Pin 1)
2. ECU enters self-test mode
3. Output on STO (Pin 2) as flashing CEL or serial
4. Codes output as two-digit numbers:
- Flash pattern: N flashes → pause → M flashes = Code NM
- Example: 1 flash → pause → 2 flashes = Code 12
- 3.2 second pause between codes
5. Code 55 = test passed (no codes stored)
6. After KOEO codes: wiggle test (monitor for intermittent faults)
KOER (Key On, Engine Running):
1. Connect STI to Ground, start engine
2. ECU runs dynamic tests (actuators, sensors)
3. Output results on STO
4. Some models require specific inputs during test
(brake pedal, steering wheel turn, A/C on/off)DCL/CART Communication Protocol
DCL/CART uses a request/response model: Scan Tool → ECU: Command byte (function code) ECU → Scan Tool: Response data (sensor values, DTCs) Command format: [Header] [Command] [Parameters] [Checksum] Common DCL commands: 0x01 — Request sensor data stream 0x02 — Request stored DTCs 0x03 — Clear DTCs 0x04 — Actuator test mode 0x09 — Request vehicle ID / calibration Response format: [Header] [Command Echo] [Data bytes] [Checksum] Sensor data is returned as raw A/D counts — the scan tool must apply scaling formulas to display engineering units (RPM, °C, %, etc.).
Ford EEC-IV Common DTCs
Code Sensor/System Condition ────────────────────────────────────────────────────── 12 MAP sensor No reference pressure 14 ECT (Coolant Temp) Low input (open circuit) 15 ECT (Coolant Temp) High input (shorted) 17 EGR system EGR valve malfunction 18 CAM sensor (Cylinder ID) No signal 21 TPS (Throttle Position) Voltage low (< 0.2V) 22 TPS (Throttle Position) Voltage high (> 4.5V) 23 MAT (Manifold Air Temp) Out of range 24 VSS (Vehicle Speed) No signal at 2000+ RPM 31 EGR valve position Out of range 33 MAF sensor Low airflow detected 35 MAP sensor High voltage (> 4.6V) 41 O2 sensor Lean condition (no rich toggle) 42 O2 sensor Rich condition (no lean toggle) 51 ECU Internal self-test failure 52 ECU Power/fuel backup mode 55 — KOEO test passed (no codes)
Chrysler CCD Bus — Electrical Specification
The Chrysler Collision Detection (CCD) bus was the first mass-produced automotive multiplex network. It uses a differential two-wired twisted pair with precise electrical specifications.
Physical Layer
Standard: Chrysler proprietary (pre-J1850)
Baud rate: 7,812.5 baud (= 1 MHz / 128)
Wires: 2 twisted pair (Bus+ and Bus−)
Twist rate: 1 turn per 44.45mm (1¾ inches)
Termination: 120Ω resistor across Bus+ and Bus−
Bias: 5V through 13kΩ to Bus−, Bus+ to GND
through 13kΩ (voltage divider)
Idle voltage: Bus+ = 2.49V, Bus− = 2.51V
Idle diff: 0.02V (differential)
Active diff: 0.100V (nominal, range 0.02-0.120V)
Bit framing: Asynchronous serial (like RS-232)
Encoding: Small differential = 1, Large = 0
Current: 6mA per driver (source or sink)
IC chip: Intersil CDP68HC68S1 (SPI-to-CCD bridge)CCD Bus Electrical Details
BUS BIAS CIRCUIT:
┌──────────────┐
+5V ──── 13kΩ ──┤ │
│ Bus− wire │
│ │
├── 120Ω term ─┤
│ │
│ Bus+ wire │
│ │
└──── 13kΩ ───┘
│
GND
At idle:
Bus− = 5V × (120 / (13000+120+13000)) = 2.51V
Bus+ = 5V × (13000+120) / (13000+120+13000) = 2.49V
Differential = 0.02V (recognized as idle/1)
When transmitting:
Current drivers toggle 6mA through the bus
Bus− goes lower, Bus+ goes higher
Differential increases to ~0.100V (recognized as 0)CCD Connectors
Under-hood engine connector: Pin 1/2 — +12V (not always present) Pin 3 — PCM-TX (SCI transmit to scanner) Pin 4 — GND Pin 6 — PCM-RX (SCI receive from scanner) In-cabin body connector (blue 6-pin): Pin 1 — CCD− (Bus minus) Pin 2 — +12V (battery) Pin 3 — SCI-RX (may be missing) Pin 4 — GND Pin 5 — SCI-TX (may be missing) Pin 6 — CCD+ (Bus plus) SCI-RX (Pin 6) shows 5V with no scan tool connected SCI-TX (Pin 3) shows 0V until scan tool connects
Chrysler SCI Bus
SCI = Serial Communication Interface Purpose: Direct scan tool ↔ ECM/PCM link (not module-to-module) Low speed mode (7,812.5 baud): - Every byte sent by tool is echoed back by controller - Used for: DTC read/clear, actuator tests, basic data - Command 0x13: Enter actuator test mode - Command 0x14: Read RAM (low-speed, scaled values) High speed mode (62,500 baud): - Enter by sending 0x12 repeatedly until echoed - Used for: Real-time data, high-resolution sensors - Direct memory read (raw A/D counts) - Table select bytes (0xF0-0xFD) switch data pages - Up to 14 tables × 240 bytes each = 3,360 bytes Typical session: 1. Connect at 7812.5 baud 2. Send 0x12 repeatedly → switch to 62500 baud 3. Send table select (0xF0) → access sensor data 4. Read raw bytes → apply scaling formulas 5. Switch tables for different sensor groups
Chrysler DTCs
Chrysler uses two-digit codes via CEL flash: Code 11 — No reference signal (crank position) Code 12 — Battery disconnect (recent) Code 13 — MAP sensor voltage out of range Code 14 — MAP sensor voltage low Code 15 — No vehicle speed signal Code 21 — O2 sensor voltage high (rich) Code 22 — Coolant temp sensor out of range Code 23 — Intake air temp sensor out of range Code 24 — Throttle position sensor out of range Code 25 — Idle air control motor fault Code 31 — EGR system fault Code 33 — A/C clutch relay circuit Code 34 — Cruise control servo fault Code 35 — Cooling fan relay fault Code 41 — Alternator field control fault Code 42 — Fuel relay circuit fault Code 43 — Multiple cylinder misfire Code 44 — ECU ground circuit fault Code 51 — Oxygen sensor lean Code 52 — Oxygen sensor rich Code 53 — ECU internal fault Code 54 — No fuel pickup signal Code 55 — End of codes
Honda 3-Pin Serial Protocol
Honda used a custom serial protocol on a 3-pin connector. The protocol is request/response based at 9,600 baud with a specific command structure.
Physical Layer
Baud rate: 9,600 baud Data bits: 8 Parity: None Stop bits: 1 Voltage: 0-5V TTL Connector: 3-pin (blue, under dash) Pin 7 (TXD/RXD) — Bidirectional data SCS pin — Service check (short to GND for codes) GND — Ground Location: Passenger kick panel or under dashboard Often in rubber sleeve with 2-pin SCS connector SCS connector is for self-diagnostic mode (not data)
Honda Serial Command Protocol
Request format: [Header1] [Header2] [Command] [Sub-command] [Length] Header1 = 0x20 (request to ECU) Header2 = 0x05 (ECU address) Command = 0x01 (read data) or 0x72 (write) Example: Request RPM TX: 20 05 01 00 05 RX: 02 01 05 10 [byte2] [byte3] 03 RPM = ((byte2 × 256) + byte3) / 4 Response format: [Header] [Command] [Sub-command] [Data...] [End] Header = 0x02 (response from ECU) End = 0x03
Honda Data PIDs
Parameter Command Formula ────────────────────────────────────────────────────── Engine RPM 20 05 01 00 05 ((B2×256)+B3)/4 Engine Coolant 20 05 01 00 01 polynomial+40 (°C) Intake Air Temp 20 05 01 00 11 polynomial+40 (°C) Throttle Position 20 05 01 00 14 (raw-25)/2.08 % MAP Sensor 20 05 01 00 12 raw × 0.716 kPa O2 Sensor 20 05 01 00 15 raw 0-255 (0-1V) Short Term Fuel 20 05 01 00 06 correction factor Long Term Fuel 20 05 01 00 07 correction factor Vehicle Speed 20 05 01 00 0D km/h (1:1) Timing Advance 20 05 01 00 26 ((raw-24)/2)+128 Battery Voltage 20 05 01 00 17 raw / 10.45 V
Toyota TCCS Protocol
Baud rate: 9,600 baud Connector: 22-pin DLC1 (under hood) + 17-pin DLC2 (dash) Mode select: Short TE1 to E1 on DLC1 Data pin: TD (test data) on DLC1 DLC1 pinout (22-pin): TE1 — Test terminal 1 (short to E1 for diagnostics) TE2 — Test terminal 2 (advanced diagnostics) E1 — Ground TD — Test data output (9600 baud serial) VF — Variable frequency (voltage feedback) +B — Battery voltage W — Watch lamp (CEL control) IG− — Ignition signal (tachometer reference) DTC output: CEL flash pattern (2-digit codes) Code 12: RPM signal (crank position) Code 13: RPM signal at high speed Code 14: Ignition signal fault Code 21: O2 sensor fault Code 22: ECT sensor fault Code 24: IAT sensor fault Code 31: MAP sensor fault Code 41: TPS fault Code 51: Idle switch fault Code 55: Knock sensor fault
OBD 1.5 — The Transitional Era
OBD 1.5 (1994-1995) installed OBD-II hardware (16-pin connector) but used manufacturer-specific software. Physically compatible with OBD-II tools but not fully compliant.
Feature OBD-I OBD 1.5 OBD-II ────────────────────────────────────────────────────────── Connector Proprietary 16-pin J1962 16-pin J1962 Protocol Manufacturer Manufacturer SAE standard DTCs Flashing CEL P1-codes only P0/P1/P2 codes LiveData Rare Partial PIDs Standard PIDs Monitors None Incomplete 8 required Scan Tool Brand-specific Partial universal Universal Year Range 1980-1995 1994-1995 1996-present