Using Your Car’s Controller Area Network (CAN)
I want to preface this article by saying that I am NOT a Controller Area Network (CAN) or CAN Bus guru. But knowing at least some of the aspects of CAN has become very important when it comes to getting data off of cars and I have spent quite a bit of time learning what I can.
Unless you have a vintage race car, your data/system is most likely connected to your car’s CANbus. All the modern cars use CAN and there are usually multiple CANbuses. There can be separate ECUs and CAN Buses for the engine, the drivetrain, the internal controls, etc. And if you are lucky, you probably just had to plug your data/video system in to the OBD port or another connector in order for your system to read the CAN messages. RaceLogic, AIM, MoTeC, Race Navigator, as well as other data/video system manufacturers provide many CAN protocols which can simply be loaded into the device’s configuration and this is what allows their systems to be close to plug and play. I want everything to be as close to plug and play as possible, so I usually configure the data/video systems with the correct CAN protocol before I ship them. But wonder if the data/video system doesn’t have a CAN protocol for your car or wonder if you want to get different information off of your car’s CAN? This is when you need to learn more about CAN.
There is lots of information out there about CAN and rather than try to explain it myself, I’m going to highlight some courses/videos/people that have helped me. Here is a link to an article that explains CAN: Introduction to CAN (Controller Area Network) – Technical Articles. Also, HP Academy has a CAN Bus course that is pretty good, especially if you don’t know much about CAN. CAN Bus Communications Decoded. There are plenty of other videos/articles as well but I’m going to focus on some of the things that have been the most valuable to me.
One of the main things to know is that there are two CAN lines that are always a twisted pair. CAN High or + and CAN Low or -. If you have a CAN connection but you aren’t receiving any CAN messages, then the voltage of these lines is one of the first things to check. You need to turn the car and the car’s ignition on to get the voltages of each wire. If you don’t turn on the ignition then the voltage of each CAN line will be the same. CAN High will always have the highest voltage and that usually ranges between 3 to 5 volts. CAN Low is always has a lower voltage than the CAN High line and I have found that it is usually about half of the CAN High voltage. Don’t be surprised if the voltages fluctuate a little bit. This just means that CAN messages are being sent across the wires.
If you have identified the controller area network High and Low lines and you are still not getting CAN messages, then the next thing to check is the baud rate – the speed at which the messages are being sent. I think speed (baud rate) of the CAN buses that I have connected to are either 500 kbps or 1,000 (1M) kbps but the baud rate can be different than these. It isn’t going to hurt anything to try a different baud rate or even have your CAN wires switched because you are only listening to the CAN traffic and not sending messages across it.
Car manufactures consider their controller area network protocols as proprietary and that is why these protocols aren’t readily available. This is why reverse engineering or deciphering the CAN messages is so important. If you want to see the messages coming across the CAN Bus, then there are tools that you can use to do that, and this is required if you want to reverse engineer CAN messages so that you can write your own CAN protocol. There are all sorts of tools that can be used for reverse engineering and many of them require programming using Python and circuit boards such as the Arduino. But I’m not a programmer and I want to use tools that don’t require programming.
One of the tools that I have used is the Peak PCAN View Software with their PCAN-USB device, found at PC Software: PEAK-System and Amazon.com: CAN USB Adapter (GC-CAN-USB) : Electronics. However, I recently purchased the CSS Electronics CL1000 CL1000 documentation — CL1000 Docs FW 05.86 documentation, which I use with Savvy CAN software CAN Bus Software Tools – 100% Free & Open Source [FOSS] – CSS Electronics. I have had some success with reverse engineering CAN messages, and I will say that Savvy CAN made this process much easier. I found out about Savvy CAN and the CL1000 by watching Dan Dulac’s videos on YouTube. He goes through the process of reverse engineering some of the CAN messages from a Lamborghini Huracan engine. This link is to Part 1 of 3 in the series. PART-1: I Reverse Engineer the OEM CAN BUS on my R8/Huracan Powertrain! One of the great things about the CL1000 is that it starts recording the CAN messages immediately and it can also be used as a USB drive so you can pull those logs off of the device. But you can also log messages with the PCAN View software and if you happen to have a VBox HD2, then the scene can be set to log the CAN messages.
At this point I need to mention Mitch Minton of Minton Performance. He is the controlled area network guru that I go to when I have questions about CAN. And since I mentioned the VBox HD2, I have sent Mitch the HD2 ascii log files from cars when I wanted certain CAN messages reverse engineered. For example, Mitch was able to identify the CAN message that states when traction control has been activated in a Ferrari Challenge car and I was able to incorporate that in the VBox HD2 scene configuration. He even makes and sells tools that can be very helpful. For example, he now sells a CAN Triple device that can combine three different CAN Buses into one even if the three different CAN Buses are at different baud rates. This can be very useful if you want to combine different devices that are sending CAN messages so that you can read them all at the same time by a data/video system. For example, this would give you the ability to add a TPMS system that is sending messages at a 1M baud rate with a car’s ECU that is sending messages at a 500K baud rate. You would need to combine the CAN protocols of these two systems together and load that file into the configuration of your data/video equipment in for this to work.
Although some software companies have their own proprietary CAN protocol formats, many times you will hear of CAN protocols being referred to as “dbc files” because they have a .dbc extension. There are several different ways to open dbc files, including with Savvy CAN but I like to use Kvaser Database Editor 3. Single Download – Kvaser – Advanced CAN Solutions: Mitch turned me on to this software and I have been able to combine different dbc files with it as well as write my own CAN messages and save them as dbc files that I could then upload into data/video equipment.
There is so much about CAN and CAN messages that I haven’t addressed and to be honest, I’m still learning a lot of it myself. But hopefully this article can help you get started with understanding CAN and how knowing about it can help you get even more out of your data/video equipment.
Good luck in your races!