CAN · 5 min

CAN and DBC for a first conversion

Inverter, BMS, charger, and dash only talk if they agree on the same IDs and the same bit packing. A DBC is that map. Without it you have hex frames and no agreed meaning.

Inverter, BMS, charger, and dash only talk if they agree on the same IDs and the same bit packing. A DBC is that map. Without it you have hex frames and no agreed meaning.

This note is the format and the reader. It is not an OEM Tesla or Nissan map.

What a DBC is

A DBC is a plain-text CAN database. Vector’s CANdb++ made .dbc the de facto extension. There is no official public Vector specification. CSS Electronics and the community DBC-01 reference both say that.

BO_ is a message: decimal CAN ID, name, DLC in bytes, transmitter.

SG_ is a signal inside that message: start bit, length, byte order (@1 Intel / little-endian, @0 Motorola / big-endian), signed or unsigned, then (factor,offset), [min|max], unit, receivers.

Scale is physical = raw × factor + offset.

CSS Electronics has a worked J1939 EngineSpeed example: raw 0x1368 = 4968, factor 0.125, offset 0 → 621 rpm.

OEM encoding is application-specific. CSS: “It is up to each OEM to decide how to encode their sensor data.” Bring the file that matches your hardware.

The reader

https://evengineeringlab.com/toolbox/dbc

Load a .dbc or paste DBC text. It lists messages and signals. Paste one frame (CAN ID + data hex) and it decodes the matching signals.

It does not ship Tesla or Nissan IDs.

What people get stuck on

Without the manufacturer DBC you only see IDs and bits. A DIY Electric Car thread (https://www.diyelectriccar.com/threads/how-can-i-find-can-id-meaning-and-configuration-vcu.206345/) puts it: no DBC, no Throttle_value. Power one module at a time and terminate as required.

Every node on one bus has to be the same baud. You cannot mix speeds. Sevcon at 100 kbps vs a J1939 Curtis at 250 or 500 (https://www.diyelectriccar.com/threads/can-bus-communication.67836/) is a real first-build miss.

Termination is two 120 Ω ends, not a resistor on every box. All devices at 120 Ω “would bring complete havoc.” https://www.diyelectriccar.com/threads/can-bus-wiring-what-size-and-type.52631/ OpenInverter: expect about 60 Ω H–L; if nothing appears, check speed. https://openinverter.org/wiki/Getting_started_with_CAN_bus_and_an_Arduino_Uno

SavvyCAN is how people turn a log plus a .dbc into names. EVJ80 build (https://www.diyelectriccar.com/threads/the-electric-land-cruiser-evj80-nissan-leaf-resolve-ev.204875/page-17): File → DBC file manager → load. A CANable2 talks to SavvyCAN; Orion’s utility still wants Orion’s CANdapter. https://www.diyelectriccar.com/threads/canable2-adapter-orion-bms-2-windows-utility-savvycan.211133/ OpenInverter treats SavvyCAN as the free analysis tool. https://openinverter.org/wiki/Getting_started_with_CAN_bus

Sources

  • https://www.csselectronics.com/pages/can-dbc-file-database-intro — CSS Electronics
  • https://imatrixsys.com/tutorials/pages/DBC-01-syntax-and-encoding.html
  • Live tool: https://evengineeringlab.com/toolbox/dbc

OpenDBC is a community collection of reverse-engineered vehicle files. It is not a conversion wiring spec.