Skip to main content
PROTOCOLS · FIELDBUS

What Is CAN Bus?

CAN bus (Controller Area Network) is a two-wire network that lets controllers, sensors and actuators share short messages without a central computer. Developed by Bosch for vehicles, it uses a noise-resistant differential signal and gives every message a priority, so critical data gets through first. It is now standard in vehicles, machinery and remote equipment.

01

How CAN bus works

CAN bus (Controller Area Network) is a serial network that lets the controllers in a vehicle or machine talk to each other over a single pair of wires. Bosch developed it in the 1980s to replace the bundles of point-to-point wiring in cars, presented it in 1986, and it was later standardised as ISO 11898.

Every device on the bus, called a node, can transmit, and every node hears every message. A message carries no destination address. Instead it has an identifier that says what the data is, such as engine speed or door status, and each node decides whether it needs it. The identifier also sets the message’s priority: the lower the number, the higher the priority.

If two nodes start sending at once, they compare identifiers bit by bit as they transmit. A 0 bit is dominant and overrides a 1, so the node with the lower identifier carries on and the other stops and tries again. The winning message is never corrupted, which is why CAN suits real-time control: a brake or fault message always gets through ahead of routine data.

02

Wiring, termination and speed

CAN uses two wires, CAN_H and CAN_L, twisted together. The receiver reads the voltage difference between them rather than either wire against ground, so interference that hits both wires equally cancels out. That differential signalling is the same idea that gives RS-485 its noise immunity.

The bus is a single line with short drops to each node, and it needs a 120 ohm resistor at each end. Measured across CAN_H and CAN_L with the power off, a correctly terminated bus reads about 60 ohm. Missing or extra terminators are one of the commonest causes of a bus that works on the bench and fails in the field.

Speed trades off against length, because every node must see each bit within the same bit time. As a rough guide, 1 Mbit/s works to around 40 m, 500 kbit/s to around 100 m, 250 kbit/s to around 250 m and 125 kbit/s to around 500 m. Truck and machinery networks often run at 250 or 500 kbit/s for that reason.

  • //
    Error detection. Each frame carries a CRC and an acknowledgement slot, and every node checks every frame, so a corrupted message is flagged and resent automatically.
  • //
    Fault confinement. A node that keeps causing errors counts them, steps back to an error-passive state and, if it continues, switches itself off the bus so the rest of the network keeps running.
  • //
    Message filtering. CAN controllers filter by identifier in hardware, so a node’s processor only handles the messages it actually needs.
03

Classical CAN, CAN FD and CAN XL

The original protocol has been extended twice to carry more data per frame and at higher rates. All three versions can share the same twisted-pair wiring, although a classical CAN controller cannot read CAN FD frames.

Version Defined in Payload per frame Typical data rate Where it is used
Classical CAN (CAN 2.0A/B) ISO 11898-1 Up to 8 bytes Up to 1 Mbit/s Most vehicle, truck and machinery networks
CAN FD ISO 11898-1:2015 Up to 64 bytes Around 2 to 5 Mbit/s in the data phase Newer vehicles, software updates over CAN, sensor data
CAN XL CiA 610 / ISO 11898-1 Up to 2,048 bytes Around 10 to 20 Mbit/s Early adoption in vehicle zonal networks

Classical CAN also comes in two identifier lengths: 11-bit identifiers in CAN 2.0A and 29-bit extended identifiers in CAN 2.0B. J1939 uses the 29-bit form.

04

Higher-layer protocols: J1939, CANopen and OBD-II

CAN itself only defines how bits and frames move. What the identifiers and data bytes mean is set by a higher-layer protocol, and that is usually what an engineer means by “the CAN data” on a given machine.

  • //
    SAE J1939. The standard for trucks, buses, agricultural and construction machinery. It defines parameter groups for engine speed, fuel use, temperatures and fault codes, which is what fleet telematics systems read from the vehicle.
  • //
    CANopen. Maintained by CAN in Automation (CiA) and common in industrial machinery, drives, lifts and medical equipment. It defines device profiles so drives and I/O from different makers behave the same way.
  • //
    OBD-II over CAN. The diagnostic protocol on cars. Since the 2008 model year, US cars have had to support OBD-II over CAN (ISO 15765-4), and most European cars use it too.
  • //
    DeviceNet and others. DeviceNet, NMEA 2000 on boats and ARINC 825 on aircraft are further protocols built on the same CAN layer.
FAQ · 01
How does a Linux computer read CAN bus data?
Through SocketCAN, the CAN support built into the Linux kernel. Each CAN port appears as a network interface such as can0, so applications and tools like candump read and send frames through standard sockets whatever adapter sits underneath.
Read the full FAQ —
05

Where CAN bus is used

CAN started in cars but now runs anywhere several controllers need to share data reliably over modest distances. Common places to find it include:

  • //
    Vehicles. Engine, braking, body and infotainment controllers, linked by several CAN networks through a gateway. A modern car can have dozens of ECUs on CAN.
  • //
    Trucks and off-highway machines. J1939 networks on tractors, excavators, refuse trucks and buses, read by telematics and on-board computers.
  • //
    Industrial machinery. CANopen links drives, encoders, sensors and controllers on packaging machines, lifts and mobile robots.
  • //
    Remote and outdoor equipment. Weather stations, battery systems and solar installations use CAN to connect sensors and controllers in a cabinet.
06

Adding CAN to an industrial computer

A computer joins a CAN network through a CAN controller and transceiver, either built onto the board or added as a module. Many in-vehicle computers include isolated CAN ports alongside their ignition control, so they can log vehicle data and shut down cleanly with the engine. Where a computer has no CAN port, our CAN bus I/O modules add it, from USB adapters with J1939 or CANopen firmware to rugged mPCIe cards and isolated PC/104 modules.

Isolation matters on vehicles and machines, where ground potentials differ between the computer and the equipment it connects to. For a static machine that also uses serial devices, our comparison of RS-232 and RS-485 covers the serial side, and our industrial mini PCs suit cabinet installations that need CAN, COM and digital I/O on one system.

07

Quick answers on CAN bus

CAN bus: common questions

What does CAN bus stand for?

Controller Area Network. “Bus” describes the wiring: every controller connects to the same shared pair of wires, rather than to each other point to point.

Is CAN bus the same as OBD-II?

No. CAN is the network. OBD-II is a diagnostic standard that defines the 16-pin connector and the requests a scan tool can make. On most cars built since 2008, OBD-II messages travel over CAN, which is why the two are often confused.

How can I tell if my vehicle uses CAN bus?

Check the OBD-II socket. If pins 6 and 14 are populated, the vehicle almost certainly uses CAN for diagnostics. US cars from the 2008 model year onwards must use it, and most trucks and machines with J1939 do too.

How fast is CAN bus?

Up to 1 Mbit/s for classical CAN. Most vehicle and machine networks run at 250 or 500 kbit/s to allow longer cables. CAN FD speeds the data phase up to around 5 Mbit/s and CAN XL to around 20 Mbit/s.

Is CAN bus obsolete?

No. Automotive Ethernet now carries camera and high-bandwidth data, but CAN, CAN FD and CAN XL remain the standard for control messages in vehicles and machinery, because they are simple, deterministic and inexpensive to implement.

We fit CAN ports and modules to industrial and in-vehicle computers as standard, install the drivers and test each interface before the system ships. Tell us the protocol, bit rate and connector on your network, and we will specify the interface to match.