CAN bus fundamentals

CAN bus explained: nodes, frames and how it works

A plain-English guide to the network behind almost every modern vehicle and machine. What it is, how devices share one pair of wires, and how they take turns without a referee.

9 min read2 demosUpdated 2026
2 wires
shared by every node
1980s
created by Bosch
No central hub
every node is equal
Priority
decides who speaks
The short answer

CAN bus is a way for the electronic units inside a vehicle or machine to talk to each other over a single shared pair of wires. Instead of running a separate cable between every pair of devices, every device taps the same two wires and takes turns to speak. There is no central computer in charge. Each unit listens to everything, picks out the messages it cares about, and speaks when the bus is free. That simple idea is why one network can tie together an entire vehicle with very little wiring.

CAN bus in one table
TraitWhat it meansWhy it matters
Two-wire busAll devices share CAN High and CAN LowFar less wiring than point to point
Multi-masterAny node can start a message when the bus is idleNo single point of failure
Message-basedMessages carry an identifier, not a destinationOne message can inform many nodes
Priority-drivenLower identifier wins access to the busUrgent messages are never delayed
The reason it was invented

Why CAN exists

As vehicles gained electronics in the 1980s, the wiring needed to connect every module to every other module grew out of control. Bosch developed the Controller Area Network to replace that tangle with one shared bus, cutting both the weight of the harness and the number of connections that could fail.

The idea proved so robust that it spread far beyond cars. Today you find CAN in places that demand reliable, real-time communication between electronic systems, including vehicle diagnostics, fleet telematics, ECU calibration and flashing, medical equipment, and agricultural and off-highway machinery. Wherever sensors and controllers must coordinate in a noisy environment, CAN is a common choice.

The physical bus

Nodes, and the two wires they share

Every device on the network is called a node. A node is anything that can send, receive or listen on the bus: an engine control unit, an anti-lock braking controller, a sensor, an actuator or a data logger. All nodes connect in parallel to the same two signal wires, named CAN High and CAN Low.

Those two wires carry a differential signal, which means the same information is sent as opposite voltage movements on each wire. When CAN High rises, CAN Low falls by the same amount. Each node reads the difference between the two, not their absolute level, so any electrical noise that hits both wires equally cancels out. That is what makes CAN so dependable in a vehicle or a factory.

3.5 V 2.5 V 1.5 V CAN High CAN Low 2 V recessive (1) dominant (0) recessive (1)
At rest both wires sit at 2.5 V, a recessive 1. A dominant 0 pushes them apart to a 2 V difference. Nodes read the gap, so shared noise cancels.

To keep the signal clean, a 120 ohm resistor sits at each end of the bus. These terminators absorb the signal as it reaches the ends and stop it reflecting back down the wires, which would otherwise corrupt the data, especially at higher speeds.

There is one more thing worth understanding about the bus. A bit on CAN comes in two flavours: recessive, which is the resting state, and dominant. If even one node drives a dominant bit while others are recessive, the whole bus goes dominant. The bus always follows the dominant. Try it below.

Try it: the shared bus is wired so dominant always wins

Each node can either rest at recessive (1) or drive a dominant (0). Tap any node to change what it is driving and watch the bus. The bus reads 1 only when every node is recessive.

This is the wired-AND behaviour of the CAN bus. A dominant bit, written as 0, always overrides a recessive bit, written as 1. It is the rule that makes the next part possible.

How addressing works

Messages, not addresses

CAN does not send a message to a particular device. Every message carries an identifier that describes what the message is, for example engine speed, rather than who it is for. The message is broadcast to the whole bus, and every node hears it.

Each node then decides for itself whether it cares. It checks the identifier, and if the message is relevant it reads the data and acts on it, perhaps storing the latest reading, switching on a fan, or preparing a reply. If the identifier is not relevant, the node simply ignores the message. Because information is shared rather than addressed, one reading can update many nodes at once, and adding a new node does not mean rewiring the others.

Engine ECU sends 0x1A0 broadcast Dashboard ID not relevant, ignores Data logger ID matches, reads and stores Cooling ECU reads it, prepares a reply
Every node hears every message. Each one checks the identifier and decides whether to act or ignore it.
Avoiding collisions

How nodes take turns on one wire

If every node shares one bus and any of them can start talking, what happens when two begin at the same instant? On most networks that would be a collision and both messages would be lost. CAN avoids this with a clever process called arbitration, and it never loses a message or wastes a moment.

When nodes start together, they transmit their identifiers bit by bit, most significant bit first, while listening to the bus at the same time. Remember that a dominant 0 always beats a recessive 1. The moment a node sends a recessive 1 but hears a dominant 0 on the bus, it knows another node has a higher priority, so it quietly stops and waits. The node with the lowest identifier value is never overruled, so it wins and keeps transmitting without interruption.

The lowest identifier wins, and the loser simply tries again later.

This means a lower identifier is a higher priority. It also means no time is wasted: the winning message carries straight on, and the nodes that backed off retransmit as soon as the bus is free. Step through it below with three nodes.

Try it: watch arbitration decide who wins

Three nodes start transmitting their 11-bit identifiers at once. Step through bit by bit. A node that sends a 1 but sees the bus at 0 has lost and drops out. The last one standing wins the bus. Edit the IDs to try your own.

Press Step to send the first bit.

Identifiers shown are 11-bit standard CAN IDs in hex. Give each node a different ID. Two nodes with the same ID is a fault on a real bus.

Plugging in

Connecting to a CAN bus

There is no single CAN connector. The physical interface depends on the application, and the same two signals, CAN High and CAN Low, appear on very different plugs. A few of the most common are below.

OBD-II

The 16-pin port for automotive diagnostics, found under the dashboard.

Round 5-pin

Rugged circular connectors used in heavy-duty and off-highway vehicles.

M12

Threaded industrial connectors built for automation and harsh sites.

JST

Small board connectors for compact electronics like drones and 3D printers.

This is one reason development and diagnostic tools are built to interface directly with CAN: with the right adapter, a logger can tap any of these and capture real-time data without disturbing the network.

In one line

One shared pair of wires, messages by priority, no central boss. That is the whole idea behind CAN bus.

Common questions

CAN bus FAQ

What is a CAN bus in simple terms?

It is a shared two-wire network that lets the electronic units in a vehicle or machine exchange messages without a central computer. Every unit connects to the same pair of wires and takes turns to communicate.

What is a node in CAN?

A node is any device on the bus that can send, receive or listen to messages. Engine control units, sensors, actuators and data loggers are all nodes. They all connect in parallel to the same two wires.

What are CAN High and CAN Low?

They are the two signal wires of the bus. They carry the same information as opposite voltage movements, a differential signal. Nodes read the difference between the two, which makes the system highly resistant to electrical noise.

How does CAN decide which message goes first?

Through arbitration. Nodes send their message identifiers bit by bit while listening to the bus. A dominant 0 always beats a recessive 1, so the message with the lowest identifier wins and the others wait. Lower identifier means higher priority.

Why are there 120 ohm resistors on a CAN bus?

They are terminators, one at each end of the bus. They absorb the signal at the ends and prevent reflections that would otherwise corrupt data, particularly at higher bus speeds.

Does every device get every message?

Yes. CAN broadcasts every message to the whole bus, and every node receives it. Each node checks the identifier and only acts on the messages relevant to it, ignoring the rest.

Written by the engineering team at Influx Technology. For deeper detail, see our guides to CAN frames and to baud rate and bus load.

Capturing the bus

Record any CAN bus, without disturbing it

The data loggers from Influx Technology, including the REXGEN and REBEL ranges, connect to a CAN bus and capture every message in real time, non-intrusively. REXDESK configures the logger and decodes the traffic into engineering values for analysis.