Controller Area Network (CAN) Stack Improvement: BeagleBone Black D-CAN Driver Implementation [GSoC 2026]

As for real hardware emulation on QEMU, the mainline QEMU should support CTU CAN FD on PCI/PCIe, SJA1000 on PCI/PCIe, XCAN on Zynq UltraScale and Versal on all host platforms, GNU/Linux, BSD, MacOS, Windows but the connection to the host system CAN bus is supported only on GNU/Linux over SocketCAN till now.

This means that two controller setup on one bus and testing of the frames sent between them should be no problem on any host system. For CTU CAN FD

$QEMU \
      -object can-bus,id=canbus0-bus \
      -device kvaser_pci,canbus=canbus0-bus \
      -device ctucan_pci,canbus0=canbus0-bus,canbus1=canbus0-bus \
      ...

The only GNU/Linux specific option is connection to the bus on the host system

      -object can-host-socketcan,if=can0,canbus=canbus0-bus,id=canbus0-socketcan \

it is problematic for CI anyway because you have to have real CAN controller configured and connected to the bus or you need setup virtual CAN bus and controller

modprobe can-raw
modprobe vcan

ip link add dev can0 type vcan
ip link set can0 up

which are privileged operations so again not available in CI and Docker.

So testing of communication between two interfaces from RTEMS against QEMU provided controllers HW is the best option for CI.