Skip to main content

python-can-candle

PyPI - Version Python Version from PEP 621 TOML GitHub Actions Workflow Status

Full featured CAN driver for Geschwister Schneider USB/CAN devices.

Support Multichannel and CAN FD.

Installation

pip install python-can-candle

Example

Using with python-can

This library implements the plugin interface in python-can, aiming to replace the gs_usb interface within it.

import can
from candle import CandleBus

# Create a CandleBus instance in the python-can API.
with can.Bus(interface='candle', channel=0, ignore_config=True) as bus:
    # Bus is an instance of CandleBus.
    assert isinstance(bus, CandleBus)

Set ignore_config=True is recommended to prevent potential type casts.

Configurations

You can configure the device by appending the following parameters when creating the can.Bus.

  • bitrate: int, defaults to 1000000
  • sample_point: float, defaults to 87.5
  • data_bitrate: int, defaults to 5000000
  • data_sample_point: float, defaults to 87.5
  • fd: bool, defaults to False
  • loop_back: bool, defaults to False
  • listen_only: bool, defaults to False
  • triple_sample: bool, defaults to False
  • one_shot: bool, defaults to False
  • bit_error_reporting: bool, defaults to False
  • termination: bool or None, defaults to None

For example, create a canfd device with 1M bitrate and 5M data bitrate.

with can.Bus(interface='candle', channel=0, fd=True, bitrate=1000000, data_bitrate=5000000, ignore_config=True) as bus:
    ...

Connect multiple devices

When connecting multiple devices at the same time, you can set channel to serial_number:channel to create the specified can.Bus.

with can.Bus(interface='candle', channel='208233AD5003:0', ignore_config=True) as bus:
    ...

You can also select devices by appending some additional parameters.

  • vid: int, vendor ID
  • pid: int, product ID
  • manufacture: str, manufacture string
  • product: str, product string
  • serial_number: str, serial number

Device Discovery

Detect all available channels.

channels = can.detect_available_configs('candle')
print(channels)

Open multiple channels of a single device

This driver now supports opening multiple channels from the same device in a single CandleBus instance.

  • Pass a list of channel indices belonging to the same device, e.g. channel=[0, 1].
  • For multiple devices, pass serial_number=SERIAL to select the device by serial number.
  • Configure each channel separately with channel_configs.

Create a CandleBus instance with multiple channels.

bus = CandleBus(channel=[0, 1], serial_number='208233AD5003', bitrate=1000000)

Create and configure channels with different bitrates.

bus = CandleBus(channel=[0, 1], serial_number='208233AD5003', channel_configs={0: {'bitrate': 500000}, 1: {'bitrate': 1000000})

Send to a specific channel.

msg = can.Message(arbitration_id=0x100, channel=1, data=[0x1, 0x2, 0x3, 0x4])
bus.send(msg)

Send to multiple channels.

msg = can.Message(arbitration_id=0x100, channel=[0, 1], data=[0x1, 0x2, 0x3, 0x4])
bus.send(msg)

Distinguish channels in received messages.

msg = bus.recv()
print(f'Received message on channel {msg.channel}.')

Notes on multi-channel behavior

  • send() routes frames to the target channel based on msg.channel (int, "SERIAL:idx", or Sequence[int]).
  • recv() returns Message.channel set to the source channel number.
  • When msg.channel is not set, send() defaults to the first channel.

Performance

The communication layer is implemented based on pybind11 with libusb. You can run the following scripts to evaluate the performance.

For single-channel performance:

python -m candle.stress

For multi-channel performance:

python -m candle.stress_multichannel

Reference

Metadata

Release files for python-can-candle 1.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-can-candle 1.2.4
File Size Uploaded
python_can_candle-1.2.4.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-can-candle 1.2.4
File Interpreter ABI Platform
python_can_candle-1.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 56.7 kB

Release files / python_can_candle-1.2.4.tar.gz

Download URL python_can_candle-1.2.4.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f5a1d016579045e596931fd5377102816d9f8e891586e07ac19458588f8a80f2
BLAKE2b-256 checksum
How to use checksums
c516afc489f64a7128dda1eb880ba245a7eb63c3ff9c336641d5550df7b501eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release files / python_can_candle-1.2.4-py3-none-any.whl

Download URL python_can_candle-1.2.4-py3-none-any.whl
Size 26.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
09cf2942b1e9139c27552788c7a2cea45c37c0ecfd48dbfa03b2d56fe626111b
BLAKE2b-256 checksum
How to use checksums
79f48e115593d7e2013e97c88038c3f8fbfd1a8325ce91cc80892d6c7aa9b6f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.4 This release

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page