CAN bus network icon

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.

AI-generated 4 min read

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:

CodeMeaning
U0100Lost communication with ECM (engine)
U0101Lost communication with TCM (transmission)
U0121Lost communication with ABS
U0140Lost communication with BCM (body)
U0155Lost communication with IPC (cluster)
U0001High-Speed CAN bus problem
U0073 / U0074 / U0075A 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:

  1. Scan → U0100, U0121, U0140 all at once
  2. Freeze Frame timestamps identical (so it’s a system-wide event)
  3. 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 tierpair an ELM327 adapter, scan the car. If there’s at least one U-code — read the Freeze Frame post to lock the context.