Docs / CAN

CAN on electric vehicles

ECUs send each other small CAN frames: an identifier (the CAN ID) plus a payload of up to 8 bytes on classic CAN, more on CAN FD. Units that care about a message listen for that ID. There is no URL inside the car. The ID is the address.

Most EVs have more than one bus: powertrain, body, charging, often with a gateway between them. A cheap OBD dongle usually sits on the filtered side and only sees diagnostics. That is why Torque can show speed and still hide battery current. Open decoding means a tap on the right wires, plus bitrate and whether the bus is CAN FD.

What a capture looks like

A log line is typically timestamp, bus, ID, and hex bytes. This is a shape only, not a claim about a specific car:

(012.345) can0 12A#04 00 7C 01 00 00 00 00

The ID 12A means nothing until a DBC says which bits are which. One ID can pack several signals: a status enum, a 16-bit current, a checksum in the last byte.

OBD-II vs vehicle CAN

OBD-II Mode 01 PIDs are a small standard window. Pack voltage, isolation, contactors, and thermal loops are usually proprietary IDs on another network. We document those layouts when they are observed and shared, not guessed from one screenshot.

How to start

  • Note vehicle, year, software if you can, and where you tapped (OBD, charger inlet, a named connector).
  • Record bitrate (often 500 kbit/s on powertrain, not always).
  • Capture one action at a time: rest, drive, charge, HVAC. Labels beat a three-hour mash.
  • Redact VIN and other owner-identifying fields before you publish a log.

Next: how a DBC file describes those bits.