BMCLI isotp
Reference version: BMCLI 1.6.3. Command names, parameters and machine-readable fields retain their source spelling.
ISO 15765-2 (ISOTP) transport layer.
isotp send
Section titled “isotp send”Send data via ISOTP (no response expected).
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 |
Daemon isotp send and isotp recv use the channel Host Runtime. Only one
transaction may own a correlated request/response endpoint at a time; an
overlap returns route_conflict before transmission, while different channels
or different endpoints remain independent. Disconnect, channel close/config,
and daemon stop cancel the operation and release its routes and Broker cursors.
isotp send requires a real transmit-completion event and therefore returns
unsupported_in_noack_mode before transmitting on a CAN channel configured
with NoACK.
isotp recv
Section titled “isotp recv”Receive data via ISOTP (no request sent first).
bmcli isotp recv --channel=0 --reqid=0x7E0 --respid=0x7E8 \ --timeout=5000 --block-size=64| Option | Default | Description |
|---|---|---|
--channel |
(required) | Channel |
--reqid |
(required) | Tester CAN ID used by the transport config |
--respid |
(required) | ECU response CAN ID |
--timeout |
5000 |
Aggregate deadline for receiving the complete ISO-TP payload, 1..60000 ms |
--block-size |
64 |
Receiver Block Size advertised to the sender in FC/CTS, 1..255 |
--flags |
none | fdf for CAN FD |
isotp recv --timeout is deliberately an overall payload deadline, not a
sliding N_Cr timer. Each explicit --block-size value controls this BMCLI
receiver’s FC/CTS frames; it does not configure the remote receiver.
isotp ecu-sim
Section titled “isotp ecu-sim”ISOTP ECU simulator: listens for ISOTP requests and responds with canned responses loaded from a file.
bmcli isotp ecu-sim --channel=4 --reqid=0x7E0 --respid=0x7E8 --responses=rules.txt --delay=100 --count=10When no rule matches, the simulator returns UDS NRC 7F <request SID> 11; it does not synthesize a positive response for arbitrary services.
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); rules retain file-order first-match semantics. Every non-comment line must contain exactly those two fields and complete hexadecimal bytes. The complete file is validated through EOF before the channel is opened: malformed, overlong, or excess rules are rejected together, every expanded diagnostic identifies the resolved response file and retains its exact line number and parser reason, and no partial rule set, simulator operation, route, or receive cursor is started. Diagnostics use a bounded 8192-byte envelope. If individual messages exceed that budget, the terminal reported, omitted, total, and omitted_line_range fields explicitly account for the unexpanded errors instead of silently truncating validation. A relative file path is resolved from the caller’s selected project, or its current directory when no project is selected; standalone and active-daemon execution use the same caller-relative rule. Text mode prints READY when initialized and streams ECU-SIM: <hex> -> <hex> for each exchange as it happens. JSONL streams equivalent ready, exchange, and stopped objects. The bounded JSON and CSV formats are rejected before the simulator starts.
| 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 |
--delay |
0 |
Delay each response by 0..60000 milliseconds |
--flags |
none | fdf for CAN FD |
Note: The offline package does not include a full stateful UDS ECU simulator. Sessions, security, DTC, and download-state workflows require an external reviewed simulator or application appropriate to the test bench.
Source of truth: BMCLI 1.6.3 repository documentation. Run bmcli help <category> <action> --format=json for the exact contract of the installed version.