CAN Bus for car owners: how the "nervous system" of a car works and why it matters for diagnostics
Plain-English CAN Bus: how 60+ ECUs communicate over 2 wires, what ISO 15765-4 and ISO-TP are, high-speed vs low-speed CAN, and why "lost communication with ECU" (U0100+) is critical.
CAN Bus is the “nervous system” of a modern car. Your VW Golf has 60+ electronic modules (ECUs for engine, ABS, airbags, A/C, door modules, cluster), and all of them talk over one shared “wire” — CAN Bus. Understanding the basics helps decode weird faults like “ABS flashes + cruise dies + no start”. Below: short architecture primer and how OBD-II interacts with it.
What CAN Bus is
CAN (Controller Area Network) — a serial-bus standard developed by Bosch in 1983. Two twisted wires (CAN High and CAN Low) with a 120 Ω terminator at each end. Messages are transmitted as frames — ID + up to 8 bytes of data + CRC.
Speeds:
- High-Speed CAN — 500 kbit/s (engine, ABS, ESP — critical systems)
- Medium-Speed CAN — 125 kbit/s (comfort: climate, audio)
- Low-Speed CAN (LIN) — 20 kbit/s (mirrors, windows, keys)
- CAN-FD — up to 8 Mbit/s (new cars from 2018)
Every ECU listens to every message on the bus; filters the ones addressed to it. E.g. the cluster picks up vehicle speed from message “ID 0x201” sent by the engine ECU.
ISO 15765-4 — OBD-II standard on top of CAN
Standard OBD-II since 2008 must be implemented over CAN (ISO 15765-4). Which means:
- Your ELM327 adapter connects to the diagnostic CAN channel (separate from the internal one)
- Communication uses ISO-TP (Transport Protocol) — splits long messages across several frames (VIN, DTC lists, Mode 22 responses)
- Multi-frame — not every adapter reassembles correctly; our SDK does
U-codes — “lost communication”
When one ECU can no longer see another on the bus — U-codes (Network / Communication) appear. Examples:
| Code | Meaning |
|---|---|
| U0100 | Lost communication with ECM (engine) |
| U0101 | Lost communication with TCM (transmission) |
| U0121 | Lost communication with ABS |
| U0140 | Lost communication with BCM (body) |
| U0155 | Lost communication with IPC (cluster) |
| U0001 | High-Speed CAN bus problem |
| U0073 / U0074 / U0075 | A specific CAN channel problem |
Causes of U-codes:
- Broken CAN wire — often in inter-body connectors
- Short of CAN to ground or to +12V
- Weak terminator (120 Ω) — “ringing” on the bus
- Dying ECU — doesn’t answer heartbeat
Example: a storm and “everything flashes”
Symptom: turned on rear wiper → headlights went out, radio muted, ABS light came on all at once.
Cause: short on the CAN bus (wet connector under the dash). All ECUs went “deaf” at once, some rebooted, some went into safe mode.
OBD-II diagnostics:
- Scan → U0100, U0121, U0140 all at once
- Freeze Frame timestamps identical (so it’s a system-wide event)
- Test via checklist — standard PIDs work → bus is physically alive, the problem was transient
Fix: dry the connector, WD-40, contact cleaner. Cost: $0 labour + $10 chemicals.
Chain: why one U-code is scary but a pile of U-codes is critical
- Single U-code (e.g. U0121) — often a local problem with one module (rewire, contact clean).
- Many U-codes in different modules — bus-wide problem (harness break, short, weak terminator). More serious — can stay unresolved for months, until an ECU eventually fries.
Our DTC Analyzer Agent recognises patterns: if there are >3 U-codes in different modules + same Freeze Frame timestamp → says “Likely a bus problem, not an individual module”.
How to “see” the CAN Bus yourself
A stock ELM327 shows only the diagnostic channel (Mode 01-0A). But:
- CAN sniffer ($30-100) — shows raw frames of every message on the bus
- Software: SavvyCAN, Wireshark with a CAN plugin
- That’s DIY hacking, not recommended without understanding the consequences
For 99% of diagnostics OBD-II via ELM327 is enough. Car Diagnostics covers all standard U-codes in the DTC catalog and gives an AI interpretation of grouped problems.
Try it on the free tier — pair an ELM327 adapter, scan the car. If there’s at least one U-code — read the Freeze Frame post to lock the context.