Skip to content

0.1.0 — hardware-validated release

Latest

Choose a tag to compare

@madprogrammer madprogrammer released this 07 Oct 10:09

First release validated on physical adapters: two X1 units (firmware 2.2.4.10)
wired together — bidirectional classical CAN and CAN FD across 125 k – 1 Mbit/s
with data phases to 5 Mbit/s, every DLC length, extended IDs, RTR, software
filters, termination, TX echoes, and zero-loss 1000-frame bursts.

Changes since 0.1.0a1

  • Fixed silent first-frame loss after channel open: the firmware discards
    bulk frames submitted while switching operating modes, so channel open now
    waits 10 ms after the mode command before returning.
  • Automatic recovery of channels that come up latched in bus-off (about 4%
    of opens on Gen2/2.5 firmware), using the reference driver's loopback
    dummy-frame procedure; opens that stay bus-off fail with
    CanInitializationError instead of silently dropping frames.
  • Added BusMustBus.recover_bus_off(), the BMAPI BM_RecoverBusOff()
    equivalent: firmware-side recovery (control 0xF5) on Gen2/2.5 firmware
    ≥ 2.6.0.0 and Gen3 ≥ 3.1.0.0, with the retried loopback dummy-frame fallback
    for older adapters. send() probes controller health at most twice a second
    and raises CanOperationError while bus-off instead of silently discarding
    frames, or recovers and retries once when auto_recover_bus_off=True. The
    firmware version is read at open and shown in channel_info.
  • Hardened interpreter-exit cleanup: open channels are released
    best-effort, closed sessions never touch libusb again, and a wedged reader
    no longer corrupts cleanup.