BMCLI offline
Reference version: BMCLI 1.6.5. Command names, parameters and machine-readable fields retain their source spelling.
Offline commands are capability-driven. Configuration storage requires
BM_STAT_SUPPORT_OFFLINE, on-device logging requires
BM_STAT_SUPPORT_LOGGING, and device replay requires
BM_STAT_SUPPORT_REPLAY. RAM-buffer download/start additionally requires
BM_SUPPORT_BUFFER_API; a download to device storage also requires
BM_SUPPORT_FATFS_API. Each download requires a nonzero capacity from its
selected replay queue/file Stat. A missing, failed, or zero Stat is treated as
unsupported_capability; hardware generation is never used as a feature gate.
When a daemon is running, all ten leaf commands below operate through its
already-open channel handles. They do not attempt a second standalone open.
An unqualified status survey keeps unsupported devices in the result with
avail=unsupported. Device identity is UID-first, with VID/PID/SN fallback
only when neither side has a UID.
offline logging shares its underlying implementation with the --hardware
form of logging. On-device replay uses the explicit offline replay
lifecycle; there is no duplicate replay --hardware entry.
| Action | Equivalent to | Description |
|---|---|---|
offline logging start |
logging start --hardware |
Start on-device logging (BM_SetLogging) |
offline logging stop |
logging stop --hardware |
Stop on-device logging |
offline logging status |
(per-device part of logging status) |
Query on-device logging state (BM_GetLogging) |
offline file download |
— | Download host ASC/BLF to replay RAM or a device /REPLAY/ file |
offline replay start |
— | Start on-device replay (BM_SetReplay) |
offline replay stop |
— | Stop on-device replay |
offline replay status |
(per-device part of replay status) |
Query on-device replay state (BM_GetReplay) |
offline config save |
— | Persist the current runtime config (BM_SaveConfig) |
offline config load |
— | Load persisted config (BM_LoadConfig) |
offline config clear |
— | Clear stored config (BM_ClearConfig) |
bmcli offline logging start --channel=<UID>/0,<UID>/1 --path=log.asc --log-format=ascbmcli offline logging stop --channel=<UID>/0bmcli offline file download --channel=<UID>/0,<UID>/1 --src=host.asc --dst=/REPLAY/0000.BBDbmcli offline file download --channel=<UID>/0,<UID>/1 --src=host.blf --dst="<RAMBUF>"bmcli offline replay start --channel=<UID>/0 --file=stored.asc --loopbmcli offline replay start --channel=<UID>/0,<UID>/1 --ram-bufferbmcli offline replay status --channel=<UID>/0 --format=jsonbmcli offline config save --channel=<UID>/0 --items=rxfilter,txtask,routeLogging channel lists must refer to ports on one physical analyzer; BMCLI builds
the hardware mask from each resolved physical port. --path and --output are
aliases, --log-format=asc|blf selects the stored format, and --duration=N
stops after N seconds. In daemon mode a timed start returns immediately. Closing
one of that device’s daemon channels, restarting the daemon, or stopping it
first stops any BMCLI-managed timed logging so no detached timer is orphaned.
Offline file replay accepts one or more channels belonging to one physical device. The case-insensitive extension selects ASC, BLF, PCAP, LOG, or BBD; missing and unknown extensions are rejected. Paths sent to the device contain only the final basename with the extension removed. The replay mask is based on the resolved physical ports, not daemon slots or selector prefixes.
offline file download is named from the Host perspective: --src is a Host
ASC/BLF and --dst is the device target. The preferred storage spelling is a
complete /REPLAY/name.ext path. name.ext and bare name are compatibility
inputs; bare names default to .BBD, and successful structured output always
reports the canonical complete path. The exact, case-sensitive RAM target is
<RAMBUF> and should be quoted in shell commands. Reverse device-to-Host
offline file upload is not implemented.
The command fully parses and capacity-checks the Host file before changing
device state. It temporarily disables replay, selects and clears
BM_REPLAYQ_BUFFER for <RAMBUF> or BM_REPLAYFILE_BUFFER for storage, writes
the routed CAN/CAN FD records, then restores BM_DEFAULT_BUFFER. Failures
restore the original replay configuration and clear a partial download. A
successful storage-file download also restores the original replay
configuration. A successful RAM download leaves the <RAMBUF> replay target
disabled because reapplying an older replay configuration would invalidate the
fresh queue. Start the downloaded sequence explicitly with
offline replay start --ram-buffer or --file; download never starts replay or
calls BM_SaveConfig. RAM buffer contents are volatile.
--items values (save/load/clear): mode, bitrate, tres, rxfilter,
txtask, route, logging, replay, all (default). This is a strict comma
list: an unknown or empty item rejects the entire command before BMAPI is called.
load and clear refresh the daemon’s cached configuration after the device
operation; save does not change the runtime cache. Runtime configuration is
RAM-only until offline config save is called. Logging/replay start, stop, and
file download never call BM_SaveConfig implicitly. Separate standalone
commands do not inherit each other’s RAM state. To save volatile state set by a
previous command, keep one daemon session running and issue both commands
through it; a later standalone save may otherwise persist default, blank, or
unintended state.
Source of truth: BMCLI 1.6.5 repository documentation. Run bmcli help <category> <action> --format=json for the exact contract of the installed version.