Viewing Decoded Signals

Raw hex bytes only tell you so much. Load a database and CANoli decodes each message into named signals with real engineering values and units.

Loading a database

A database describes which messages live on the bus and how to interpret their bytes. CANoli reads two formats:

  • DBC (.dbc) — the Vector database format used across the industry.
  • SYM (.sym) — the PEAK Systems symbol format.

To load one, use File > Open Database, or open the Database panel and click Open…. Pick your .dbc or .sym file. See Working with Databases to create or edit one from scratch.

Signals in the Trace window

Once a database is loaded, return to the Trace window. Messages the database recognizes now show their Name and gain a disclosure triangle. Expand a message to reveal its signals as child rows:

  • The signal name appears in the Name column.
  • The decoded value appears in the Data column — a number with its unit (for example, 42.5 mph) or, for enumerated signals, the text label with its raw number (for example, Off (0)).

Values update live as new frames arrive, so you can watch a signal change in real time.

A Trace row expanded to show its decoded signals with engineering units and running minimum and maximum

What gets decoded

Each signal in the database carries everything CANoli needs to turn bits into a value:

  • Start bit and bit length — where the signal lives in the payload.
  • Byte order — little-endian (Intel) or big-endian (Motorola).
  • Value type — unsigned, signed, or float.
  • Factor and offset — the linear scaling applied to the raw value (value = raw * factor + offset).
  • Unit — shown next to the value.
  • Value table / enum — maps raw numbers to text labels.

If a message isn’t in the database, it still appears in the trace by ID — you just won’t get named signals until you describe it. The AI Auto-Decode feature can help reverse-engineer unknown IDs.

Decoding elsewhere

Decoded signals also feed the rest of CANoli: they’re what you chart over time, and they’re available to an AI agent through the MCP decode_frame and get_message_info tools.

Next: Transmitting Messages.