Repository navigation
v0.3.0
Date: 2026-10-28
Previous release: v0.2.2
canbusctl on go-canbus v0.3.0: serial-line CAN adapters on every OS and
PEAK TRC traces.
- Serial-line CAN (slcan, LAWICEL ASCII) adapters — CANable, CANtact,
USBtin, LAWICEL CANUSB — on Linux, macOS and Windows without a kernel
driver:--interface slcan:/dev/ttyACM0(orslcan:COM3), and
slcan:tcp://host:portfor an adapter behind a serial server. Every
command that takes an interface accepts it, includingbridge(a
SocketCAN interface ↔ an adapter). New global flags--slcan-bitrate
(default 500000; 0 keeps the adapter's),--slcan-data-bitrate(CAN FD
data phase: 2000000 or 5000000, CANable 2.0) and--slcan-baud. - Safety:
monitor,record,statsandisotp monitoropen an adapter
listen-only ("L"): it neither transmits nor acknowledges frames.
Transmitting on an slcan adapter always needs--yes(exit 9). - slcan has no error frames, error state indicator, echo or hardware
filters;--filteris applied in software. - PEAK TRC (
.trc, versions 1.0 to 2.1 read, 2.1 written) wherever traces
are read or written:record,replay,monitor -o,trace convert
andtrace info,dbc decode --trace,inject --trace.trace convert
reports error classes TRC cannot keep (it keeps protocol violations and
error counters). - Tests: an end-to-end test drives canbusctl against the Linux kernel's
slcan driver (two linked ptys, the driver on one, canbusctl on the
other; both directions, recorded to TRC) in the Kernels microVMs; command
tests against a TCP adapter emulation check the setup commands
(bit rates, listen-only),--yesand software filters.
v0.2.2
Date: 2026-10-28
Previous release: v0.2.1
canbusctl on go-canbus v0.2.2.
monitor,record,statsand the ISO-TP commands could lose the
first frames that arrived between opening the interface and subscribing
to it (go-canbus's Bus started reading at once). They now open the bus
withcanbus.WithStartOnSubscribe, so frames wait in the socket until
the command listens. Found by the end-to-end tests in a slow microVM,
whererecordkept 21 of 60 frames.- Tests: the end-to-end harness waits until the kernel has registered a
started process's CAN filters (/proc/net/can) before sending to it, and
prints the recording whenrecordmisses frames.
v0.2.1
Date: 2026-10-28
Previous release: v0.2.0
canbusctl on go-canbus v0.2.1. go-canbus now reports a socket deadline that
fires a moment before the command's own deadline as that deadline, and
chaos.Bridge.Run returns nil when its context ends during a send; the
workarounds canbusctl v0.2.0 carried for both are removed. Commands behave as
in v0.2.0.
v0.2.0
Date: 2026-10-28
Previous release: v0.1.0
canbusctl on go-canbus v0.2.0: Vector trace formats, AUTOSAR databases, a
fault bridge and tested interoperability.
- Traces:
record,replay,monitor -o/--output,dbc decode --traceand
inject --traceread and write Vector ASC and BLF besides candump, JSON
Lines and pcap (pcapng is read). Newtrace convert <in> <out>(filters,
--no-errors,--max-frames; reports what the target format cannot keep)
andtrace info(kinds, duration, per-identifier counts and rates). ASC and
BLF times are zone-less local time: setTZto match the recording. - Databases: ARXML (the CAN part of AUTOSAR 4 system descriptions) wherever a
database is read;dbc convert --to kcdwrites KCD and prints what KCD
cannot hold. Conversions: DBC, KCD, ARXML → DBC, KCD, JSON. bridge -a <if> -b <if>: forwards frames between two interfaces (vcan,
vxcan,virtual; others with--yes) through seeded faults —--drop,
--duplicate,--delay-probability/--delay,--reorder,--corrupt,
--filter— for--duration, with per-direction counters (text or JSON).injectruns on the same chaos bridge (go-canbuschaos): new--reorder;
JSONfaultsgainsreceived,forwarded,reordered. Other flags and
output are unchanged.- ISO-TP:
--fc-delay(N_Br) onisotp receive/senddelays each flow
control. Against the kernel's ISO-TP sender on vcan a fast userspace
receiver needs about 200 µs: the kernel drops a flow control that beats the
echo of its own last block frame.isotp send --kernelno longer resends a
whole message when the Go runtime interrupts the kernel's wait for the
transmission (fixed in go-canbus v0.2.0).isotp monitoris listen-only. - A socket deadline that fires a moment before the command's deadline ends a
--timeout/--durationrun normally instead of failing with a timeout or
I/O error (isotp receive --kernel -n 0,bridge). - Tests: end-to-end tests of the built binary (every trace format, vcan
pipelines, ISO-TP between processes and with the kernel, bridge
processes); chaos tests (ISO-TP through a faulty bridge never delivers
wrong data, every process returns by its deadline); interop tests against
canbus-interop (can-utils/kernel, python-can, python-can-isotp, cantools,
canmatrix); vcan tests on vcan0 and vcan1 in CI with kernel ISO-TP;
microVM runs on kernels 6.1–6.18. Coverage 94.2 %; interop with
canbus-interop v0.2.0: 63 pass, 27 known differences, no skips.