Consider this your 101 in car data! Note, this is not relevant for software connected cars (Smartcar or Tesla connections).
Here’s the tldr:
- Most data in a car (like what the tire pressure is or whether there is a check engine light) is communicated in a language called the CAN protocol: your car’s native language.
- Since the data is in a specific language, to understand the data you need a “dictionary” — this dictionary is called a DBC file. You use this to decode data.
- Each car speaks its own dialect, meaning you need a different dictionary for each car. Building these dictionaries takes time.
- With your DIMO Miner connected, you may see a little bit or a lot of data depending on how many of the data points we can decode. Every user will have a slightly different experience.
- We are working to support open efforts to decode more data points and improve the DIMO experience for each driver as part of our long term vision of building the best connected vehicle platform.
Your car’s OBD2 port
Nearly every car made in the last 30 years has an Onboard Diagnostics Port of the 2nd generation (OBD2). The purpose of the port is to interface with the Electronic Control Units (ECUs) of the car. Almost every part of the car has an ECU, basically the sensors and computers that do things like read tire pressure, inject fuel in the engine at the right times, or control gear shifting in the transmission. An ECU is like a little conductor who makes that specific part of the car work.
ECUs need to share data in order to make sure everything is working in sync. You can also get data from the sensors and ECUs to perform diagnosis, data analysis, and reporting on possible problems with the vehicle. Turns out, this is an insane amount of data.
Data from car sensors or ECUs is encoded by the CAN protocol — think of this as the native language of your car. The data is coordinated by the CAN bus, which is like the central post office in the car where data signals are exchanged. When you plug into an OBD2 port, the device you’re using is talking with the CAN bus to get the relevant data. Newer vehicles might have multiple CAN buses for different use cases.
For example, there is a sensor on the tires that reads tire pressure. That sensor might produce a message like “pressure of right front tire = 50 psi.” That data is passed to the CAN bus in a signal. Remember that the signal is in the car’s language (CAN protocol) so if you want to read that signal, you need a dictionary. That dictionary is in a format called DBC file.
Here’s the DIMO version of the graphic above:
This may seem simple, but it’s actually where things get just a little tricky…
Different Car, Different DBCs
While all cars use the CAN protocol as their native language, each car has its own dialect. These dialects are different enough that they need their own dictionary, or their own DBC file.
The DBC file (think dictionary) for a Toyota RAV4 is different from the DBC file from a Ford Mustang. There is some overlap between the cars made by each automaker, but there can even be slight differences in a car year to year or trim to trim due to changes in parts and components.
For example the 2022 RAV4 Hybrid has a different set of radar sensors (made by a different manufacturer) than the 2021 RAV4 Hybrid, meaning a different set of CAN signals are produced. If you want to read the data from these vehicles, you need to have the ability to have different DBC files for each.
This leads to a lot of complexity. DIMO has over 10,000 types of cars in our database (accounting for different years and trims). Most cars have 70+ ECUs and sensors, meaning there is a huge number of DBC files to figure out how to read if we want to maximize the data we get from each car. So how do we tackle this huge problem?
Open-Source DBC Decoding
Luckily, people have been hard at work decoding DBC files around the world. Some of those folks are already a part of the DIMO community. Generally, these are car hackers who want to understand their own vehicle and believe that information should be free and open: they’re helping push back against the monopoly of car data between dealerships and car makers.
The most prominent project is OpenDBC, started by comma.ai to facilitate DBC decoding for their after-market self-driving system (which is super cool). They have helped decode 100s of cars and made that DBC files available to others. Other companies and projects have made it their business to decode vehicles.
DIMO is already supporting DBC decoding efforts and will begin supporting others in a more prominent way via bounties and more. If you’re interested in helping to decode DBC files, please contact firstname.lastname@example.org and we can help integrate you with the existing community.
What does this all mean for DIMO?
Decoding DBCs is a task that requires the person or team to go one signal at a time. Each task requires physically being in the car, executing actions and analyzing data. All told it can take a long time to unlock all of the data from a car.
As a DIMO driver with your AutoPi connected, you may get a lot of decoded data or only a little, depending on the state of your vehicle decoding. Today the data fields in the DIMO Mobile app are standardized across vehicles, but in the future there will be a lot of variation in what users see in the app.
At the very least, with your DIMO Device installed you will see the: Location (GPS), Speed, Fuel Level, RPM, Fuel Type, etc. This data is standardized globally based on emissions laws. If you have ever been to a car emissions test, this is the data they use! Beyond this, we can’t make promises as to what data you will or see in the app, but know that we’re working really hard to make more data available. If you have experience with decoding vehicles or access to knowledge about which car decoder rings, please let us know!
Luckily, the state of decoding for your vehicle will not affect some other really exciting DIMO features coming in the future. You will still be able to:
- Track and share trips, including minting your road trip or performance drive as an NFT
- Mint your vehicle as an NFT
- Access apps and services building applications for DIMO.
And of course you will earn rewards regardless. In the future, we may explore higher rewards for vehicles with more data available.
We hope this serves as a good introduction to your AutoPi. For a much more detailed overview of the OBD2 port and how it works, check out this blog post from our partner AutoPi. If you would like to discuss, our Discord Server has a channel dedicated to hardware creatively called #🏠hardware which you can access via this link.