Vehicle Compatibility
K-Line supports two distinct protocols that share the same physical layer (single-wire K-line) but target completely different vehicle systems. This page documents which vehicles use which protocol — and when manufacturers transitioned away from K-line to CAN bus.
BMW I-Bus and K-Bus
Section titled “BMW I-Bus and K-Bus”BMW used I-Bus and K-Bus across their lineup from 1989 through approximately 2013. Both buses use identical signaling (9600 baud, 8E1, XOR checksum) — the difference is which modules are connected to each bus.
- I-Bus (Instrumentation Bus): infotainment — radio, CD changer, navigation, telephone, DSP amplifier
- K-Bus (Body Bus): body control — instrument cluster, light control, climate, door locks, windows, rain sensor
BMW Chassis Compatibility
Section titled “BMW Chassis Compatibility”| Chassis | Series | Production | I-Bus | K-Bus | Notes |
|---|---|---|---|---|---|
| E31 | 8 Series | 1989–1999 | Yes | — | Coupe only, I-Bus for nav/phone |
| E38 | 7 Series | 1994–2001 | Yes | Yes | Both buses, GM5 bridges between them |
| E39 | 5 Series | 1995–2004 | Yes | Yes | Both buses, same architecture as E38 |
| E46 | 3 Series | 1997–2006 | — | Yes | K-Bus only, no factory I-Bus |
| E52 | Z8 | 2000–2003 | — | Yes | K-Bus only, shared E39 electronics |
| E53 | X5 | 1999–2006 | Yes | Yes | Both buses |
| E83 | X3 | 2003–2010 | — | Yes | K-Bus only, later models transition to K-CAN |
| E85/E86 | Z4 | 2002–2008 | — | Yes | K-Bus only |
| E87 | 1 Series | 2004–2013 | — | Yes | K-Bus only, late production may use K-CAN |
Where I-Bus and K-Bus Connect
Section titled “Where I-Bus and K-Bus Connect”On models with both buses (E38, E39, E53), the GM5 body control module acts as a gateway, bridging messages between I-Bus and K-Bus when a module on one bus needs to reach a module on the other.
For models with only K-Bus (E46, E83, E85), all body and infotainment modules share the single bus. The CD changer connector in the trunk is the most accessible tap point — it carries K-Bus, 12V, and ground on a standard connector (X18180 on E46).
Non-BMW Vehicles with I-Bus
Section titled “Non-BMW Vehicles with I-Bus”Several non-BMW vehicles share the I-Bus protocol due to shared platforms or BMW-sourced electronics:
| Make | Model | Years | Platform | Notes |
|---|---|---|---|---|
| MINI | Cooper / One (R50) | 2001–2006 | BMW Group | Shared electronics with E46 era |
| MINI | Cooper S (R53) | 2001–2006 | BMW Group | Supercharged variant, same bus |
| MINI | Convertible (R52) | 2004–2008 | BMW Group | Same bus architecture |
| Range Rover | L30 (P38A) | 1994–2002 | BMW era | BMW V8 engine, BMW bus systems |
| Range Rover | L322 | 2002–2005 | BMW era | Early L322 used BMW electronics (pre-Ford takeover) |
| Rover | 75 / MG ZT | 1999–2005 | BMW era | Developed under BMW ownership |
OBD-II K-line (ISO 9141 / ISO 14230)
Section titled “OBD-II K-line (ISO 9141 / ISO 14230)”OBD-II K-line uses ISO 9141-2 (older) or ISO 14230 / KWP2000 (newer) for diagnostic communication. This is a different protocol from BMW I/K-Bus — different baud rate (10400), different checksum (mod256), different bus model (master/slave), and requires an initialization sequence.
In the United States, OBD-II has been mandatory since 1996 for all passenger vehicles and light trucks. The communication protocol was left to the manufacturer’s discretion until 2008, when CAN (ISO 15765) became the sole required protocol.
Protocol Timeline
Section titled “Protocol Timeline”timeline
title OBD-II Protocol Evolution
1996 : OBD-II mandatory (US)
: Manufacturers choose ISO 9141, KWP2000, J1850, or CAN
2001 : European OBD (EOBD) mandatory
: Same protocols, EU emission standards
2003 : CAN bus begins appearing
: Manufacturers start transitioning to CAN
2008 : CAN mandatory (US)
: All new US vehicles must use ISO 15765 (CAN)
2014 : CAN mandatory (EOBD)
: EU catches up, CAN required for all new vehicles
K-line by Manufacturer
Section titled “K-line by Manufacturer”The following tables cover which manufacturers used K-line protocols and when they transitioned to CAN. These are general ranges — specific models within a manufacturer may have switched earlier or later.
Ford (Europe)
Section titled “Ford (Europe)”European Fords are completely different from US Fords — they use ISO 9141 / KWP2000 over K-line, not J1850 PWM. This is the primary target for K-Line’s OBD-II mode alongside the Tucker k-line-board project.
| Model | Generation | Years | Protocol | Notes |
|---|---|---|---|---|
| Fiesta | Mk4 | 1995–2002 | ISO 9141-2 | Zetec / Endura-DE engines |
| Fiesta | Mk5 | 2002–2008 | KWP2000 | Duratec engines |
| Focus | Mk1 | 1998–2004 | ISO 9141-2 / KWP2000 | Zetec / Duratec |
| Focus | Mk2 | 2004–2008 | KWP2000 | Pre-facelift K-line, facelift models may have CAN |
| Mondeo | Mk2 | 1996–2000 | ISO 9141-2 | Zetec engines |
| Mondeo | Mk3 | 2000–2007 | KWP2000 | Duratec / TDCi |
| Ka | Mk1 | 1996–2008 | ISO 9141-2 | Based on Fiesta Mk4 platform |
| Puma | — | 1997–2001 | ISO 9141-2 | Zetec-SE engine |
| Cougar | — | 1998–2002 | ISO 9141-2 / KWP2000 | Based on Mondeo Mk2 |
| C-Max | Mk1 | 2003–2010 | KWP2000 | Based on Focus Mk2 platform |
| Transit | Mk6 | 2000–2006 | KWP2000 | Duratorq TDCi |
| Transit | Mk7 | 2006–2013 | KWP2000 | Later models transition to CAN |
| Galaxy | Mk2 | 2006–2010 | KWP2000 | Shared Ford/VW platform |
Other European Manufacturers
Section titled “Other European Manufacturers”| Manufacturer | Protocol | K-line Years | CAN Transition | Key Models |
|---|---|---|---|---|
| BMW | ISO 9141-2 | 1996–2006 | 2005+ (E60, E90) | 3/5/7/X5 Series (OBD-II diagnostics separate from I/K-Bus) |
| Mercedes-Benz | ISO 9141-2 / KWP2000 | 1996–2004 | 2004+ (W211, W203 FL) | C-Class (W202/W203), E-Class (W210/W211), ML (W163) |
| Volkswagen | KWP2000 | 1996–2004 | 2004+ (Golf V) | Golf IV, Passat B5, Polo 9N, Bora/Jetta IV |
| Audi | KWP2000 | 1996–2004 | 2004+ (B7 A4) | A3 (8L), A4 (B5/B6), A6 (C5), TT (8N) |
| Porsche | ISO 9141-2 | 1996–2004 | 2005+ (997) | 911 (996), Boxster (986), Cayenne (955) |
| Volvo | KWP2000 | 1996–2004 | 2005+ (V50, S40 gen 2) | S60, V70, S80, XC70, XC90 (P2 platform) |
| Saab | KWP2000 | 1996–2002 | 2003+ (9-3 gen 2) | 9-3 gen 1, 9-5 |
| Fiat / Alfa Romeo | ISO 9141-2 | 1996–2005 | 2005+ | Punto, Stilo, 156, 147, Doblo |
| Peugeot / Citroen | ISO 9141-2 / KWP2000 | 1996–2004 | 2004+ | 206, 306, 307, Xsara, C3, C4 |
| Renault | ISO 9141-2 | 1996–2004 | 2005+ | Clio II, Megane I/II, Scenic, Laguna |
| Opel / Vauxhall | KWP2000 | 1996–2004 | 2004+ (Astra H) | Corsa C, Astra G, Vectra B/C, Zafira A |
| SEAT | KWP2000 | 1996–2004 | 2004+ | Ibiza III, Leon I, Toledo II (VW platform) |
| Skoda | KWP2000 | 1996–2004 | 2004+ | Fabia I, Octavia I, Superb I (VW platform) |
One of the last K-line holdouts — many Honda models used ISO 9141-2 right up until the 2008 US CAN mandate.
| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Civic | 1996–2005 | ISO 9141-2 | 7th gen (2001-2005) last K-line Civic |
| Accord | 1996–2007 | ISO 9141-2 | 7th gen (2003-2007) one of the last K-line Hondas |
| CR-V | 1997–2006 | ISO 9141-2 | 1st gen (1997-2001) and 2nd gen (2002-2006) |
| Odyssey | 1999–2005 | ISO 9141-2 | 2nd gen (1999-2004) |
| Element | 2003–2007 | ISO 9141-2 | All model years |
| S2000 | 1999–2009 | ISO 9141-2 | K-line for entire production run |
| Fit / Jazz | 2001–2007 | ISO 9141-2 | 1st gen |
| Integra / RSX | 1996–2006 | ISO 9141-2 | |
| Prelude | 1996–2001 | ISO 9141-2 | All OBD-II Preludes |
Toyota / Lexus
Section titled “Toyota / Lexus”Toyota used KWP2000 (ISO 14230) — the newer K-line variant with fast init support.
| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Corolla | 1996–2006 | KWP2000 | 9th gen (2000-2006) last K-line Corolla |
| Camry | 1996–2006 | KWP2000 | XV30 (2002-2006) last K-line Camry |
| RAV4 | 1996–2005 | KWP2000 | XA20 (2000-2005) |
| Highlander | 2001–2007 | KWP2000 | 1st gen |
| 4Runner | 1996–2005 | KWP2000 | N180 (1996-2002) and early N210 |
| Tacoma | 1996–2004 | KWP2000 | 1st gen |
| Land Cruiser | 1996–2005 | KWP2000 | J100 |
| Yaris / Echo | 1999–2005 | KWP2000 | XP10 |
| Celica | 1996–2006 | KWP2000 | T230 (2000-2006) |
| MR2 Spyder | 1999–2007 | KWP2000 | ZZW30 |
| Lexus IS 300 | 2001–2005 | KWP2000 | XE10 |
| Lexus GS 300 | 1998–2005 | KWP2000 | S160 |
| Lexus RX 300 | 1999–2003 | KWP2000 | XU10 |
Nissan / Infiniti
Section titled “Nissan / Infiniti”| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Altima | 1996–2006 | ISO 9141-2 | L31 (2002-2006) last K-line Altima |
| Sentra | 1996–2006 | ISO 9141-2 | B15 (2000-2006) |
| Maxima | 1996–2004 | ISO 9141-2 | A33 (2000-2003) |
| Pathfinder | 1996–2004 | ISO 9141-2 | R50 |
| Frontier | 1998–2004 | ISO 9141-2 | D22 |
| Xterra | 2000–2004 | ISO 9141-2 | WD22 |
| 350Z | 2003–2006 | ISO 9141-2 | Z33 (early production) |
| Infiniti G35 | 2003–2006 | ISO 9141-2 | V35 |
| Infiniti QX4 | 1997–2003 | ISO 9141-2 |
| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Protege / 323 | 1996–2003 | ISO 9141-2 | BJ |
| Mazda3 | 2004–2006 | ISO 9141-2 | BK, pre-facelift |
| Mazda6 | 2003–2005 | ISO 9141-2 | GG, 1st gen early |
| MX-5 / Miata | 1996–2005 | ISO 9141-2 | NB (1998-2005) |
| MPV | 1996–2006 | ISO 9141-2 | LW |
| RX-8 | 2004–2005 | ISO 9141-2 | SE3P, early production |
| Tribute | 2001–2006 | ISO 9141-2 | EP, Ford Escape platform |
Subaru
Section titled “Subaru”| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Impreza / WRX | 1996–2004 | ISO 9141-2 | GD/GG (2001-2004) |
| Legacy / Outback | 1996–2004 | ISO 9141-2 | BE/BH (1999-2003) last K-line gen |
| Forester | 1998–2004 | ISO 9141-2 | SG (2003-2004) |
| Baja | 2003–2006 | ISO 9141-2 |
Mitsubishi
Section titled “Mitsubishi”| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Lancer / Evo | 1996–2006 | ISO 9141-2 | CT9A Evo VII-IX |
| Eclipse | 1996–2005 | ISO 9141-2 | 3G (2000-2005) |
| Outlander | 2003–2006 | ISO 9141-2 | CU, 1st gen |
| Galant | 1996–2006 | ISO 9141-2 | 8th gen (1996-2004) |
| Montero / Pajero | 1996–2006 | ISO 9141-2 | V60/V70 |
Hyundai
Section titled “Hyundai”| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Elantra | 1996–2006 | KWP2000 | XD (2001-2006) |
| Sonata | 1996–2005 | KWP2000 / ISO 9141 | EF (1998-2005), NF switched to CAN |
| Santa Fe | 2001–2006 | KWP2000 | SM, 1st gen |
| Tucson | 2004–2009 | KWP2000 | JM |
| Accent | 1996–2005 | KWP2000 / ISO 9141 | LC (2000-2005) |
| Tiburon / Coupe | 1996–2008 | KWP2000 | GK (2003-2008) |
| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Optima | 2001–2005 | KWP2000 | MS, 1st gen |
| Sorento | 2003–2006 | KWP2000 | BL, 1st gen |
| Sportage | 2005–2008 | KWP2000 | JE, 2nd gen |
| Spectra / Cerato | 2001–2006 | KWP2000 | LD |
| Rio | 2001–2005 | KWP2000 | DC, 1st gen |
| Carnival / Sedona | 1998–2005 | KWP2000 |
Suzuki
Section titled “Suzuki”| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Swift | 1996–2006 | KWP2000 | HT51S / ZC31S |
| Grand Vitara | 1998–2005 | KWP2000 | FT/GT |
| SX4 | 2006–2009 | KWP2000 | GY, late K-line model |
| Jimny | 1998–2007 | KWP2000 | JB23/JB33 |
| Liana / Aerio | 2001–2007 | KWP2000 |
Chrysler / Dodge / Jeep
Section titled “Chrysler / Dodge / Jeep”Chrysler used ISO 9141-2 almost exclusively for OBD-II diagnostics before the 2008 CAN mandate — making them the most common K-line vehicles on US roads.
| Model | Years (K-line) | Protocol | Notes |
|---|---|---|---|
| Jeep Wrangler | 1996–2006 | ISO 9141-2 | TJ |
| Jeep Cherokee | 1996–2001 | ISO 9141-2 | XJ |
| Jeep Grand Cherokee | 1996–2004 | ISO 9141-2 | WJ (1999-2004) |
| Dodge Ram | 1996–2007 | ISO 9141-2 | 3rd gen (2002-2008, pre-CAN) |
| Dodge Neon | 1996–2005 | ISO 9141-2 | |
| Dodge Caravan | 1996–2007 | ISO 9141-2 | RS (2001-2007) |
| Chrysler PT Cruiser | 2001–2010 | ISO 9141-2 | |
| Chrysler 300M | 1999–2004 | ISO 9141-2 | LH platform |
| Dodge Dakota | 1996–2004 | ISO 9141-2 | AN (1997-2004) |
| Dodge Durango | 1998–2003 | ISO 9141-2 | DN |
Ford (US Market)
Section titled “Ford (US Market)”US-market Fords used J1850 PWM — a different protocol that K-Line does not support. Pin 2 on the OBD-II connector instead of pin 7.
A handful of US Ford-badged vehicles did use K-line because they had non-Ford engines:
| Model | Years | Protocol | Why K-line? |
|---|---|---|---|
| Escort 1.8L | 1996 | ISO 9141 | Mazda BP engine |
| Probe | 1996–1997 | ISO 9141 | Mazda MX-6 platform |
| Aspire | 1996–1997 | ISO 9141 | Kia/Mazda platform |
| Mercury Villager | 1996–1998 | ISO 9141 | Nissan VG30E engine |
GM (US Market)
Section titled “GM (US Market)”US-market GM vehicles used J1850 VPW — also not K-line. Pin 10 on the OBD-II connector.
Identifying Your Vehicle’s Protocol
Section titled “Identifying Your Vehicle’s Protocol”The OBD-II connector pinout tells you which protocol(s) your vehicle supports. Check which pins are populated:
| Pin | Protocol | Signal |
|---|---|---|
| 2 | J1850 PWM (Ford) | Bus+ |
| 4 | Chassis ground | GND |
| 5 | Signal ground | GND |
| 6 | CAN bus | CAN High |
| 7 | ISO 9141 / ISO 14230 (K-line) | K-line |
| 10 | J1850 VPW (GM) | Bus |
| 14 | CAN bus | CAN Low |
| 15 | ISO 9141 / ISO 14230 (optional) | L-line |
| 16 | Battery positive | +12V |
If pin 7 is populated and pins 6/14 are not, the vehicle uses K-line exclusively — this is the target for K-Line’s OBD-II mode.
If pin 7 AND pins 6/14 are populated, the vehicle supports both K-line and CAN. The ECU may respond on either protocol, but CAN is generally preferred by modern scan tools. K-Line can still use the K-line path.
If only pins 6/14 are populated (no pin 7), the vehicle is CAN-only and cannot be reached via K-line.
Protocol Coverage Summary
Section titled “Protocol Coverage Summary”| Protocol | Interface | Use Case | Vehicle Count |
|---|---|---|---|
| BMW I/K-Bus | Optocoupler (PC817) | Body/infotainment control | ~15 BMW/MINI/Rover models (1989–2013) |
| OBD-II K-line | Optocoupler or transistor | Engine diagnostics (ISO 9141/14230) | Hundreds of models (1996–2008) |
| OBD-II CAN | Not supported (different physical layer) | — | All vehicles 2008+ |
The optocoupler circuit in this project was designed for BMW I/K-Bus but works for OBD-II K-line as well — both protocols use the same electrical signaling (open-drain/collector on a single wire, idle HIGH). The K-Line firmware handles the protocol differences (baud rate, framing, checksum, initialization) in software.
References
Section titled “References”- muki01/OBD2_K-line_Reader — Arduino/ESP32 K-line reader supporting ISO 9141 and ISO 14230 with automatic protocol detection. Includes transistor, comparator (LM393), and dedicated IC (L9637D, MCZ33290, SN65HVDA195) schematics.
- muki01/I-K_Bus — BMW I/K-Bus library that K-Line’s protocol handler is based on. Optocoupler schematic, E46 command codes, and bus documentation.
- SAE J1979 — OBD-II PID definitions and decode formulas (Mode 01 current data).
- ISO 9141-2 — K-line 5-baud slow initialization protocol.
- ISO 14230-4 (KWP2000) — K-line fast initialization and enhanced diagnostic services.