IXXAT Virtual CAN Interface

Interface to IXXAT Virtual CAN Interface V3 SDK. Works on Windows.


The Linux ECI SDK is currently unsupported, however on Linux some devices are supported with Socketcan.

The send_periodic() method is supported natively through the on-board cyclic transmit list. Modifying cyclic messages is not possible. You will need to stop it, then start a new periodic message.


class can.interfaces.ixxat.IXXATBus(channel, can_filters=None, **config)[source]

Bases: can.bus.BusABC

The CAN Bus implemented for the IXXAT interface.

  • channel (int) – The Channel id to create this bus with.
  • can_filters (list) –

    A list of dictionaries each containing a “can_id” and a “can_mask”.

    >>> [{"can_id": 0x11, "can_mask": 0x21}]
  • UniqueHardwareId (int) – UniqueHardwareId to connect (optional, will use the first found if not supplied)
  • bitrate (int) – Channel bitrate in bit/s

Flushes the transmit buffer on the IXXAT


Read a message from IXXAT device.

send_periodic(msg, period, duration=None)[source]

Send a message using built-in cyclic transmit list functionality.

class can.interfaces.ixxat.canlib.CyclicSendTask(scheduler, msg, period, duration, resolution)[source]

Bases: can.broadcastmanager.LimitedDurationCyclicSendTaskABC, can.broadcastmanager.RestartableCyclicTaskABC

A message in the cyclic transmit list.


Pause transmitting message (keep it in the list).


Start transmitting message (add to list if needed).


Stop transmitting message (remove from list).

Configuration file

The simplest configuration file would be:

interface = ixxat
channel = 0

Python-can will search for the first IXXAT device available and open the first channel. interface and channel parameters are interpreted by frontend can.interfaces.interface module, while the following parameters are optional and are interpreted by IXXAT implementation.

  • bitrate (default 500000) Channel bitrate
  • UniqueHardwareId (default first device) Unique hardware ID of the IXXAT device
  • rxFifoSize (default 16) Number of RX mailboxes
  • txFifoSize (default 16) Number of TX mailboxes
  • extended (default False) Allow usage of extended IDs


The IXXAT BusABC object is a farly straightforward interface to the IXXAT VCI library. It can open a specific device ID or use the first one found.

The frame exchange do not involve threads in the background but is explicitly instantiated by the caller.

  • recv() is a blocking call with optional timeout.
  • send() is not blocking but may raise a VCIError if the TX FIFO is full

RX and TX FIFO sizes are configurable with rxFifoSize and txFifoSize options, defaulting at 16 for both.

The CAN filters act as a “whitelist” in IXXAT implementation, that is if you supply a non-empty filter list you must explicitly state EVERY frame you want to receive (including RTR field). The can_id/mask must be specified according to IXXAT behaviour, that is bit 0 of can_id/mask parameters represents the RTR field in CAN frame. See IXXAT VCI documentation, section “Message filters” for more info.


Module uses can.ixxat logger and at DEBUG level logs every frame sent or received. It may be too verbose for your purposes.