CANalyst-II is a USB to CAN Analyzer device produced by Chuangxin Technology.

Install: pip install "python-can[canalystii]"

Supported platform#

Windows, Linux and Mac.


The backend driver depends on pyusb so a pyusb backend driver library such as libusb must be installed. On Windows a tool such as Zadig can be used to set the Canalyst-II USB device driver to libusb-win32.


Multiple Channels#

The USB protocol transfers messages grouped by channel. Messages received on channel 0 and channel 1 may be returned by software out of order between the two channels (although inside each channel, all messages are in order). The timestamp field of each message comes from the hardware and shows the exact time each message was received. To compare ordering of messages on channel 0 vs channel 1, sort the received messages by the timestamp field first.

Backend Driver#

The backend driver module canalystii <> must be installed to use this interface. This open source driver is unofficial and based on reverse engineering. Earlier versions of python-can required a binary library from the vendor for this functionality.


class can.interfaces.canalystii.CANalystIIBus(channel=(0, 1), device=0, bitrate=None, timing=None, can_filters=None, rx_queue_size=None, **kwargs)[source]#
  • channel (int | Sequence[int] | str) – Optional channel number, list/tuple of multiple channels, or comma separated string of channels. Default is to configure both channels.

  • device (int) – Optional USB device number. Default is 0 (first device found).

  • bitrate (int | None) – CAN bitrate in bits/second. Required unless the bit_timing argument is set.

  • timing (BitTiming | BitTimingFd | None) – Optional BitTiming instance to use for custom bit timing setting. If this argument is set then it overrides the bitrate argument. The f_clock value of the timing instance must be set to 8_000_000 (8MHz) for standard CAN. CAN FD and the BitTimingFd class are not supported.

  • can_filters (Sequence[CanFilter | CanFilterExtended] | None) – Optional filters for received CAN messages.

  • rx_queue_size (int | None) – If set, software received message queue can only grow to this many messages (for all channels) before older messages are dropped

  • kwargs (Dict[str, Any]) –