Add vehicle compatibility reference (BMW I/K-Bus + OBD-II K-line by make/model/year)
This commit is contained in:
parent
c32e62cf1d
commit
7045d8b614
@ -19,6 +19,7 @@ export default defineConfig({
|
|||||||
items: [
|
items: [
|
||||||
{ label: 'Circuit Design', slug: 'reference/circuit-design' },
|
{ label: 'Circuit Design', slug: 'reference/circuit-design' },
|
||||||
{ label: 'Bill of Materials', slug: 'reference/bom' },
|
{ label: 'Bill of Materials', slug: 'reference/bom' },
|
||||||
|
{ label: 'Vehicle Compatibility', slug: 'reference/vehicle-compatibility' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
173
site/src/content/docs/reference/vehicle-compatibility.mdx
Normal file
173
site/src/content/docs/reference/vehicle-compatibility.mdx
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
---
|
||||||
|
title: Vehicle Compatibility
|
||||||
|
description: "Which vehicles use BMW I/K-Bus and OBD-II K-line protocols, organized by make, model, and year"
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Aside, Tabs, TabItem } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
|
AutoWire 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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
| 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 |
|
||||||
|
|
||||||
|
<Aside type="caution">
|
||||||
|
Late-production E83, E85, and E87 vehicles may have transitioned from K-Bus to K-CAN (a CAN-based body bus). Verify by checking the OBD-II connector pinout — K-Bus uses pin 7 (ISO 9141 K-line), while K-CAN uses pins 6 and 14 (CAN High/Low).
|
||||||
|
</Aside>
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
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 |
|
||||||
|
|
||||||
|
<Aside>
|
||||||
|
The Range Rover L322 switched from BMW to Jaguar/Ford electronics around 2005–2006. Only the earlier BMW-era L322s have I-Bus. Check for the BMW-style 20-pin diagnostic connector behind the glovebox — if present, the bus architecture is BMW-derived.
|
||||||
|
</Aside>
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
```
|
||||||
|
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) │
|
||||||
|
│ K-line protocols no longer required │
|
||||||
|
│ │
|
||||||
|
2014 ├─── CAN mandatory (EOBD) ───────────────────────────────────┤
|
||||||
|
EU catches up, CAN required for all new vehicles
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<TabItem label="European">
|
||||||
|
|
||||||
|
| Manufacturer | Protocol | K-line Years | CAN Transition | Notes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| **BMW** | ISO 9141-2 | 1996–2006 | 2005+ (E60, E90) | OBD-II diagnostics separate from I/K-Bus |
|
||||||
|
| **Mercedes-Benz** | ISO 9141-2 / KWP2000 | 1996–2004 | 2004+ (W211, W203 facelift) | |
|
||||||
|
| **Volkswagen** | KWP2000 | 1996–2004 | 2004+ (Golf V / PQ35 platform) | |
|
||||||
|
| **Audi** | KWP2000 | 1996–2004 | 2004+ (B7 A4) | Shared platform with VW |
|
||||||
|
| **Porsche** | ISO 9141-2 | 1996–2004 | 2005+ (997, Cayenne facelift) | |
|
||||||
|
| **Volvo** | KWP2000 | 1996–2004 | 2005+ (V50, S40 gen 2) | |
|
||||||
|
| **Saab** | KWP2000 | 1996–2004 | 2003+ (9-3 gen 2) | Early CAN adopter |
|
||||||
|
| **Fiat / Alfa Romeo** | ISO 9141-2 | 1996–2005 | 2005+ | |
|
||||||
|
| **Peugeot / Citroen** | ISO 9141-2 / KWP2000 | 1996–2004 | 2004+ | |
|
||||||
|
| **Renault** | ISO 9141-2 | 1996–2004 | 2005+ (Megane II) | |
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem label="Japanese / Korean">
|
||||||
|
|
||||||
|
| Manufacturer | Protocol | K-line Years | CAN Transition | Notes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| **Honda** | ISO 9141-2 | 1996–2007 | 2008 (US mandate) | One of the last K-line holdouts |
|
||||||
|
| **Toyota / Lexus** | KWP2000 (ISO 14230) | 1996–2006 | 2006+ (Camry gen 6) | Some models CAN earlier |
|
||||||
|
| **Nissan / Infiniti** | ISO 9141-2 | 1996–2005 | 2004+ (Altima, 350Z) | |
|
||||||
|
| **Mazda** | ISO 9141-2 | 1996–2005 | 2006+ (Mazda3 gen 1 facelift) | |
|
||||||
|
| **Subaru** | ISO 9141-2 | 1996–2004 | 2005+ (Legacy/Outback gen 4) | |
|
||||||
|
| **Mitsubishi** | ISO 9141-2 | 1996–2005 | 2006+ | |
|
||||||
|
| **Suzuki** | KWP2000 | 1996–2006 | 2007+ | |
|
||||||
|
| **Hyundai** | KWP2000 / ISO 9141 | 1996–2005 | 2005+ (Sonata NF) | |
|
||||||
|
| **Kia** | KWP2000 / ISO 9141 | 1996–2005 | 2005+ (Optima gen 2) | Shared platform with Hyundai |
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem label="American">
|
||||||
|
|
||||||
|
| Manufacturer | Protocol | K-line Years | CAN Transition | Notes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| **Chrysler / Dodge / Jeep** | ISO 9141-2 | 1996–2007 | 2008 (US mandate) | Used ISO 9141 almost exclusively before CAN |
|
||||||
|
| **Ford** | Mostly J1850 PWM | — | 2005+ | Ford used J1850 PWM, **not K-line**, for most models |
|
||||||
|
| **GM (Chevrolet, etc.)** | Mostly J1850 VPW | — | 2006+ | GM used J1850 VPW, **not K-line**, for most models |
|
||||||
|
|
||||||
|
<Aside type="note">
|
||||||
|
**Ford exceptions using K-line:** A few Ford-badged vehicles used ISO 9141 because they had non-Ford engines: the 1996 Escort 1.8L (Mazda BP engine), 1996–1997 Probe (Mazda platform), Aspire (Kia/Mazda), and Mercury Villager (Nissan VG30E engine). These are the only Ford vehicles that respond to K-line initialization.
|
||||||
|
</Aside>
|
||||||
|
|
||||||
|
<Aside type="note">
|
||||||
|
**GM exceptions:** Some 2005–2007 GM vehicles used KWP2000 (ISO 14230) alongside CAN during the transition period. Specific models vary — check the OBD-II connector pinout.
|
||||||
|
</Aside>
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
### 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 AutoWire'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. AutoWire 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.
|
||||||
|
|
||||||
|
<Aside type="tip">
|
||||||
|
A multimeter or continuity tester on the OBD-II connector is the definitive way to determine protocol support. Pin 7 should show approximately battery voltage (12V) at key-on if K-line is active — the bus idles HIGH.
|
||||||
|
</Aside>
|
||||||
|
|
||||||
|
## 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 AutoWire firmware handles the protocol differences (baud rate, framing, checksum, initialization) in software.
|
||||||
Loading…
x
Reference in New Issue
Block a user