Geschwister Schneider and candleLight#

Windows/Linux/Mac CAN driver based on usbfs or WinUSB WCID for Geschwister Schneider USB/CAN devices and candleLight USB CAN interfaces.

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

Usage: pass device index (starting from 0) if using automatic device detection:

import can

bus = can.Bus(bustype="gs_usb", channel=dev.product, index=0, bitrate=250000)

Alternatively, pass bus and address to open a specific device. The parameters can be got by pyusb as shown below:

import usb
import can

dev = usb.core.find(idVendor=0x1D50, idProduct=0x606F)
bus = can.Bus(
    bustype="gs_usb",
    channel=dev.product,
    bus=dev.bus,
    address=dev.address,
    bitrate=250000
)

Supported devices#

Geschwister Schneider USB/CAN devices and bytewerk.org candleLight USB CAN interfaces such as candleLight, canable, cantact, etc.

Supported platform#

Windows, Linux and Mac.

Note

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 USB device driver to libusb-win32.

Supplementary Info#

The firmware implementation for Geschwister Schneider USB/CAN devices and candleLight USB CAN can be found in candle-usb/candleLight_fw. The Linux kernel driver can be found in linux/drivers/net/can/usb/gs_usb.c.

The gs_usb interface in python-can relies on upstream gs_usb package, which can be found in https://pypi.org/project/gs-usb/ or https://github.com/jxltom/gs_usb.

The gs_usb package uses pyusb as backend, which brings better cross-platform compatibility.

Note: The bitrate 10K, 20K, 50K, 83.333K, 100K, 125K, 250K, 500K, 800K and 1M are supported in this interface, as implemented in the upstream gs_usb package’s set_bitrate method.

Warning

Message filtering is not supported in Geschwister Schneider USB/CAN devices and bytewerk.org candleLight USB CAN interfaces.

Bus#

class can.interfaces.gs_usb.GsUsbBus(channel, bitrate, index=None, bus=None, address=None, can_filters=None, **kwargs)[source]#
Parameters
  • channel – usb device name

  • index – device number if using automatic scan, starting from 0. If specified, bus/address shall not be provided.

  • bus – number of the bus that the device is connected to

  • address – address of the device on the bus it is connected to

  • can_filters – not supported

  • bitrate – CAN network bandwidth (bits/s)

send(msg, timeout=None)[source]#

Transmit a message to the CAN bus.

Parameters
  • msg (Message) – A message object.

  • timeout (Optional[float]) – timeout is not supported. The function won’t return until message is sent or exception is raised.

Raises

CanOperationError – if the message could not be sent

shutdown()[source]#

Called to carry out any interface specific cleanup required in shutting down a bus.