Tire CAN (Controller Area Network) has become the standard for communication between electronic control units (ECUs) in modern vehicles. Without it, it is impossible to imagine the operation of the engine, transmission, security systems and even multimedia systems. However, for most car owners and even some craftsmen CAN bus remains a βblack boxβ: something mystical that can only be diagnosed at a service station with expensive equipment.
In practice, working with CAN bus accessible to anyone who is willing to understand the basics of electronics and use inexpensive tools. In this article we will look at how to independently diagnose bus faults and connect additional devices (for example, Android Auto or ELM327-adapters), as well as repair breaks and short circuits. You will find out what PID codes use for reading data, how to solder connectors correctly and why sometimes it is enough to simply clean the contacts from oxidation.
We will pay special attention typical errors when working with the CAN bus, which lead to failure of the ECU or triggering a malfunction alarm. For example, why you canβt connect an oscilloscope directly to the line CAN-High without a voltage divider, or how improper grounding can βclogβ the bus with noise. The material will be useful to both beginners and experienced auto electricians who want to systematize their knowledge.
What is a CAN bus and how does it work in a car?
CAN (Controller Area Network) is a data exchange protocol between electronic devices in a car, developed by Bosch in the 1980s. Its main advantage is fault tolerance: even if one of the nodes fails, the others will continue to communicate. Modern cars may have several CAN buses:
- π High-speed CAN (500 kbit/s) - connects critical systems: engine, gearbox, ABS, airbags.
- π» Low-speed CAN (125 kbit/s) - used for auxiliary devices: climate control, audio system, power windows.
- π Single-wire CAN (33.3 kbit/s) - found in budget models for communication with door units or the dashboard.
Data via CAN is transmitted in the form CAN frames, which contain an identifier (for example, 0x7E8 for diagnostic requests) and payload (up to 8 bytes). Each ECU βlistensβ to the bus and responds only to those frames that are addressed to it. For example, the engine control unit (ECU) ignores messages from the radio, but processes data from the oxygen sensor.
Physically, the CAN bus is twisted pair of wires:
CAN-High(usually orange or yellow wire) - carrier line with a voltage of ~3.5V at rest.CAN-Low(usually orange-black or green) - inverse line with a voltage of ~1.5V.
The voltage difference between them at rest is ~2V, and during data transfer - up to 3.5V.
β οΈ Attention: If onCAN-HighorCAN-LowA voltage of 0V or 12V is constantly present - this is a sign of a break or short circuit. You can diagnose such faults with a multimeter, but for an accurate analysis you will need an oscilloscope.
Tools for working with the CAN bus: what you need to have on hand
To diagnose and repair a CAN bus, it is not necessary to buy professional equipment for tens of thousands of rubles. A basic set of tools is enough, some of which any car owner already has:
| Tool | Purpose | Approximate price |
|---|---|---|
| Multimeter (with resistance and voltage measurement mode) | Checking voltages CAN-High/CAN-Low, search for breaks |
from 500 β½ |
| ELM327 adapter (version 1.5 with CAN support) | Reading errors, monitoring parameters in real time via smartphone | from 800 β½ |
| Oscilloscope (eg DSO138 or Hantek 6022BE) | Waveform analysis, search for interference and incorrect voltage levels | from 3,000 β½ |
| Soldering iron (power 40β60 W) + solder + flux | Repairing breaks, replacing connectors, connecting additional devices | from 1,000 β½ |
| Heat shrink tubing or electrical tape | Insulation of connections after soldering | from 100 β½ |
Also useful for deep diagnostics CAN analyzer (for example, USBCAN or PCAN-USB), but its purchase is justified only for professionals. Most problems can be solved using ELM327 and free apps like Torque Pro or FORScan.
If you plan to connect additional equipment (for example, Android Auto or CarPC), will be required CAN transceiver (for example, MCP2515 or SN65HVD230). These chips convert the logic levels of the microcontroller into a differential CAN bus signal. Without them, connection to the bus is impossible - the risk of damage to the ECU is too high.
β οΈ Attention: Never connect devices with 5V logic voltage (for example, Arduino without a level converter).CAN transceivers operate with a voltage of 3.3V, and a 5V supply can damage the control units!
CAN bus diagnostics: troubleshooting step by step
Symptoms of a CAN bus malfunction are often disguised as other problems: for example, the engine may stall and errors may appear on the dashboard ABS and ESP. The first thing to do is check the integrity of the tire itself. Here is a step-by-step algorithm:
- Checking voltages
CAN-HighandCAN-Low:- π§ Turn off the ignition, but do not remove the key (or turn it to
ACC). - π§ Connect the multimeter in constant voltage mode to the contacts
CAN-HighandCAN-Low(for example, in the connector OBD-II, pins 6 and 14). - π§ Normal values: ~2.5V per
CAN-Highand ~2.5V onCAN-Low(difference ~0V at rest).
- π§ Turn off the ignition, but do not remove the key (or turn it to
- Checking the resistance between
CAN-HighandCAN-Low:- π§ Switch the multimeter to resistance measurement mode.
- π§ Normal resistance: 60 ohm (due to terminal resistors at the ends of the bus).
- π§ If the resistance tends to infinity, the tire breaks. If close to 0 Ohm, there is a short circuit.
- π§ Disconnect each ECU one by one (for example, an engine control unit) and measure the resistance again.
- π§ If the resistance rises sharply to 120 Ohms, the terminal resistor is installed in a disconnected unit.
Check the voltage at CAN-High and CAN-Low|Measure the resistance between CAN-High and CAN-Low|Locate the terminal resistors (60 Ohm)|Check the integrity of the wires visually-->
If the multimeter shows anomalies, the next step is to visually inspect the wiring. Most often problems arise:
- π In the ECU connectors (oxidation of contacts or their physical damage).
- π In places where harnesses cross thresholds or doors (rubbing of insulation).
- π₯ Near heat sources (for example, near the exhaust manifold).
For accurate diagnostics, use an oscilloscope. A normal CAN signal looks like square pulses with clear fronts. If the screen shows falling edges, noise, or a constant level of 0V/12V, the bus is faulty.
Example of an oscillogram of a working CAN bus
Signals on a working bus CAN-High and CAN-Low mirrored: when one rises to ~3.5V, the other drops to ~1.5V. The pulse frequency depends on the bus speed (for example, 500 kbit/s for High-speed CAN). If the signals are out of sync or have steps, this is a sign of termination problems or damaged wiring.
Typical CAN bus faults and how to fix them
Most CAN bus problems boil down to five main faults. Let's look at their causes and repair methods:
| Malfunction | Reason | How to fix |
|---|---|---|
| Lack of communication between blocks | Break in CAN-High or CAN-Low, lack of terminal resistors |
Test the wires with a multimeter, check the resistors (there should be 120 Ohms at each end of the bus) |
Constant errors UXXXX (for example, U0100) |
Short circuit to ground or +12V, damage to the transceiver in one of the ECUs | Disable the blocks one by one until the error disappears - the culprit has been found. Replace the unit or transceiver |
| Interference on the bus (errors appear periodically) | Poor ECU grounding, close location of power wires | Check the ground of each block, shield the CAN wires or route them separately |
| Incorrect data (for example, the speedometer is lying) | Problems in a specific unit (for example, in the instrument cluster) or data corruption during transmission | Connect an oscilloscope and check the signal shape, replace the problematic unit |
| CAN bus is βcloggedβ with messages (lag in electronics operation) | One of the blocks βspamsβ the bus (for example, due to a firmware failure) | Disable the blocks one by one, update the firmware of the culprit or replace it |
One of the most insidious defects is damage to terminal resistors. They are installed on the two outermost blocks of the bus (usually ECU and body control unit BCM). If a resistor fails (due to a power surge, for example), the bus resistance drops and data begins to bounce around, creating noise. In this case, it is enough to replace the resistor with a similar one (nominal 120 Ohm, power 0.25β0.5 W).
Another common problem is contact oxidation in the connectors. For example, in OBD-II- the connector or on the ECU blocks. To clean, use contact spray (for example, CRC 2-26) and a soft brush. Do not use sandpaper - it will damage the gold-plated contacts!
If errors continue to appear after repairing the CAN bus, try resetting the adaptations in the control units. To do this, you can use diagnostic software (for example, ODIS for VW/Audi or ISTA for BMW). Resetting adaptations often solves problems with stuck errors.
Connecting additional equipment to the CAN bus
The CAN bus allows you to connect additional devices to the vehicle: from simple ELM327- adapters to full-fledged ones CarPC with data displayed on the screen. However, there are a few critical rules here:
- Never connect devices directly to
CAN-HighandCAN-Low!Use CAN transceiver (for example, MCP2515 + TJA1050). It converts the logic levels of your device into a differential CAN bus signal and protects the ECU from damage.
- Observe polarity.
Confused
CAN-HighandCAN-Lowwill not damage the tire, but the device will not work. In some cases (for example, when connecting to K-Line) this may damage the transceiver. - Don't break the termination.
If you connect a device to the middle of the bus (for example, through OBD-II), do not add terminal resistors. They should only be at the ends of the bus!
Connection diagram example Arduino with MCP2515 to CAN bus:
Car CAN bus MCP2515 Arduino
CAN-High ββββββββββββΊ CAN_H (pin 7)
CAN-Low ββββββββββββΊ CAN_L (pin 6)
GND ββββββββββββΊ GND
+12V ββββββββββββΊ +5V (via stabilizer)
To read data from the CAN bus you can use the library mcp2515 for Arduino. Example code to display frame IDs:
#include
#include
MCP2515 mcp2515(10); // CS on pin 10
void setup {
Serial.begin(9600);
mcp2515.reset;
mcp2515.setBitrate(CAN_500KBPS);
mcp2515.setNormalMode;
}
void loop {
struct can_frame canMsg;
if (mcp2515.readMessage(&canMsg) == MCP2515_OK) {
Serial.print("ID: 0x");
Serial.println(canMsg.can_id, HEX);
}
}
To connect multimedia systems (for example, Android Auto through CAN bus) often use ready-made modules like CAN-Bus Gateway. They convert bus signals into commands for the radio (for example, displaying speed or engine speed on the screen).
Connecting to the CAN bus without a transceiver or with incorrect termination may damage the control units. Always use electrically isolated circuits and check voltage levels before connecting!
CAN bus repair: soldering, twisting and proper insulation
If the diagnostics showed a break or short circuit in the CAN bus, you will have to repair the wiring. It is important to follow several rules here so as not to aggravate the problem:
- π₯ Don't use twists! The CAN bus operates at high speeds and any increase in resistance or inductance will result in errors. Only soldering.
- π§΅ Use stranded wire. Cross section of at least 0.35 mmΒ² (better 0.5 mmΒ²). Single-core wire breaks due to vibration.
- π‘οΈ Isolate each area being repaired. Optimally - heat-shrinkable tube with an adhesive layer. The electrical tape will come off over time.
- π Observe polarity.
CAN-Highmust go toCAN-High, andCAN-Low- toCAN-Low.
Step-by-step instructions for repairing a break:
- Find the break point (using a multimeter in dial mode or visually).
- Strip 10β15 mm of insulation from each end of the damaged wire.
- Twist the wires in parallel (not by winding!) and solder using flux.
- Apply heat shrink tubing so that it covers both the soldering area and 1-2 cm of insulation on each side. Heat the tube with a hairdryer.
- Check the resistance between
CAN-HighandCAN-Low- it should return to 60 ohms.
If the ECU connector is damaged, it can be restored using repair connectors (for example, from TE Connectivity). To do this:
- Carefully remove the damaged contact from the connector (use a thin screwdriver or a special extractor).
- Install a new contact and crimp it with a crimper.
- Check the reliability of the connection by pulling the wire - it should not come out of contact.
After repair, be sure to check the operation of the CAN bus using a diagnostic scanner. If errors remain, the transceiver in one of the ECUs may be damaged - in this case, the unit must be replaced.
CAN bus and safety: how not to damage the ECU
Working with the CAN bus requires caution: one wrong action can damage control units worth tens of thousands of rubles. Here are the key safety rules:
- β‘ Never connect power supplies to the CAN bus. Even a short-term contact with +12V
CAN-HighorCAN-Lowcan burn out transceivers in all ECUs. - π Use fuses. When soldering or connecting devices, always work through a 1-2A fuse in the power circuit.
- π‘ Do not connect the CAN bus directly to other interfaces. For example, RS-232 or USB have different voltage levels and may damage transceivers.
- π οΈ Disconnect the battery when soldering. Even if you work with the ignition off, voltage may remain in the circuits.
Particular care should be taken when working with airbag control units (SRS). Incorrect connection to their CAN bus may cause the squibs to fire! Before any manipulations with SRS required:
- Disconnect the battery and wait 10β15 minutes (the capacitances in the airbag circuits will be discharged).
- Do not touch the yellow connectors and wires - they lead to the squibs.
- Use only certified diagnostic tools (e.g. Launch X431 or Autel).
If you connect devices with their own power supply to the CAN bus (for example, CarPC), be sure to use galvanic isolation. This can be done using optocouplers (for example, PC817) or specialized modules (for example, ADuM1201). The decoupling will protect the ECU from power surges in your device.
Before connecting any device to the CAN bus, test it on a separate stand with a 12V power supply and an oscilloscope. This will help prevent damage to the vehicle's ECU.
Practical examples: diagnostics and repairs on real cars
Let's consider two cases of CAN bus malfunctions and their solutions using the example of popular car models.
Example 1: Volkswagen Golf 4 - error U0100 (loss of communication with engine ECU)
- Symptoms: The engine runs unstably and the dashboard lights up
Check Engine, the scanner shows an errorU0100. - Diagnostics:
- The multimeter showed resistance between
CAN-HighandCAN-Lowβ 120 Ohm (instead of 60 Ohm). - When the engine control unit is turned off (ECU) resistance became 60 Ohms.
- The multimeter showed resistance between
- Open block ECU (after disconnecting the battery).
- Find a 120 Ohm resistor on the board (usually next to the CAN connector).
- Replace it with a new one (power 0.5 W).
Example 2: Toyota Corolla E150 β speedometer and climate control do not work
- Symptoms: The speedometer shows 0 km/h, the climate control does not respond to commands, but the engine runs fine.
- Diagnostics:
- The oscilloscope showed strong interference on
CAN-Low. - When checking the harness under the driver's mat, a frayed wire was found
CAN-Low(short circuit to ground).
- The oscilloscope showed strong interference on
- Clean and solder the damaged section of the wire.
- Insulate with heat shrink tube.
- Secure the harness so that it does not rub against the body.
- Not all terminal resistors are in place (there should be two 120 Ohm ones at the ends of the bus).
- The transceiver in one of the ECUs is damaged (the unit or transceiver needs to be replaced).
- Adaptations in control units have not been reset (diagnostic software required).
In both cases, after repair, the errors were reset using a diagnostic scanner (VCDS for VW and Techstream for Toyota).
Frequently asked questions (FAQ)
Is it possible to connect a smartphone to the CAN bus via ELM327?
Yes, but only for reading data (for example, via Torque Pro). To record or control the ECU ELM327 not suitable - it does not support all the necessary protocols. For serious manipulations you need a professional scanner (for example, Launch X431).
What happens if you remove terminal resistors from the CAN bus?
The bus will no longer work correctly: signals will be reflected from the ends of the line, which will lead to interference and communication errors. In some cases, control units may completely lose communication with each other.
How to find a CAN bus diagram for your car?
Diagrams can be found in repair manuals (for example, Haynes or Autodata). Resources like WiringDiagrams24 or forums for a specific model. For most cars, the CAN bus circuit is standard: it is a twisted pair cable that passes through all the main ECUs.
Is it possible to extend the CAN bus if the wire length is not enough?
Theoretically it is possible, but in practice it is fraught with problems. The CAN bus is designed for a certain length and resistance. Extension may result in signal attenuation. If you need to move the control unit, it is better to use the original harness with the correct termination.
Why do errors remain after repairing the CAN bus?
Possible reasons:
Check the signal shape with an oscilloscope - it should be clear, without interference.