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:
16 bit value, starting at position 7 — 7|16

Refer to numbering below to understand positioning:

Big Endian
Little Endian
  • @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.
Example of big endian bit position numbering, the highlighted value would be 3|4@0+

(-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

Cabana makes it easy to visualize a DBC file

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:

Viewing car’s steering angle with DBC + Cabana

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:

Viewing steering angle and blinker with Cabana

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.