Skip to content

BMCLI isotp

ISO 15765-2 (ISOTP) transport layer.

Send data via ISOTP (no response expected).

Terminal window
bmcli isotp send --channel=0 --reqid=0x7E0 --respid=0x7E8 --data="3E 80"
bmcli isotp send --channel=0 --reqid=0x7E0 --respid=0x7E8 --data="..." --flags=fdf --padding=0xCC
Option Default Description
--channel (required) Channel
--reqid (required) TX CAN ID
--respid (required) RX CAN ID
--data (required) Payload hex bytes
--timeout 5000 Timeout ms
--flags none fdf for CAN FD
--padding no padding Pad value, e.g. 0xCC

Receive data via ISOTP (no request sent first).

Terminal window
bmcli isotp recv --channel=0 --reqid=0x7E0 --respid=0x7E8 --timeout=5000

ISOTP ECU simulator: listens for ISOTP requests and responds with canned responses loaded from a file.

Terminal window
bmcli isotp ecu-sim --channel=4 --reqid=0x7E0 --respid=0x7E8 --responses=rules.txt --count=10

The responses file is a text file with one rule per line: <request_hex_pattern> <response_hex>. Lines starting with # are comments. Use * for wildcard (match any request). Prints READY to stdout when initialized, ECU-SIM: <hex> -> <hex> to stderr for each exchange.

Option Default Description
--channel (required) Channel to listen on
--reqid (required) CAN ID to listen for (requests)
--respid (required) CAN ID to send (responses)
--responses (required) Response rules file path
--count 0 (infinite) Stop after N exchanges
--flags none fdf for CAN FD

Note: For full UDS protocol simulation with state management (sessions, security, DTC database, download), use test/uds_ecu_sim.py instead — it implements a complete UDS ECU via Python/ctypes.



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.