Skip to content

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.