Skip to content

BMCLI route

Message routing between channels.

Routes are a hardware feature: the route table lives in one device’s firmware and can only forward between that device’s own ports. --src and --dst are therefore resolved to device-local port numbers, and --src/--dst must be on the same device — cross-device routing is rejected (see error below).

Terminal window
# Route all messages from 10356/CH1 to 10356/CH2 (SN/port, same device)
bmcli route add --src=10356/0 --dst=10356/1
# Route specific message ID
bmcli route add --src=10356/0 --dst=10356/1 --message=0x100
# Broadcast to multiple ports on the same device (--dst is a raw port bitmask,
# e.g. 0x0E = ports 1,2,3; NOT SN/port-resolvable)
bmcli route add --src=10356/0 --dst=0x0E --type=broadcast
# Route only CAN FD frames
bmcli route add --src=10356/0 --dst=10356/1 --flags=fdf

Cross-device error (hardware cannot do this):

ERROR: Hardware route cannot cross devices: src 10356 -> dst 10357. Routes are confined to one device's own ports.
Option Default Description
--src (required) Source channel (SN/port, UID/port, legacy index, or name)
--dst (required) Destination: unicast → channel spec (must be same device as --src); broadcast → raw port bitmask (e.g. 0x0E)
--message / --id all Match one exact CAN ID; omit to route all IDs
--type unicast unicast or broadcast
--flags none Match the exact supplied flags value
Terminal window
bmcli route remove --src=10356/0 --dst=10356/1 --message=0x100
Option Description
--src Source channel (required; SN/port or legacy index)
--dst Match only routes to this destination (SN/port or raw target value)
--message Match only routes with this CAN ID
Terminal window
bmcli route list --channel=0
bmcli route list --channel=0 --format=json


Source of truth: bmcli_reference.md in the BMCLI repository. Run bmcli help <category> <action> --format=json for the exact contract of the installed version.