canair bix
usage: canair bix [-h] [-1] [-2] [--table] [--annotate HEX [HEX ...]] [--raw]
[--torque] [--obdb] [--no-legend] [--max MAX] [--ecu ECU]
[--pid PID]
[value]
[UDS] Convert byte indices between WiCAN, ISO-TP, Torque, and OBDb notations.
positional arguments:
value Index to convert (see formats below)
options:
-h, --help show this help message and exit
-1 1-byte subfunction mode (default, unless derived from
--pid)
-2 2-byte subfunction mode (22xxxx DIDs)
--table, -t Print the full conversion table (all frames)
--annotate HEX [HEX ...], -a HEX [HEX ...]
Annotate a hex payload with all index representations
(e.g. 62B0047402990C0040A000AAAA, or space-separated
bytes 62 B0 04 ... quoted or unquoted). Expects the
reassembled UDS response payload (SID-first, ISO-TP
PCI stripped) unless --raw.
--raw, --frame With --annotate: the hex is an ALREADY-FRAMED CAN
payload (ISO-TP PCI bytes present, e.g. straight off
the bus) — index it as-is instead of reconstructing
the framing from a PCI-stripped UDS payload.
--torque Show the Torque byte-letter column
(--table/--annotate). Hidden by default. Torque
notation (A, B, C… from the first UDS data byte) is
what the Torque app, Car Scanner, and similar OBD apps
use — handy for porting their PID sheets.
--obdb Show the OBDb bix (bit-index) column
(--table/--annotate). Hidden by default. bix is a
distinct notation from Torque (data-byte index × 8) —
request it independently of --torque.
--no-legend With --annotate: omit the trailing definition list of
the Role terms (PCI/SID/DID/LID/RID/NRC/…) that appear
in the payload.
--max MAX Max WiCAN index for table (default: 71)
--ecu ECU With --annotate: overlay which defined parameter maps
each byte (and flag unmapped bytes). Requires --pid.
--pid PID With --annotate --ecu: the PID whose parameters to
overlay (e.g. 22BC03). Also sets the subfunction width
when it names its service (22xxxx DID → 2 bytes, 21xx
→ 1) unless -1/-2 is passed explicitly.
run `canair bix` with no arguments for a guided overview (a legend explaining
each notation + a compact 2-frame table); `--table` prints the full table.
input formats:
w9, W09 WiCAN byte index (prefix w)
B09 WiCAN byte index (uppercase B — the Bnn convention)
i6, i0x06 ISO-TP payload index (prefix i)
b32 OBDb bix / bit index (lowercase b)
E, AA Torque letter notation (Torque app, Car Scanner & similar apps)
9 Plain number (assumed WiCAN)
subfunction modes:
-1 1-byte subfunction (21xx PIDs) — default
-2 2-byte subfunction (22xxxx DIDs)
with a `--pid` that names its service (`22xxxx` / `21xx`) the width is DERIVED
from it, so `bix -a HEX --ecu IGPM --pid 22BC03` needs no -2; an explicit -1/-2
still wins (and is flagged when it contradicts the PID). A short-form DID
(`B004`) doesn't state its service — pass -2 yourself.
optional columns (--table / --annotate; both hidden by default):
--torque add the Torque letter column (Torque app, Car Scanner & similar)
--obdb add the OBDb bix (bit-index) column — a distinct notation
note: with --annotate/-a, put the mode flag (-1/-2) BEFORE the hex bytes,
e.g. `bix -2 -a 62 01 A0 ...` — a mode flag after the bytes is
consumed as another argument.