Skip to content

canair monitor

Alias: mon

usage: canair monitor [-h] [--interval SECONDS] [--session] [--wake]
                      [--keep-changes | --keep-unique | --keep-all | --keep N]
                      [--save] [--label TEXT] [--state TEXT] [--notes TEXT]
                      [--rulers] [--notation NAME] [--include-static]
                      [--wican WICAN]
                      [--transport {slcan-tcp,wican-ws,elm327-tcp}]
                      [--no-fallback] [--wait] [--elm-timeout MS]
                      [--timeout SECONDS] [--json] [--verbose] [--timings]
                      [--reboot] [--unsafe] [--force]
                      [STEP ...]

[UDS] Monitor ECUs/signals live in a scrollable, refreshing view. Positional STEPs use the multi mini-language (same as `canair read`).

positional arguments:
  STEP                  Query selector(s), @group(s), or multi mini-language
                        step(s)

options:
  -h, --help            show this help message and exit
  --interval SECONDS    Poll interval in seconds (default 5.0; change it live
                        in the TUI with =/-)
  --session             Enter extended session (10 03)
  --wake                Wake ECUs from deep sleep (10 01)
  --keep-changes        Retain value-transitions per PID (run-length;
                        collapses only immediate repeats) — the default
  --keep-unique         Retain only globally-distinct payloads per PID (legacy
                        global dedup; return-to-previous transitions are
                        dropped)
  --keep-all            Retain every polled payload (full time-series; larger
                        capture files)
  --keep N              Keep the last N payloads per PID
  --save                Save results to captures/
  --label TEXT          Session label for --save
  --state TEXT          Session state for --save
  --notes TEXT          Session notes for --save
  --rulers              Show a byte-index ruler above the hex (in the notation
                        from --notation / display.byte_notation)
  --notation NAME       byte-index notation for output labels: wican
                        (default), isotp, torque, bix. Overrides the
                        display.byte_notation config key.
  --include-static      Include static config/identity PIDs (e.g. 21F2) in a
                        bare-ECU sweep. By default `canair monitor ECU` omits
                        PIDs flagged static:true; naming one explicitly
                        (ECU:21F2) always polls it.
  --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 monitor BMS:2101                   Monitor BMS PID 2101 (default 5s interval)
  canair monitor BMS:2101 --interval 2      Refresh every 2s
  canair monitor "VCU:2101 BMS:2101"        Cross-ECU monitor
  canair monitor @charging                  Monitor a saved group (see `canair groups`)
  canair monitor @driving CLU:220B          A group plus an extra selector
  canair monitor "skm-wake acc" "query IGPM:BC03,BC06"
  canair monitor BMS:2101 --save --label "…" --state "READY, PARKED"  Record while monitoring

In the TUI: mouse wheel / scrollbar / arrows-jk / PgUp-PgDn / g-G scroll,
space pauses, =/- change the poll interval live,
r toggles the byte-index ruler, l opens the errors/diagnostics log,
V cycles the view mode (ecus / ranges / signals / full),
i opens the session-info overlay (segment history + summary),
↑/↓ select a signal (esc deselects), e/v/d/F edit/verify/en-disable/filter,
s labels the recording (or saves now when not using --save),
n finishes the current --save session and starts a fresh one,
? shows all shortcuts, q quits.

For a single one-shot read (no live refresh) use `canair read` instead.