RELEASE NOTES
BMCLI 变更记录
按版本查看新增功能、体验优化与问题修复,便于升级前确认变化或回溯历史版本。
- 最新记录
- v1.6.5
- 历史版本
- 45
- 变更条目
- 218
01BMCLI v1.6.5最新记录4
Expanded BMCLI discovery and concurrent runtime capacity to 64 channels while preserving high-index logging, recording, replay, gateway, and device-mask behavior.
Hardened CANopen SDO validation, transmit correlation, cancellation, and route ownership so overlapping or uncertain transactions cannot consume the wrong response or retry unsafely.
Preserved device-owned LIN response quotas across live task updates and prevented gateway refreshes from queuing stale slave-response data.
Made Simulation retry transient daemon admission contention without recording a false transport failure or losing the pending generated frame.
02BMCLI v1.6.45
Added LDF-driven CAN/CAN FD-to-LIN signal gateways for master and slave nodes, including schedule/response handling and ready-to-run examples.
Added capability-driven offline configuration save/load/clear and host-to-device ASC/BLF download to `/REPLAY` files or a supported RAM replay buffer.
Made offline logging, replay, and file download safer across daemon and standalone use, with explicit save semantics, preflight checks, failure cleanup, retained errors, and replay recovery.
Improved LIN response round accounting, daemon JSONL streaming, cold-channel recording timestamps, CANopen SDO transmit confirmation, and ECU-simulator recovery after receive gaps.
Reported missing A2L module references as warnings while preserving usable A2L content.
03BMCLI v1.6.35
Fixed daemon transmit-task increment and random modes to preserve ID/data parameters and reject unsupported field settings consistently with standalone commands.
Fixed hexadecimal transmission-round parsing, including 0xFFFF for continuous sending.
Fixed successful Modbus latest/history queries returning failure exit codes when their results contain failed samples.
Fixed cold-channel ASC/BLF recordings using uninitialized device time, which could produce 1970-dated filenames and incorrect frame offsets.
Clarified transmit-task mode, field-width and round-count guidance in Help and the command reference.
04BMCLI v1.6.23
Fixed XCP disconnect through CLI and Web when the slave reply is sent by the same daemon, including orderly cleanup of active DAQ.
Preserved XCP request ordering through completion so concurrent commands cannot block replies or invalidate the next connection.
Clarified DBC decoding of observed out-of-range values versus validation of values supplied for encoding, and improved XCP disconnect guidance.
05BMCLI v1.6.16
Fixed daemon ASC/BLF replay to support multiple channels, channel mappings and strict validation consistently with standalone replay.
Improved concurrent CAN batch sending, replay, recording and gateway operation, with cooperative shutdown and no unintended interruption from read-only queries or invalid cleanup requests.
Fixed UDS unlock and download to inherit the daemon's configured endpoint defaults while preserving explicit command overrides.
Improved daemon-owned device discovery, required explicit channel opening before daemon receive, and clarified channel and Bench configuration errors.
Fixed relative Web-root paths and HTTP parameter error reporting, and clarified recovery from expired signal-history cursors.
Improved logging channel counts, gateway health reporting, and Help guidance for UDS setup, ECU simulation rules and LIN response events.
06BMCLI v1.6.07
Added configuration-based gateways between CAN/CAN FD channels and Modbus devices, with no routing code required.
Added a unified signal model with scaling, calculations and mappings, so values, validity and timeouts are handled consistently across protocols.
Added Modbus client polling and writes, plus server register and coil mappings for exchanging signals with external systems.
Added periodic and change-triggered CAN transmission, DBC multiplexed signals, and E2E checks and protection for gateway traffic.
Added portable .bmgw project files that keep gateway definitions separate from local device and channel bindings.
Added native plugins for custom codecs, transformations and E2E algorithms, with gateway control available through the CLI and REST API.
Connected Simulation to the same signal state and transmission services used by gateways.
07BMCLI v1.5.34
Restored high-throughput asynchronous ASC/BLF replay on Windows and Linux with transmit-completion-based sent counts and bounded end-of-file draining.
Made replay cancellation, NoACK, LIN error completions, and daemon terminal status fail closed instead of reporting partial or failed transfers as successful.
Hardened BMAPI CAN and ISO-TP timeout recovery so later writes remain blocked until the correct device and port queues are cleared, preventing stale traffic after failures.
Fixed Web database paths up to the documented limit and improved bounded LIN channel reopen and shutdown behavior.
08BMCLI v1.5.26
Improved analyzer discovery, AutoSet, and daemon reliability with serialized enumeration, stable physical and virtual channel identities, target-scoped AutoSet exclusion, accurate daemon-owned inventory, and Linux Active AutoSet timeout recovery.
Made automation output more consistent: explicit empty CAN payloads produce zero-length frames, reset-defaults returns one bounded JSON result, JSONL receive flushes promptly and ends with a summary, and invalid one-off UDS inputs report `invalid_argument`.
Made replay and conversion results more truthful with legacy RTR compatibility, classified conversion counts and errors, daemon timing-option parity, transmit-completion-based sent counts, and explicit lateness thresholds.
Hardened UDS, XCP, and ECU simulation with strict whole-file rule validation, fully offline download dry-run preflight, post-transmit XCP response correlation, and local DAQ validation before bus access.
Expanded A2L, DBC, and database compatibility and diagnostics, including common CANoe A2L syntax and calibration offsets, fast batch resolution for multi-symbol XCP DAQ, precise DBC range/path errors, and live database source status in REST.
Improved offline installation and runtime guidance with package-source reporting, complete packaged Help/Skill content, clearer Web/Bench listener and channel diagnostics, and earlier Modbus/EdgeX configuration errors.
09BMCLI v1.5.17
Improved installation and update workflows. Foreground updates now finish installation and verification before returning and clearly report the previous and installed versions.
Improved command-line guidance, diagnostics, error messages, and structured output consistency.
Improved DBC and simulation usability, including enumeration values, correct signal rounding, offline validation, and readable signal-source types.
Fixed ASC/BLF conversion so failures remain visible and timestamps are preserved correctly.
Hardened ISO-TP, UDS, and XCP timing and transport behavior, including layered deadlines, configurable flow control, CAN FD extended Single Frames, ECU simulation, and preflight validation.
Improved Web APIs and the Engineering Console with independent stream recovery, history-gap reporting, OpenAPI alignment, and accessible controls.
Fixed Linux analyzer firmware-update completion verification after USB re-enumeration.
10BMCLI v1.5.05
Added CAN/CAN FD node simulation with periodic transmission based on a DBC node or selected messages and signal updates while running.
Added constant, step, sine and sawtooth signal sources to simulate changing values such as vehicle speed and engine speed.
Added per-frame E2E protection with automatic Alive Counter progression and configurable CRC or additive checksums.
Added support for external E2E algorithm plugins to use manufacturer-specific message protection rules.
Added application-layer fault injection to simulate dropped frames, repeated frames, unprotected messages and checksum errors.
11BMCLI v1.4.94
Fixed standalone and daemon host replay retained-timestamp pacing to use one
monotonic absolute origin per loop. Windows wait rounding, send cost, and an
occasional late frame no longer re-anchor every later deadline.
Added host replay lateness, send-failure, and drop statistics while retaining
the CAN transmit-queue backpressure contract: a full queue retries the same
frame and may slow wall-clock playback without dropping or reordering it.
Added deterministic 26,227-frame fake-clock coverage plus equivalent ASC
absolute, ASC relative, and uncompressed BLF deadline coverage at multiple
speed factors.
Preserved bounded retained-timestamp pacing for repeated one-frame traces and
synchronized daemon timing-statistic snapshots on 32-bit Windows builds.
12BMCLI v1.4.84
Added stable typed DBC encode diagnostics across direct encode, standalone
message send, and daemon message send.
Reject unknown signals, out-of-range values, and invalid multiplex selections
before send while retaining bounded, path-safe resource and parse details.
Preserved successful Classic CAN, extended CAN, and CAN FD/BRS encode output.
Fixed standalone and daemon DBC CAN FD send finalization so payload byte
lengths map to wire DLC exactly once for all valid CAN FD sizes.
13BMCLI v1.4.74
Made CAN TX-task identities explicitly refer to stable physical slots,
including sparse-table reuse and consistent standalone/daemon JSON fields.
Added daemon-instance handles with per-task random tokens so a handle from a
deleted or reused slot is rejected without adding persistence, BMAPI, firmware,
or TX-task update behavior.
Added local Classic CAN/CAN FD conversion between Vector ASC and
uncompressed BLF.
Preserved CANFD FDF truth (including Classic DLC 9-F rows), Rx/Tx/TxRq,
transmission-error/wake-up state, and legal CANoe v7.5/v8.5 Classic
variants. Symbolic Classic rows now require a recoverable numeric ID instead
of being silently skipped or guessed.
14BMCLI v1.4.61
Completed UDS ECU Reset Help with `hard`/`key-off-on`/`soft` mappings,
command-local machine-readable argument metadata, the numeric 1..127 range,
ECU-specific effect notes, a dry-run example, and consistent standalone/
daemon invalid-input diagnostics.
15BMCLI v1.4.51
Added CAN `--bitrate=N` shorthand with deterministic nominal=data timing;
explicit nominal/data rates remain supported and conflicting mixed inputs
are rejected before hardware or daemon access.
16BMCLI v1.4.44
Added safe host-side ASC/BLF segmentation by monotonic duration or projected
final file size, with fixed, indexed, and UTC time-based path modes.
Made `--path` the canonical recording destination and retained `--output` as
an input alias. Added explicit `--max-files`, recorded-slot `--wrap`, and
exact-candidate `--overwrite` policies; overwrite authorizes replacement of
the generated target path, while incomplete output remains under a `.partial`
name.
Unified standalone, daemon, typed Web, Help, OpenAPI, and status behavior on
one recording-session core. Host recording now uses 64-bit PTP timestamps in
every execution mode and reports segment, counter, outcome, and I/O details.
Synchronized the maintained BLF writer copies with race-safe exclusive create
and projected-size support, and added deterministic naming, boundary,
collision, wrap, timestamp, failure-injection, and Web regression tests.
17BMCLI v1.4.31
Unified standalone and daemon host ASC output on explicit CRLF line endings
across Windows and Linux while preserving existing Vector-compatible fields.
18BMCLI v1.4.23
Fixed standalone and daemon host replay so a temporarily full asynchronous
CAN transmit queue waits and retries the same frame instead of dropping it.
Replay may run slower than the source timestamps under sustained pressure,
while Ctrl+C and daemon stop remain interruptible.
Fixed uncompressed BLF replay when a BLF object spans consecutive
LOG_CONTAINER payloads. The reader now treats those payloads as one logical
stream while excluding container headers and alignment padding.
Added deterministic boundary, empty-container, padding, timestamp-wrap,
unknown-object, EOF/rewind, compressed-container, and truncated-container
reader tests. This is a reader-only change; BLF/ASC writer bytes and online
logging finalization/segmentation behavior are unchanged.
19BMCLI v1.4.12
Fixed CANopen Dashboard SSE delivery for dense, valid PDO mappings by using
bounded dynamic JSON parsing instead of a fixed token array.
Preserved exact per-event cursors in batched CANopen SSE delivery so browser
reconnects cannot skip or duplicate events.
20BMCLI v1.4.08
Added classic CANopen CC manager/client/observer support over the shared CAN
Host Runtime, including node discovery and identity, NMT, Heartbeat, EMCY,
expedited and segmented SDO, PDO mapping/decode/transmit, SYNC and TIME.
Added a tolerant read-only CiA 306 EDS/DCF resource model with Object
Dictionary inspection, DCF Node-ID/bitrate/SDO endpoint validation, typed SDO
values, source hashes and evidence-gated online PDO mapping verification.
Added bounded daemon observation epochs, opaque resumable cursors, typed
event DTOs, REST history/actions and one-event-per-record SSE streaming.
CANopen shares the existing RxBroker, route ownership, generation,
deadline/cancel and daemon/standalone lifecycle with UDS, XCP, raw receive,
logging, Web and Gateway.
Added pinned test-only canopen-python and CANopenNode v4.0 oracles, a raw CAN
HIL mux with bounded per-client queues and explicit gap records, two-node
physical acceptance, and CANopen/UDS/XCP coexistence regression. These test
dependencies and fixtures are excluded from customer packages.
Preserved the BMAPI ABI, analyzer firmware, Gateway wire format and existing
REST routes. CANopen FD, SDO block transfer, LSS, CiA 402 helpers and node
implementation remain outside this first release.
Added executable acceptance ownership for TEST-001 through TEST-027, two
five-minute bounded physical CANopen scenarios, deterministic 1 MiB history and raw
mux overflow evidence, database fuzzing and USB disconnect recovery gates.
Preserved multi-channel daemon operation with BMAPI versions that hide or
retype sibling USB functions after the first channel opens by resolving
startup and dynamic opens against the initial physical-channel inventory.
Fixed loop replay timing so each repeated trace preserves its initial time
offset and sub-millisecond Windows waits cannot collapse into a busy loop.
21BMCLI v1.3.34
Closed the second CAN-115 peer-review round by making each compound UDS
route lease single-transaction exclusive. A concurrent request using the
same lease is rejected instead of sharing independent cursors on one
correlated response route.
Made explicit lease end, owner-process loss and lease expiry cancel the
pinned software ISO-TP Host before releasing or reusing its route.
Added bounded physical regression coverage for direct lease-driven Host
cancellation, immediate route reuse, and Web XCP lifecycle route/cursor
cleanup.
Revalidated the candidate with BMAPI 1.14.1.1 from the current target branch.
SSE protocol concurrency now proves exact UDS response counts, unique and
contiguous global event IDs, and an unchanged route-drop counter while
continuous XCP DAQ traffic is active.
22BMCLI v1.3.210
Hardened daemon protocol lifecycle handling after CAN-115 peer review.
Channel close/claim/release now cancel only an operation on the selected
channel, while daemon stop/restart and protocol reconfiguration cancel the
active protocol transaction globally.
Moved ordinary daemon commands to bounded worker threads so stop, close and
ownership changes remain responsive during long UDS or XCP transactions.
Frontend process death and closed Web request sockets now release compound
UDS leases and XCP work promptly instead of waiting for the configured
protocol timeout.
Made daemon-owned software ISO-TP and XCP writes asynchronous at the BMAPI
enqueue boundary; protocol deadlines, flow control and cancellation remain
owned by their engines. Standalone blocking-write behavior is unchanged.
Added strict numeric validation for UDS download address, size, ALFID and
maximum block length, including negative, overflowing and malformed input.
Added route-contention and physical single-/multi-channel lifecycle tests
covering owner death, unrelated-channel isolation, channel close/reopen,
claim release, Web disconnect and daemon stop.
Prevented a compound UDS route lease from being released or reused while an
in-flight transaction still references it. Concurrent end/expiry now defers
cleanup until the last pinned exchange drains.
Classified active Host operations by protocol so Web XCP disconnect and
endpoint reconfiguration can cancel XCP before waiting on its mutex, without
cancelling an unrelated UDS transaction on the same CAN channel.
Strengthened Web SSE concurrency acceptance to verify the expected UDS and
DAQ event counts as well as per-stream order and uniqueness.
Restored the intended daemon-or-standalone policy for bounded Modbus
operations so CLI, Web and polling reuse one endpoint session. Modbus
exceptions and local value errors preserve a healthy connection; timeout,
transport and response-integrity failures still force a safe reconnect.
Made XCP DAQ receive poll its Host validator in bounded slices so daemon
stop, channel ownership loss and client disconnect cannot remain hidden
behind a long DAQ receive timeout.
23BMCLI v1.3.011
Added a small protocol-neutral CAN Host Runtime and thread-safe route
registry. Passive observers may overlap, while two correlated consumers of
the same channel/ID/IDE/FDF response route are rejected with owner
diagnostics.
Unified standalone and daemon UDS execution around the same software ISO-TP
transaction and service planner for raw requests, semantic Helpers, DTC,
SecurityAccess, download transfer steps and one-shot TesterPresent. Local
security/image files remain frontend-owned while their bus transactions use
the daemon whenever it is active.
Preserved the original UDS DTC aliases, including numeric subfunctions, and
made them inherit the active daemon diagnostic endpoint instead of
accidentally falling back to an unconfigured standalone session.
Kept file-backed `load/save/list`, `unlock` and `download` orchestration local;
registered only daemon-capable transactions as runtime-either, and rejected
daemon/client registry mismatches instead of silently changing execution
mode.
Reserved the XCP CTO response route through the same registry and made XCP
endpoint reconfiguration transactional, so a conflicting replacement does
not discard the working configuration.
Added Windows/Linux coverage for in-flight cancellation, deadline and
ownership loss, gap/epoch detection, route/cursor cleanup and isolation,
standalone/daemon JSON parity, and a future CANopen SDO probe. BMAPI ABI,
analyzer firmware, Web REST/OpenAPI and Gateway wire contracts are unchanged.
Made the cross-thread Host cancellation flag an acquire/release atomic so
bounded cancellation has defined Windows/Linux synchronization semantics.
Kept compound daemon SecurityAccess and download steps under one bounded
bidirectional transport lease, and made XCP reserve both request TX and
response RX routes. NRC, timeout, client/lifecycle loss, broker gaps and
shutdown now fail closed and release protocol ownership deterministically.
Added per-transaction timeout options to UDS unlock/download and corrected
daemon error-envelope parsing so AI callers receive one clean message.
Corrected asymmetric UDS addressAndLengthFormatIdentifier handling to use
the standard high=size, low=address nibble order; `0x44` remains unchanged.
Added physical-CAN simulator coverage for daemon unlock, download, NRC,
timeout and immediate UDS-to-XCP route reuse after both failure paths.
24BMCLI v1.2.144
Unified standalone and daemon ASC recording on one Vector-compatible writer,
including stable field widths, CAN FD flags, a BMCLI source marker, and
consistent CAN/LIN logical-channel output.
Rejected malformed ASC replay records with invalid IDs, payload lengths,
directions, CAN FD tail fields, or trailing tokens instead of transmitting
partially parsed data.
Honored Vector `timestamps absolute` and `timestamps relative` replay modes.
Propagated BLF write, short-write, seek, flush, and close failures to logging
command results and daemon status rather than reporting a damaged log as
successful.
25BMCLI v1.2.132
Made Bamboo BMCLI builds resolve product and Git metadata before invoking
MinGW Make, avoiding an intermittent MSYS shell hang in the Windows service
session that could prevent compilation from starting.
Passed the same explicit product metadata into all Linux package builds so
Windows and Linux artifacts cannot diverge because of shell environment
differences.
26BMCLI v1.2.126
Required AI-generated Dashboards to resolve `/api/v1/bench` at runtime,
including logical network names and project-relative database resources,
instead of treating generation-time discovery as a substitute.
Added a deterministic Skill contract guard against embedding physical bench
channel bindings in generated Dashboard source.
Documented the decoded-signal history and SSE wire contract explicitly,
including `samples`, the `signal` event name, and independent gap recovery.
Bounded the AI Dashboard generation gate to artifact creation; the independent
harness remains the sole owner of browser, service, simulation, and HIL checks.
Required generated Dashboard diagnostics to expose the same accepted,
de-duplicated sequence set used by the plotted signal points.
Prevented generated charts from comparing bus/device `timestamp_us` directly
to browser wall time, which could immediately evict every live point.
27BMCLI v1.2.112
Rejected raw UDS negative responses whose echoed service ID does not match
the active request, in both daemon and standalone execution modes.
Added permanent ECU-simulator regression coverage for the mismatched-service
response so it cannot be mistaken for a valid NRC in future releases.
28BMCLI v1.2.103
Kept semantic UDS dry-run independent of local/remote channel ownership while
preserving claim protection for every transmitting diagnostic operation.
Restored structured ownership errors and standalone DTC failures to the JSON
stdout contract used by daemon, Web, and AI automation.
Enforced the one-command timeout budget across verbose DTC responsePending
handling and rejected malformed overlong UDS negative responses.
29BMCLI v1.2.93
Cleared slot-bound UDS, TesterPresent, XCP, and control state when an internal
BUSOFF or daemon-restart reopen finally fails, preventing a later device from
inheriting another ECU's diagnostic endpoint.
Rejected missing option values and odd-nibble hexadecimal payloads before
daemon or BMAPI dispatch, while retaining documented separated option values.
Defined semantic UDS dry-run as endpoint-free request construction with
validation of any explicitly supplied endpoint fields, and aligned DTC Help
with configured-session transport inheritance.
30BMCLI v1.2.83
Rejected incomplete one-off semantic UDS endpoints before transport and
invalidated slot-bound UDS/TesterPresent state when a channel is explicitly
closed, preventing stale diagnostics after slot reuse.
Completed raw UDS and TesterPresent JSON error envelopes, rejected malformed
short negative responses, completed suppressed raw requests immediately after
successful transmission, and exposed DTC verbose enrichment in text output.
Corrected the raw hard-reset example and added permanent endpoint lifecycle,
failure-schema, verbose-output, simulator, and regression coverage.
31BMCLI v1.2.74
Made raw UDS channel, CAN-ID, and CAN/CAN-FD overrides strictly one-shot in
daemon mode so malformed or partial requests cannot corrupt persisted
diagnostic configuration.
Rejected malformed timeout/data values, equal or out-of-range diagnostic
IDs, and XCP route collisions before transport; initialized every shared UDS
transaction result even when argument validation fails.
Unified daemon and standalone raw-request flag selection and dry-run
evidence, tightened TesterPresent endpoint validation while preserving CAN ID
zero, and added permanent standalone/daemon/simulator contract regressions.
Synchronized UDS reference, test identifiers, and bundled AI Skill guidance
with the typed high-frequency Helpers.
32BMCLI v1.2.64
Rejected malformed or oversized DID, memory, and RoutineControl data instead
of silently transmitting a parsed prefix to the ECU.
Made one-off UDS Helper/DTC endpoints honor the same UDS/XCP response-route
collision rule as persistent configuration, and made UDS transport flags
reject unknown values instead of silently selecting classic CAN.
Added standalone DTC CAN FD and ISO-TP padding options, preserved explicitly
supplied CAN ID zero, and represented record selector `0xFF` as aggregate raw
multi-record data without inventing a single response-record boundary.
Added permanent strict-parser, endpoint, multi-record, simulator, Help and
full regression coverage for the corrected contracts.
33BMCLI v1.2.53
Fixed UDS ISO-TP configuration so omitted padding remains disabled and an
explicit `--padding=0x00` is transmitted as byte `0x00` instead of silently
falling back to enabled `0xCC` padding.
Made UDS Helper and DTC error retryability operation-aware: transient read
failures remain retryable, while DID/memory writes, session changes, ECU
resets, RoutineControl mutations, DTC clear and raw requests never advertise
an automatic retry after completion becomes unknown.
Added permanent transport-contract and ECU-simulator regressions for padding
disabled/zero and read-versus-write ResponsePending timeout behavior.
34BMCLI v1.2.44
Unified standalone and daemon DTC parsing, transaction handling, response
decoding, bounded verbose enrichment, and text/JSON formatting on one shared
core while preserving existing DTC aliases.
Fixed DTC snapshot-identification output, option-first `--verify`, strict
helper positional arity, raw-request typed pending failures, pending transport
error classification, and read-only command metadata.
Standardized bounded UDS Helper failures on the shared structured JSON error
envelope and made text/JSON the explicit output contract; CSV and JSONL are
rejected instead of silently returning text.
Documented every accepted named DTC status and added regression coverage for
format matrices, nested errors, raw pending propagation, snapshot IDs, and
daemon/standalone parity. The clean unified UDS runtime follow-up is tracked
in CAN-115 for BMCLI 1.3.0.
35BMCLI v1.2.34
Fixed a semantic `uds memory write` request-buffer overflow and enforced the
confirmed 4095-byte software ISO-TP payload boundary before copying or
transmitting memory requests.
Fixed ResponsePending terminal handling so a missing final UDS response is
reported as a typed pending timeout/limit instead of ordinary NRC 0x78.
Unified daemon DTC text and JSON commands on the same UDS transaction path,
bounded verbose detail enrichment by count/time/response size, and tightened
service, DID, DTC, and record echo validation.
Added strict 1..60000 ms timeout parsing, integer-overflow rejection, maximum
ALFID/P0, malformed response, verification mismatch, TesterPresent overlap,
large-DTC, and semantic multi-frame regression coverage.
36BMCLI v1.2.24
Added high-frequency, typed UDS helpers for DID read/write, diagnostic
session changes, ECU reset, memory read/write, and RoutineControl while
preserving the generic `uds request` path and existing UDS aliases.
Added strict positive-response echo validation, NRC 0x78 continuation,
derived or explicit memory ALFID widths, optional DID write verification,
P2/P2* reporting, and structured routine status records.
Added `uds dtc list` as the readable default/active alias, named ISO 14229
status filters, status-flag arrays, and corrected snapshot/extended record
metadata and payload boundaries.
Expanded the canonical UDS ECU simulator and physical analyzer regression
suite for stateful DID, memory, routine, reset, DTC, negative-response, and
exact request-byte coverage.
37BMCLI v1.2.110
Added first-class Modbus master/client support over native Windows/Linux RTU,
ASCII, and TCP transports without extending BMAPI or requiring BUSMUST
analyzer hardware.
Added coils, discrete inputs, input/holding registers, single/multiple writes,
File Record FC20/FC21, and FIFO FC24 with strict protocol limits, exception
reporting, CRC/LRC/MBAP validation, and no automatic write retry.
Added lightweight Linux Foundation EdgeX Modbus Device Profile YAML/JSON
import, Device Definition bench import, typed resource/command access,
RTU/TCP/ASCII device bindings, scaling, bidirectional mappings, byte/word
order, access/range validation, and readback.
Added bounded daemon-owned polling with latest/history, freshness, quality,
gaps, missed deadlines, on-change retention, persistent endpoint connections
with reconnect, REST/SSE endpoints, OpenAPI, and a Modbus engineering panel
in the bundled Dashboard.
Hardened the Modbus service around one persistent session per physical
endpoint shared by CLI, poll, and Web; added RTU t3.5 timing, wider Linux
baud-rate support, exact 64-bit values, write-only EdgeX semantics,
partial-command diagnostics, bounded dynamic history, resumable loss-aware
SSE, concurrent-stop safety, and typed HTTP error status classes.
Added independent TCP and PyModbus interoperability peers, POSIX PTY RTU/ASCII
tests, EdgeX fixtures, Web/daemon integration tests, and full BMCLI hardware
and real-ECU regression coverage.
Added a narrowly triggered BMCLI Modbus Skill methodology that keeps protocol
I/O in BMCLI and general Web authentication, durable storage, uploads,
reporting, and reverse proxying in surrounding application services.
Added explicitly authorized installation of approved local F4L2/0083 HPM UF2
images through `device update <selector> --file=<path> --force`, including
fixed-block/application-range validation and same-UID/version re-enumeration.
Fixed Modbus endpoint/session lifecycle, exact numeric conversion, EdgeX
compatibility, loss-aware polling/SSE behavior, HTTP error mapping, and a
poll start/stop publication race found during the 1.2 release review.
Restricted local F4L2/0083 UF2 images to the physical application interval
`[0x80020000, 0x80100000)` and synchronized the latest BMAPI, LIN schedule,
replay, updater, and Bamboo build-compatibility baseline from BUSMASTER.
38BMCLI v1.1.011
Introduced first-class XCP on CAN/CAN FD support for ECU measurement,
calibration, integration testing, and internal-state observation without a
hardware debugger.
Added XCP connect/status/disconnect, external seed/key unlock, raw memory
read/write/checksum, A2L-backed measurement and characteristic access, and
bounded dynamic DAQ acquisition.
Added a BMCLI-owned software ISO-TP engine and migrated ISOTP/UDS receive
paths onto RxBroker cursors so UDS, XCP, raw receive, logging, and Web can run
concurrently without competing for the BMAPI receive queue.
Added a tolerant, read-only A2L subset for scalar measurement and calibration
workflows, including MODULE scoping, byte order, COMPU_METHOD,
RECORD_LAYOUT, BIT_MASK, access semantics, and duplicate-symbol handling.
Added the typed `GET/POST /api/v1/xcp` Web boundary for Dashboard and
automation clients while keeping XCP lifecycle and safety rules in the shared
BMCLI service layer.
Standardized XCP DAQ output as one bounded JSON document with a `samples`
array; JSONL/CSV are rejected before execution instead of producing
misleading output.
Hardened XCP endpoint safety: strict numeric/flag validation, raw-write
dry-run and optional readback verification, bounded/escaped JSON, and
capability-aware address/DAQ granularity handling.
Made UDS/XCP response-route collision checks symmetric and cleaned XCP
sessions, DAQ state, receive cursors and BMAPI handles on reconfiguration,
channel close, daemon stop and restart.
Decoupled the DAQ pump from the daemon command lock, protected XCP state with
its own mutex, and made software ISO-TP timeouts restart for each N_Bs/N_Cr
protocol phase instead of expiring one whole valid multi-frame transfer.
Corrected DBC/LDF/A2L registry mutation permissions and documented their
shared generic unload lifecycle.
Made `ai status` detect stale installed Skill content byte-for-byte, and
tightened Skill guidance for missing UDS/XCP bench IDs and complete XCP
cleanup.
39BMCLI v1.0.61
Fixed daemon-backed channel lifecycle and host logging/replay lifecycle/status
commands so `--format=json` always returns one bounded JSON document.
40BMCLI v1.0.58
Aligned runtime Help, the command Reference, option validation, examples, and
machine-readable discovery so automation no longer relies on stale syntax.
Expanded real-world DBC and LDF compatibility and completed the revised BLF
reader/writer contract used by recording, replay, conversion, and Web flows.
Verified physical CAN and LIN online recording and replay with ASC and BLF,
including the daemon, REST API, engineering console, and Gateway paths.
Preserved LIN schedule slot phases when translating LDF tables into hardware
TX tasks, including mixed master-read and master-write schedules.
Added deterministic local/remote claim and release arbitration for protected
channel control while retaining compatible shared send and passive receive.
Improved Gateway session cleanup, BUSOFF recovery, logging lifecycle, replay
channel mapping, and multi-consumer receive continuity.
Narrowed the BMCLI AI Skill activation boundary and added lightweight
application-development guidance without triggering on generic dashboard,
DBC/LDF, test-methodology, or source-review work.
Added compatibility regression coverage for supplied DBC/LDF corpora, BLF
round trips, CAN/LIN online capture and replay, Web, Gateway, and shuffled HIL.
41BMCLI v1.0.415
Replaced the obsolete reverse-`BM_OpenRemote` Gateway path with a direct,
GWR-compatible UDP control/data server over the daemon's physical handles.
Added typed REST resources for bench/device inventory, channel statistics,
logging, replay, remote-BMAPI gateway lifecycle, and bounded firmware checks.
Added explicit CommandRegistry permissions and parameter type/range/unit/
mutual-exclusion metadata for runtime discovery and AI clients.
Added retained duration/byte sizing and per-consumer backlog/gap observability
to RxBroker and Web metrics.
Hardened Windows package path symmetry, final-handle project containment, and
single-setter-group channel PATCH semantics.
Added a packaged Nginx HTTPS-first profile for trusted Linux browser access
while BMCLI remains bound to loopback HTTP.
Fixed daemon logging above slot 15 and idempotent same-value LIN mode updates.
Fixed Linux daemon startup so bounded JSON remains one document while child
diagnostics are redirected to the private daemon log.
Fixed Windows-driven WSL worktree builds to embed the same Git commit metadata
as release manifests and added Windows/Linux load, HTTPS, and Skill gates.
Hardened release-check so package lifecycle, runtime, hardware, Web, and Skill
gates execute the Bamboo package whose metadata matches the release manifest.
Moved UDS DTC argument validation before BMAPI initialization so invalid
commands return their stable contract even while hardware is being released.
Kept release package tests strict while capturing updater JSON and diagnostic
stderr separately, avoiding false PowerShell NativeCommandError failures.
Made release-check native tool gates decide success from process exit codes,
so non-fatal WSL and tool diagnostics on stderr do not abort verification.
Recognized standard equivalent wording such as "neither authentication nor
encryption" in the AI gateway safety-boundary release rubric.
Fixed UDS request parsing so space-form option values such as
`--channel 10356/1` cannot be appended to the diagnostic payload.
42BMCLI v1.0.36
Added project-local target and bench configuration with multiple named
networks, nodes, databases, and machine-local channel bindings.
Added the daemon-owned Web automation service with packaged OpenAPI and an
engineering console, typed message send, cursor history, SSE/WebSocket raw
streams, and DBC signal plans.
Added typed REST lifecycle for daemon channels, engineering databases,
hardware TX tasks, and message routes without exposing a shell executor.
Added the per-channel RxBroker so CLI receive, logging, remote BMAPI gateway,
Web streams, and DBC signal decoding use independent cursors without competing
for the BMAPI receive queue.
Hardened bounded JSON, daemon IPC, cross-platform resource paths, Web shutdown,
package lifecycle, and Claude Code/Codex Skill behavior checks. Uninstall now
terminates an active package-owned daemon before removing its executable and
runtime state.
Added real-browser and configurable multi-consumer soak release gates; Windows
HIL completed a 30-minute SSE/WebSocket run with exact active-cursor continuity.
43BMCLI v1.0.25
Added capability-aware LIN master/slave message workflows, channel power
control, and runtime schedule/response management.
Added physical-device reset and identity-safe generation-3 firmware update
handling for devices selected by serial number, UID, or channel name.
Completed DTC request construction, response parsing, action-level Help, and
public command/alias contract cleanup.
Added a GWR-compatible CAN FD/LIN UDP gateway for unmodified remote BMAPI
clients, including mixed-bus logical-to-physical channel translation.
Verified current Windows and Linux builds, firmware transfer behavior, and
sequential plus shuffled hardware regression coverage.
44BMCLI v1.0.14
Added verified `bmcli update --check` release discovery and changelist output.
Added CID-based firmware checks and updates for generation-3 HPM BUSMUST devices.
Moved the Bamboo deployment implementation into a Git-managed PowerShell script.
Published BMCLI release notes and SHA-256 metadata with each version manifest.
45BMCLI v1.0.03
Initial product release of BMCLI as an independent BUSMUST command-line tool.
Supports CAN/CAN FD channel control, message traffic, TxTask, routing, DBC,
logging, replay, ISO-TP, UDS diagnostics/flashing, checksum, and AutoSet.
Includes project bench profiles, structured Help/JSON contracts, offline
packages, update support, and Claude Code/Codex skill integration.