Where CAN bus termination resistors go, how to test them with a multimeter, and how to wire a CAN hub without long stubs. With diagrams and fixes.
Most CAN bus problems in a car aren't caused by a faulty ECU or a broken gauge. They come down to two 120Ω resistors: one is missing, there's one too many, or one is in the wrong place. Add a CAN hub to the install and it gets easier still to get wrong, because a hub hides where the bus actually ends.
This guide covers what CAN termination does, where the resistors should go, how to check them with a multimeter in two minutes, and how to wire a CAN hub so you don't end up with long branches that corrupt the data. It applies to any high-speed CAN bus (CANbus): Haltech, Link, MaxxECU, Emtron, MoTeC, Ecumaster, PDMs, wideband controllers, dashes, keypads and gauges.
A CAN bus is a twisted pair of wires, CAN High and CAN Low, that every device on the network shares. A device sends a bit by pushing the two wires apart (a "dominant" bit) or letting them fall back together (a "recessive" bit). The termination resistors do two jobs.
At CAN speeds, the wiring behaves as a transmission line. Twisted pair has a characteristic impedance of roughly 120Ω, so a signal reaching an end of the cable that isn't terminated has nowhere to go and bounces back, like a wave hitting a wall. That echo lands on top of the next bits and scrambles them. A 120Ω resistor at each end matches the cable, so the signal is absorbed instead of reflected.
This one is often missed. CAN transceivers drive the wires apart for a dominant bit, but nothing actively drives them back together. It's the termination resistors that discharge the bus to the recessive state. With too little termination, every dominant-to-recessive edge is slow and lazy, and at 500kbit/s or 1Mbit/s the receivers start reading bits wrong.
That's why "my bus is only a metre long, so I don't need termination" doesn't hold up. Even a very short bus needs its resistors.
The two resistors are in parallel across CAN High and CAN Low, so together they make 60Ω. The transceivers in every device are designed to drive that load.
The ideal CAN bus is a single line, the backbone (also called the trunk), with a resistor at each end and every other device connected by a short branch:
[120Ω] [120Ω]
ECU ════════╤═══════════════╤═══════════════╤════════ Dash / Gauge
│ │ │
Wideband Keypad PDM
═══ backbone (terminated at both ends)
│ stubs: keep each one short, ideally under 30cm
The rules that follow from it:
The ECU is very often one end of the bus, which is why most ECUs have termination built in. But it isn't automatically the end. If the ECU sits in the middle of the car with devices running off in both directions, it should not be terminated, and the resistors belong at the far device in each direction.
A stub is any piece of wire that leaves the backbone to reach a device, and isn't terminated. Signals travel down the stub, reflect off the device at the end and come back onto the bus. On a short stub, that reflection comes back so quickly that it's lost inside the edge of the bit and does no harm. On a long stub, it arrives later and lands in the part of the bit where the receivers are sampling.
ISO 11898, the high-speed CAN standard, recommends stubs no longer than 0.3m (30cm) at 1Mbit/s. Lower bit rates tolerate a bit more, but 30cm is the safe target for any car install, and many motorsport ECUs and their accessories run at 1Mbit/s anyway. Keep the total of all the stub lengths down too: one long stub does more damage than several short ones, but they add up.
An unterminated device on the end of a 2m tail is the classic mistake. It might work on the bench and then drop out once it's in the car with the engine running.
A CAN hub (a CAN splitter or distribution block) is a convenient way to connect several devices: one plug in from the ECU, several plugs out. Electrically, though, a hub is just a splice. All its ports are wired together inside. It doesn't repeat or regenerate the signal, and it doesn't make the bus a "star network".
That matters, because every port you use on a hub adds a branch. The cable from the hub to each device is a stub unless that device is an end of the bus and terminated. A hub with four devices on 1.5m leads isn't a tidy network: it's one backbone with several long stubs hanging off one point.
With the ECU terminated at one end, the bus runs ECU → hub, then out along one branch to the other end. You get to choose which branch that is, and it should be the longest one. Terminate the device at the end of the longest branch, and keep every other branch from the hub short, ideally under 30cm.
GOOD: the longest branch is terminated
┌── 20cm ──── Keypad
[120Ω] ECU ─────── 2.5m ─────── HUB ┼── 15cm ──── Wideband controller
└── 1.8m ──── Dash / Gauge [120Ω]
Backbone: ECU → hub → gauge (terminated at both ends)
Stubs: keypad 20cm, wideband 15cm
Terminate a short branch instead and the long one becomes the stub:
BAD: a short branch is terminated, leaving a long stub
┌── 20cm ──── Keypad [120Ω]
[120Ω] ECU ─────── 2.5m ─────── HUB ┼── 15cm ──── Wideband controller
└── 1.8m ──── Dash / Gauge ← 1.8m stub
The resistance still reads 60Ω, but a 1.8m tail is reflecting onto the bus.
This is the trap: both layouts measure a perfect 60Ω. A multimeter tells you how many resistors there are, not where they are. Only the wiring tells you that.
Some hubs have a 120Ω resistor built in, or come with a terminating plug for a spare port. Terminating at the hub makes the hub the end of the bus, which means every branch from the hub is a stub. That's fine if all the devices are mounted close to the hub on short leads. It's a problem if any of them is a metre or more away. In that case, leave the hub's terminator out and terminate the device on the longest branch instead.
Check your hub's instructions or measure it. A hub with nothing plugged in should read open circuit between CAN High and CAN Low. If it reads 120Ω, it has a terminator in it.
The backbone can only have two ends, so only two long runs can be "inside" the bus. If you have two long branches and the ECU is on a short one, make the two long branches the ends:
ECU near the hub, two devices far away
┌── 2.0m ──── Dash [120Ω]
ECU ── 25cm ──── HUB ─┤
(termination OFF) └── 1.5m ──── PDM [120Ω]
Backbone: dash → hub → PDM. The ECU is now the stub.
If you have three or more long branches, no choice of resistors will fix it. Rework the wiring instead:
This is the quickest and most useful CAN test you can do, and it needs nothing more than a cheap multimeter.
Note: this test usually doesn't work with software-controlled termination. Many modern devices, including KrispyGauge and a lot of ECUs, PDMs and dashes, switch their termination resistor on and off in software rather than with a jumper or a fixed resistor. The resistor is connected by an electronic switch that only closes while the device is powered, so with everything off the meter can't see it. A resistor switched on in software can read as missing, and the meter shows 120Ω or open circuit on a bus that's actually terminated correctly. Measuring with the power on doesn't fix it either, because resistance readings on a live bus aren't reliable. If any of your devices use software-controlled termination, this step can be misleading. Check the termination setting in each device's software instead, and use the meter only to count the fixed resistors.
What the reading means:
To find which device has a resistor you didn't expect, unplug devices one at a time and watch the reading change. The one that moves it from 40Ω to 60Ω is your culprit.
Remember the limitation from the hub section: 60Ω proves the number of resistors is right, not that they're at the right ends. Check the layout against the wiring as well.
NO CAN SIGNAL, or readings that freezeIf you have a KrispyGauge on the bus, KrispyScan shows the live CAN traffic in your browser. A bus with healthy termination shows steady, regular frames from every device. Gaps, missing IDs or frames that come and go point straight back at wiring or termination.
A car's diagnostic CAN bus is already terminated at both ends by the factory. When you plug into the OBD2 port, never add termination. Your device is a stub on the car's bus, so keep the lead from the OBD2 plug to the device as short as is practical, and avoid long extension cables. See OBD2 setup.
If you're adding a gauge or controller to a bus that already works, measure first. If it reads 60Ω, splice the new device in close to the backbone with termination off. Only if you're extending the bus past the old end do you move the resistor: off at the old end, on at the new one.
Daisy-chain them and terminate only the last one in the chain. Every gauge in the middle has termination off. More on this in running multiple KrispyGauges.
120Ω is the standard value, and a normal 1% or 5% resistor is fine. What matters is that the two together come to roughly 60Ω. Don't substitute a single 60Ω resistor at one end: it gets the meter reading right but leaves the other end unterminated.
No. Both resistors in one place gives the right reading but leaves the far ends of the cable unterminated, so they reflect. The resistors belong at the physical ends of the backbone.
Some devices use two 60Ω resistors in series with a small capacitor from the midpoint to ground, instead of a single 120Ω. It filters common-mode noise and still measures 120Ω across CAN High and CAN Low, so it counts as one terminator when you're adding them up.
No. The current through it is tiny, and a standard 1/4W resistor is more than enough.
Yes. A short bus at low load can limp along with one resistor, or with three, and then fail when it's hot, when the engine is making the most noise, or when you add one more device. A misbehaving CAN bus at the wrong moment can mean a lost keypad command, a missing warning or a dash that freezes. Getting the termination right takes five minutes.
Every KrispyGauge has a 120Ω termination resistor built in, which you switch on or off in the Web UI. Turn it on only if the gauge is an end of the bus. The KrispyGauge termination guide goes through each install.
Still chasing a CAN fault? Email [email protected] with a photo or sketch of your wiring and your multimeter reading, or ask in the KrispyGauge Tips & Tricks Facebook group.