What are DBC files
A DBC file describes a car’s network traffic, what modules are on it, and their messages and signals.
Example
BO_ 342 STEERING_SENSORS: 6 EPS
SG_ STEER_ANGLE : 7|16@0- (-0.1,0) [-500|500] “deg” EON
SG_ STEER_ANGLE_RATE : 23|16@0- (1,0) [-3000|3000] “deg/s” EON
SG_ COUNTER : 45|2@0+ (1,0) [0|3] “” EON
SG_ CHECKSUM : 43|4@0+ (1,0) [0|3] “” EON
Here is what it means:
BO_ 342 STEERING_SENSORS: 6 EPS
BO_342 A group of messages and their id (ID is in decimal numbering). 342 is equivalent to 0x0156 hexadecimal format.
STEERING SENSORS Describes the group of signals. All of the signals for one ID come from a single ECU so all messages are typically related in some way.
6 Amount of bytes the message contains. There is a maximum of 8.
EPS This is the an abbreviation of the module that is sending the message. In this case, it is the electrical power steering controller.
SG_ STEER_ANGLE : 7|16@0- (-0.1,0) [-500|500] “deg” EON
- SG_ STEER_ANGLE A description of a signal.
- 7|16: This signal starts at bit position 7, and the size is 16 bits. 16 bits is common for a steering angle. Here is what this looks like in cabana’s bit view:
Refer to numbering below to understand positioning:
- @0-: 0 indicates that the signal is big-endian (it would be 1 for little-endian), and signed (+ indicates an unsigned value). Honda values all have big endianness.
(-0.1,0): A number to scale by. (Multiply by this value)
- [-500|500]: Min and Max, 0|0 is unset.
- “deg”: Units, in this case, it is degrees.
The example above describes the steering sensor message, an example of one frame is shown below:
Hex
0x156–00 06 00 00 07 2d
Binary
0000000 00000110 00000000 00000000 00000111 00101101
Displayed in cabana
On it own, it is not obvious that this value contains the steering value, but using comma.ai cabana’s graphing tool, we can see:
Once you track down one signal, others are easier to find, like the left blinker, note the bit value changing to 1 under the cursor:
The tool shown in the gifs is called cabana. You can try a demo drive here.
You can easily create your own using a panda.