Skip to content

Releases

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 13:36
af6c3fc

Date: 2026-11-06
Previous release: v0.6.0

Container contract 1.4: additions only, every v0.6.0 consumer keeps working.

Added

  • The version document says whether the image is an independent
    implementation (independentEngine); every adapter here declares true,
    and results.json takes independent from it.
  • OT Fabric's own stack, go-canbus, behind the same contract:
    ghcr.io/otfabric/canbus-interop-otfabric (adapter otfabric), so other
    stacks can test against it. It is not a reference and not in this release:
    the manual Own stack (go-canbus) workflow builds it from the latest
    go-canbus release, tests it against the reference images of the latest
    release and publishes it under go-canbus versions
    (own/go-canbus/README.md).
  • scripts/lib.sh (image_of, ADAPTER_IMAGE_<adapter>) and
    scripts/interop.sh <adapter>..., the entry point of the cross-stack
    self-test (make interop; make selftest stays as its alias).
  • The dbc suite checks any further codec against both oracles: each result
    must equal that of cantools or canmatrix.
  • REQUIREMENTS.md (R1, repository isolation), checked by CI.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.7.0 sha256:3e4205d83fbef4cae75d3cfbce62acad8ba7fa630fc92d813cd601cb47de8711
ghcr.io/otfabric/canbus-interop-pythoncan:v0.7.0 sha256:856630670a2555c33f08d668c7c1d60dab1520f6fb9ec997a349aa98492892fb
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.7.0 sha256:b276be238c81d9ba07ebf98990ede1662dfa1934cc67d3d6e6153d1e1e8643c0
ghcr.io/otfabric/canbus-interop-scapy:v0.7.0 sha256:7a00c77fe0f9053d3c9e0599b6acdcc7173230663bd402a1cb9348747db6f011
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.7.0 sha256:fac7bc71813f5b07353604ca70b6ef2bca87700c8f88a328d8c6750d371ac73f
ghcr.io/otfabric/canbus-interop-cantools:v0.7.0 sha256:baf73da0bce6dda31ed6f262d94065e471935ebae2e96b54f6d08dde96c5478e
ghcr.io/otfabric/canbus-interop-canmatrix:v0.7.0 sha256:1139bf9dba5717c27254764aa6a703a8bb9bb4a94f7ceacdc57af8834bb093ed

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 11:28

Date: 2026-10-31
Previous release: v0.5.0

Added

  • Adds results.json in the interop-result-v1 format.
  • Policy 1.2: build output in bin/ and release/, and shared CI at v3.3.0.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.6.0 sha256:647a2f8a0155bb322a5069c63d0158097f504675553090c0c439fd5c0fdf95f4
ghcr.io/otfabric/canbus-interop-pythoncan:v0.6.0 sha256:22f466b4ca9591cad3e483669b275bfa6cc4b340cb8288cbaa037c66be7af0df
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.6.0 sha256:2c525da8ec4119faa42462f8e968a73f1ff968042085d93ebe20c46684d6b204
ghcr.io/otfabric/canbus-interop-scapy:v0.6.0 sha256:53bad2e5d29c4bdd4be46cfdf48014c15e32669f344c34341221f97275a24d1e
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.6.0 sha256:5874f0531ad02cd1efc619020f22034cda842bc64eeb0ff175630b4fe70c28ba
ghcr.io/otfabric/canbus-interop-cantools:v0.6.0 sha256:5489f766adcf54b2b1fb986b1e70fcaafff5ac3fcd57c67577aa0ce43a965c80
ghcr.io/otfabric/canbus-interop-canmatrix:v0.6.0 sha256:b41694fac10643f9e345b6191eb1156fe4bb325e2905702e6df6f36f52148647

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 15:21
351bc42

Date: 2026-10-28
Previous release: v0.4.0

Container contract 1.3: additions only, every v0.4.0 consumer keeps working.

  • CAN XL (canutils): frame documents
    marked "xl": true (priority, VCID, SEC and RRS flags, SDT, acceptance
    field, 1..2048 data bytes), --xl on send, receive and capture,
    capability xl. can-utils v2025.01's cansend and candump carry the frames
    on an interface with the CAN XL MTU, passing VCIDs through; this needs
    Linux ≥ 6.9 (cansend refuses CAN XL interfaces without
    CAN_RAW_XL_VCID_OPTS). The other adapters refuse --xl as
    unsupported (socketcanrs now recognises --xl to do so rather than
    rejecting an unknown flag).
  • Fixture fixtures/frames/xl.jsonl: six CAN XL frames (priorities 0
    and 0x7FF, SEC and RRS, SDT, AF, VCIDs 0x42 and 0xFF, 1 to 2048 bytes).
  • Self-test suite xl, on vcanxl0 (mtu 2060, created by make vcan):
    the fixture between every pair with the feature, CAN XL frames hidden from
    a receiver without --xl, --xl on an interface without the CAN XL MTU
    (exit 4), refusal by adapters without the feature (exit 2).
  • canutils receive and capture count the frames they accept instead of
    using candump -n: candump also counts CAN FD and CAN XL frames that a
    receiver without --fd or --xl drops, so such a receiver could end
    with fewer frames than asked for. candump now runs with -L (flushed log
    lines on stdout); capture writes the accepted lines.

v0.4.0

Date: 2026-10-28
Previous release: v0.3.0

Fixtures only: container contract 1.2 and every image are unchanged in
behaviour (rebuilt and re-tagged).

  • fixtures/arxml/multiplexed.arxml: two MULTIPLEXED-I-PDUs — a 4-bit
    Intel selector with a static part and three dynamic alternatives (one
    initial), an 8-bit Motorola selector with two — with decode vectors for
    every selector code plus an undescribed one, and encode vectors.
    Generated by scripts/gen-arxml-fixtures.py.
  • Oracle coverage. cantools 45.1.1 reads multiplexed PDUs (selector
    <frame>_selector1, alternatives multiplexed by SELECTOR-FIELD-CODE, the
    static part always present); canmatrix 1.3.3 reads only the selector. The
    self-test checks each oracle against three probe frames worked out by
    hand: arxml-multiplexed-cantools must pass, arxml-multiplexed-canmatrix
    is recorded as known. See docs/FIXTURES.md.
  • scripts/validate-fixtures.py follows multiplexed PDUs when it checks the
    encode vectors' signal names.

v0.3.0

Date: 2026-10-28
Previous release: v0.2.0

Container contract 1.2: additions only, every v0.2.0 consumer keeps working.

  • slcan interfaces (pythoncan): send and receive accept --interface slcan:<url>, python-can 4.6.1's slcan interface (LAWICEL ASCII, the
    protocol of CANable-type serial adapters) over a pyserial URL such as
    slcan:socket://127.0.0.1:20000. A consumer plays the adapter on a TCP
    port (go-canbus's slcan transport does) and checks frames both ways
    without a CAN interface. CAN FD as d/D/b/B records. slcan has no
    error state indicator, error frames, echo or filters: those requests end
    with exit 2 (unsupported). Capability slcan.
  • The pythoncan image adds pyserial 3.5 (BSD-3-Clause, pinned like every
    package).
  • The pythoncanisotp adapter gives its CAN socket a 1 MiB receive buffer:
    a 4095-byte message at STmin 0 (585 frames) overflowed the default one in
    a slow microVM (self-test mf-4095, intermittent).
  • Self-test suite slcan: two python-can slcan clients joined by a TCP
    relay exchange the standard, extended, remote, CAN FD and burst
    fixtures; ESI and error frames are refused.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.5.0 sha256:589652cdd8ec347904102c3780e53134927f9d9f88d4bae5fc4ccc8d1a43e533
ghcr.io/otfabric/canbus-interop-pythoncan:v0.5.0 sha256:e908aae2c571163d875d9a03dacad0758ce6794a404f9223ac43d34acc464080
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.5.0 sha256:a2b5996e6ef57cb6b004193f582e375ac0fb9330f1002fc57bae90994763d104
ghcr.io/otfabric/canbus-interop-scapy:v0.5.0 sha256:2d4a2b6598e43db1732e7dd9f817dae6b61e2ae5d974d0fef06cd9f07f9e38a5
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.5.0 sha256:7f2e8d9f22c71d757b13ddc0e804b6ef39a23a720f9d80bd5cf71a42de1c88ae
ghcr.io/otfabric/canbus-interop-cantools:v0.5.0 sha256:b4cca620e311b57d4bd26df45ab7b9153b8a784e57f037a99ca8cf6e658a5434
ghcr.io/otfabric/canbus-interop-canmatrix:v0.5.0 sha256:428cdbdb832148c93a95c18bc274a9293fcd2e4f311362ee61b430fa6e7ffeda

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 09:47
2d44d39

Date: 2026-10-28
Previous release: v0.3.0

Fixtures only: container contract 1.2 and every image are unchanged in
behaviour (rebuilt and re-tagged).

  • fixtures/arxml/multiplexed.arxml: two MULTIPLEXED-I-PDUs — a 4-bit
    Intel selector with a static part and three dynamic alternatives (one
    initial), an 8-bit Motorola selector with two — with decode vectors for
    every selector code plus an undescribed one, and encode vectors.
    Generated by scripts/gen-arxml-fixtures.py.
  • Oracle coverage. cantools 45.1.1 reads multiplexed PDUs (selector
    <frame>_selector1, alternatives multiplexed by SELECTOR-FIELD-CODE, the
    static part always present); canmatrix 1.3.3 reads only the selector. The
    self-test checks each oracle against three probe frames worked out by
    hand: arxml-multiplexed-cantools must pass, arxml-multiplexed-canmatrix
    is recorded as known. See docs/FIXTURES.md.
  • scripts/validate-fixtures.py follows multiplexed PDUs when it checks the
    encode vectors' signal names.

v0.3.0

Date: 2026-10-28
Previous release: v0.2.0

Container contract 1.2: additions only, every v0.2.0 consumer keeps working.

  • slcan interfaces (pythoncan): send and receive accept --interface slcan:<url>, python-can 4.6.1's slcan interface (LAWICEL ASCII, the
    protocol of CANable-type serial adapters) over a pyserial URL such as
    slcan:socket://127.0.0.1:20000. A consumer plays the adapter on a TCP
    port (go-canbus's slcan transport does) and checks frames both ways
    without a CAN interface. CAN FD as d/D/b/B records. slcan has no
    error state indicator, error frames, echo or filters: those requests end
    with exit 2 (unsupported). Capability slcan.
  • The pythoncan image adds pyserial 3.5 (BSD-3-Clause, pinned like every
    package).
  • The pythoncanisotp adapter gives its CAN socket a 1 MiB receive buffer:
    a 4095-byte message at STmin 0 (585 frames) overflowed the default one in
    a slow microVM (self-test mf-4095, intermittent).
  • Self-test suite slcan: two python-can slcan clients joined by a TCP
    relay exchange the standard, extended, remote, CAN FD and burst
    fixtures; ESI and error frames are refused.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.4.0 sha256:ff087fe538519f3b0635484309862b84e60f939b73d2a6f4c06bdf04b0c2918c
ghcr.io/otfabric/canbus-interop-pythoncan:v0.4.0 sha256:25d4a94710202e0cd3def0b637b8fdf9493a943a0609a43cad405307109d893b
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.4.0 sha256:79e7a52cf1a7a5474e84afb3ccfb531b75549c6f1d388b5de3f6f9a4e3be1b6b
ghcr.io/otfabric/canbus-interop-scapy:v0.4.0 sha256:2e1b8871a4d08e32ee80411af338edc968771911eaf1fdec358b6fa4861e529c
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.4.0 sha256:e7cdfa55e1e465f622ccfa524ba5da4f62a677689e606be1df523f8f05663720
ghcr.io/otfabric/canbus-interop-cantools:v0.4.0 sha256:f93f9e1ab882aa8a323c91df77936e64c355ec621e241cb37bac4fe0c37193bc
ghcr.io/otfabric/canbus-interop-canmatrix:v0.4.0 sha256:1afbf9eb61f3d7c9400bbc1f8d2b23e4af6c3fe6ecd666d2df32d3cfe6180e54

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 04:50
695e223

Date: 2026-10-28
Previous release: v0.2.0

Container contract 1.2: additions only, every v0.2.0 consumer keeps working.

  • slcan interfaces (pythoncan): send and receive accept --interface slcan:<url>, python-can 4.6.1's slcan interface (LAWICEL ASCII, the
    protocol of CANable-type serial adapters) over a pyserial URL such as
    slcan:socket://127.0.0.1:20000. A consumer plays the adapter on a TCP
    port (go-canbus's slcan transport does) and checks frames both ways
    without a CAN interface. CAN FD as d/D/b/B records. slcan has no
    error state indicator, error frames, echo or filters: those requests end
    with exit 2 (unsupported). Capability slcan.
  • The pythoncan image adds pyserial 3.5 (BSD-3-Clause, pinned like every
    package).
  • The pythoncanisotp adapter gives its CAN socket a 1 MiB receive buffer:
    a 4095-byte message at STmin 0 (585 frames) overflowed the default one in
    a slow microVM (self-test mf-4095, intermittent).
  • Self-test suite slcan: two python-can slcan clients joined by a TCP
    relay exchange the standard, extended, remote, CAN FD and burst
    fixtures; ESI and error frames are refused.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.3.0 sha256:8536bd28851f9d410a96583247d829d1eff1b4aba4fcb881d55f1a115493bfaf
ghcr.io/otfabric/canbus-interop-pythoncan:v0.3.0 sha256:995a174dd744c99059846633830f33531fb680dc2d41bf54bf93d11f973b7281
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.3.0 sha256:266666c1e97c743c645eea31898e2bf66c553e8b848b9d2b386f5cc1929e43ef
ghcr.io/otfabric/canbus-interop-scapy:v0.3.0 sha256:87066ad2c5379a66b4b4a6c40df3548c562e576d7af12699701b7a6e4e34a223
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.3.0 sha256:7a0e7b7af8d74a2f23a2ee355aacbe10b29d341e87e00c3bfd9754b9f89b612e
ghcr.io/otfabric/canbus-interop-cantools:v0.3.0 sha256:e802d2dd12322ada13b61bc9867067cd98c7319c7c14425206be1121f7ac00dc
ghcr.io/otfabric/canbus-interop-canmatrix:v0.3.0 sha256:90bdd6c2735064dad211c1154ada5171fd6f16865a08378a4b0b2ebd9f850466

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 00:19
9f911d2

Date: 2026-10-28
Previous release: v0.1.0

Container contract 1.1: additions only, every v0.1.0 consumer keeps working.

  • log-convert (pythoncan): CAN traces through python-can 4.6.1's own
    readers and writers: Vector ASC, Vector BLF, PEAK TRC, CSV, candump, and
    the contract's frame documents (.jsonl, lossless). Capabilities
    logAsc, logBlf, logTrc, logCsv. What each format keeps is measured
    in docs/LOG_FORMATS.md: BLF is lossless; ASC, TRC,
    CSV and python-can's candump writer lose the frame kinds listed there.
    New fixtures fixtures/logs/: frames written by python-can as ASC, BLF
    and TRC with python-can's reading of each.
  • ARXML: cantools and canmatrix decode and encode AUTOSAR 4 ARXML
    (--db *.arxml, capability arxml), canmatrix converts it to DBC. New
    fixtures fixtures/arxml/ (generated by scripts/gen-arxml-fixtures.py):
    Intel and Motorola signals, standard, extended and CAN FD frames, LINEAR,
    TEXTTABLE, SCALE_LINEAR_AND_TEXTTABLE and IDENTICAL compu methods, signed
    (2C) base types, init values. Both oracles agree on every vector. Neither
    applies a PDU's START-POSITION inside its frame (fixture
    pdu-offset.arxml, reported as known).
  • Pins: cantools 45.1.0 → 45.1.1. New weekly Upstream workflow
    (scripts/latest-upstream.py): keeps the issue "Upstream releases: pins
    behind the latest" open while a pin or a base image digest is behind;
    never changes a pin.
  • Self-test: suites dbc (now with the ARXML fixtures) and logs
    (new). scripts/chroot-run runs the exported image file systems with
    chroot where no Docker daemon is, and scripts/microvm-isotp.sh runs the
    ISO-TP suite in a virtme-ng microVM with a stock Ubuntu kernel: see
    TESTING.md.

Images (multi-arch, linux/amd64 and linux/arm64):
ghcr.io/otfabric/canbus-interop-{canutils,pythoncan,socketcanrs,scapy,pythoncanisotp,cantools,canmatrix}:v0.2.0.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.2.0 sha256:f50df2dedd63575a1b91b58b379bfe2cc266ff0a9ca1058f7b497a742ed7b7cb
ghcr.io/otfabric/canbus-interop-pythoncan:v0.2.0 sha256:f29e20aa79d889166e6f35277907ee33b3c01b32b6f726a86c0648319f8ec204
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.2.0 sha256:cf07b3b0ba34204c61aa95ec6cca63ef4c863f5a97bf77d141e35998ac878ff2
ghcr.io/otfabric/canbus-interop-scapy:v0.2.0 sha256:2e3d8136f97a0ca764c80796673da77a501fb9783b55f8f9476f414ae10b16c0
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.2.0 sha256:e71401d61e289d0f3ab2248791d19d439498a42188facf93ca997543891251b2
ghcr.io/otfabric/canbus-interop-cantools:v0.2.0 sha256:56baa64227ad282296bd62e25a01298f0d492a71fb218388a1a4a9e7bd47f0ee
ghcr.io/otfabric/canbus-interop-canmatrix:v0.2.0 sha256:8024a5c03911116bd27492ae8c237a9f79855105e46518180eb983813dfb7a33

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 21:52
a7af336

Date: 2026-10-27
Previous release: none

First release of canbus-interop.

  • Container contract 1.0 (docs/CONTAINER_CONTRACT.md) and JSON Schemas 1.0.
  • Images: canbus-interop-canutils (can-utils v2025.01; kernel CAN_RAW and
    CAN_ISOTP), -pythoncan (python-can 4.6.1), -socketcanrs (socketcan
    4.0.0), -scapy (Scapy 2.8.0), -pythoncanisotp (python-can-isotp 2.0.7),
    -cantools (cantools 45.1.0), -canmatrix (canmatrix 1.3.3), for
    linux/amd64 and linux/arm64.
  • Fixtures: frames (standard, extended, remote, every FD length, ESI, error
    frames, a 2000-frame sequence), seven DBC databases with decode and encode
    vectors, a KCD network.
  • Self-test on vcan: raw CAN pairs, filters, loopback, receive-own, error
    frames, multi-consumer, capture/replay, malformed input, interface
    down/up; ISO-TP kernel ↔ python-can-isotp; cantools ↔ canmatrix.

Images

Image Digest
ghcr.io/otfabric/canbus-interop-canutils:v0.1.0 sha256:c4d541a178b7bedec714136c3b01897a722a06cefad4c39d6fde3afbe8b7f6de
ghcr.io/otfabric/canbus-interop-pythoncan:v0.1.0 sha256:11178bac2eb2432acb1f9620dcb4f6945ceaacaf8472056783b776cf6efd99f9
ghcr.io/otfabric/canbus-interop-socketcanrs:v0.1.0 sha256:2d620fbb94e2af90ba10616bff8a3abbc6c500309ee9042e495ef1d8a15a0d97
ghcr.io/otfabric/canbus-interop-scapy:v0.1.0 sha256:3eb6de2ca15c7849f2a4a76d21d79e297d92d29355c1e092686b2e0b2103a751
ghcr.io/otfabric/canbus-interop-pythoncanisotp:v0.1.0 sha256:130e54cab8e665dd917ce577ffced6d9870d6769e2f80d8beeb87ae9ff2c2492
ghcr.io/otfabric/canbus-interop-cantools:v0.1.0 sha256:67265f75d15d9155e877e50e92e51c530d88dce63600df24ad993e2717fa9c93
ghcr.io/otfabric/canbus-interop-canmatrix:v0.1.0 sha256:42f14775360e86ff710496be5c1eae2397ae089ec02d2c4a6082c8dba0798878

manifest.json lists the images by digest for pinning. The images contain MIT, BSD, LGPL-3.0 and GPL-2.0 software and are for interoperability testing; see THIRD_PARTY_NOTICES.md.