DBC decoding profile format (.dbcprof)
File format reference for CAN Commander DBC decoding profiles (.dbcprof).
Mirrored from CAN_Commander_FlipperZero/can_commander/README_DBC_CONFIG_FORMAT.md in the repository.
Purpose
.dbcprof is a CAN Commander custom profile format for storing a curated DBC subset on Flipper.
Each file stores:
- up to 16 signal definitions
- optional value mapping per signal (
raw -> label) up to 16 entries per signal
This is not a raw .dbc file. It is an app-native profile format.
Storage Location
- Directory:
apps_data/can_commander/dbc_profiles - Extension:
.dbcprof
File Header
Every file must start with:
Filetype: CANCommanderDbcProfile
Version: 1
If filetype/version do not match, load is rejected.
Top-Level Keys
name: user-facing profile namesignal_count: number of defined signals in this file (0..16)
Per-Signal Keys
Signals are 1-indexed: signal1_*, signal2_*, ... signalN_*.
Required/expected keys for each signal:
signalX_sid: signal id (0..65535, decimal)signalX_name: user-facing signal name shown in decode UI (text, optional but recommended)signalX_bus:can0,can1, orbothsignalX_id: CAN ID in hex (no0xprefix required)signalX_ext:0or1(11-bit vs 29-bit ID)signalX_start: start bit (0..63)signalX_len: bit length (1..64)signalX_order:intelormotorolasignalX_sign:u(unsigned) ors(signed)signalX_factor: float scaling factorsignalX_offset: float offsetsignalX_min: float minimum decoded rangesignalX_max: float maximum decoded rangesignalX_unit: unit text (short string, can be empty)
Value Mapping Keys
Optional per signal.
signalX_map_count: number of mappings for this signal (0..16)- For each mapping index
Y:signalX_mapY_raw: integer raw value (signed 64-bit supported)signalX_mapY_label: display label (text)
Example meaning:
raw=0 -> "Off"raw=1 -> "On"
Runtime Behavior
- Save source: app local DBC cache (not firmware list export parsing).
- Load behavior: replace-all in firmware (
dbc clear, then add all signals from file). - Decode UI mapping:
- if
sid/rawhas a map entry, UI shows mapped label as primary - raw/numeric value remains shown as secondary context
- if
Limits and Validation
- Max signals per file:
16 - Max value maps per signal:
16 - On malformed fields, missing required signal fields, or invalid header/version:
- load fails safely
- no crash
Backward Compatibility
- Legacy
.dcfgfiles are still loadable. - Legacy folder
apps_data/can_commander/dbc_configs/is still scanned. - Legacy filetype
CANCommanderDbcConfigis still accepted.
Example 1: Single Boolean Signal (Off/On)
Filetype: CANCommanderDbcProfile
Version: 1
name: Door_Status
signal_count: 1
signal1_sid: 100
signal1_name: Door
signal1_bus: can0
signal1_id: 1F2
signal1_ext: 0
signal1_start: 12
signal1_len: 1
signal1_order: intel
signal1_sign: u
signal1_factor: 1
signal1_offset: 0
signal1_min: 0
signal1_max: 1
signal1_unit:
signal1_map_count: 2
signal1_map1_raw: 0
signal1_map1_label: Off
signal1_map2_raw: 1
signal1_map2_label: On
Example 2: Multi-Signal Config
Filetype: CANCommanderDbcProfile
Version: 1
name: Powertrain_Core
signal_count: 2
signal1_sid: 10
signal1_bus: can0
signal1_id: 7E8
signal1_ext: 0
signal1_start: 24
signal1_len: 16
signal1_order: intel
signal1_sign: u
signal1_factor: 0.25
signal1_offset: 0
signal1_min: 0
signal1_max: 16383.75
signal1_unit: rpm
signal1_map_count: 0
signal2_sid: 11
signal2_name: Gear
signal2_bus: can0
signal2_id: 1D5
signal2_ext: 0
signal2_start: 20
signal2_len: 3
signal2_order: intel
signal2_sign: u
signal2_factor: 1
signal2_offset: 0
signal2_min: 0
signal2_max: 7
signal2_unit:
signal2_map_count: 4
signal2_map1_raw: 0
signal2_map1_label: Park
signal2_map2_raw: 1
signal2_map2_label: Reverse
signal2_map3_raw: 2
signal2_map3_label: Neutral
signal2_map4_raw: 3
signal2_map4_label: Drive