跳转到内容

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.

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

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.

Receive data via ISOTP (no request sent first).

Terminal window
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 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 --delay=100 --count=10

When 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.