.. _gs_usb:
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`` or ``channel`` (starting from 0) if using automatic device detection:
::
import can
import usb
dev = usb.core.find(idVendor=0x1D50, idProduct=0x606F)
bus = can.Bus(interface="gs_usb", channel=dev.product, index=0, bitrate=250000)
bus = can.Bus(interface="gs_usb", channel=0, bitrate=250000) # same
Alternatively, pass ``bus`` and ``address`` to open a specific device. The parameters can be got by ``pyusb`` as shown below:
.. code-block:: python
import usb
import can
dev = usb.core.find(idVendor=0x1D50, idProduct=0x606F)
bus = can.Bus(
interface="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, WinUSB and libusbK are both supported. Devices with WCID (Windows Compatible ID) descriptors,
such as candleLight firmware, will automatically use WinUSB without any additional driver installation.
Alternatively, a tool such as `Zadig `_ can be used to set the USB device driver to
either ``WinUSB`` or ``libusbK``.
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
---
.. autoclass:: can.interfaces.gs_usb.GsUsbBus
:members: