canair io¶
Alias: iocontrol
usage: canair io [-h] [--did DID] [--off] [--poll] [--wican WICAN]
[--transport {slcan-tcp,wican-ws,elm327-tcp}] [--no-fallback]
[--wait] [--elm-timeout MS] [--timeout SECONDS] [--json]
[--verbose] [--timings] [--reboot] [--unsafe] [--force]
[ECU]
[UDS] IOControl (0x2F): interactive TUI, or single actuator command with --did.
positional arguments:
ECU ECU name (e.g. IGPM)
options:
-h, --help show this help message and exit
--did DID DID to execute (e.g. BC01)
--off Send OFF/returnControl instead of ON
--poll Enable background status polling in the TUI: sends
2F{DID}00 (returnControlToECU) to every DID every 3s.
This can actuate relay/solenoid-backed DIDs (audible
click) — off by default.
--wican WICAN WiCAN address: ap or IP (default: config
transport.host / default_wican=ap)
--transport {slcan-tcp,wican-ws,elm327-tcp}
CAN transport: slcan-tcp (raw CAN), wican-ws (WiCAN
ELM327 WebSocket), or elm327-tcp (direct ELM327
adapter over TCP). Overrides the config
`transport.type` (default: slcan-tcp).
--no-fallback Don't auto-fall-back to other configured devices when
the selected one is unreachable (see config
transport.fallback).
--wait Keep retrying to reach the device indefinitely, then
start as soon as it comes online (Ctrl-C to stop). For
'monitor', also reconnects forever if the connection
drops mid-session (auto-failover to another same-
transport device is bounded by default; --wait makes
it unbounded).
--elm-timeout MS ELM327 ECU response timeout in ms (sent as ATSTxx
after init)
--timeout SECONDS Overall UDS response timeout in seconds (default 3.0
ELM / 2.0 raw). Overrides any per-ECU
response_timeout_ms for the whole run.
--json Output results as JSON
--verbose, -v Show raw transport traffic and expressions
--timings Print per-ECU/PID round-trip timing stats on exit (to
stderr)
--reboot Reboot WiCAN after session to restore AutoPID mode
--unsafe Bypass dangerous command blocklist (requires explicit
per-command consent)
--force Ask a session already holding the connection to
release it, then wait for it
examples:
canair io IGPM Interactive TUI (navigate + toggle)
canair io IGPM --poll TUI with background status polling enabled
canair io IGPM --json List all IGPM IOControl DIDs (offline JSON)
canair io IGPM --did BC01 Turn on low beam (hold until Ctrl+C)
canair io IGPM --did BC01 --off