Software support for CANtact devices. Includes a driver (see driver/
), APIs, and a cross-platform command line interface.
CANtact Pro is currently a pre-launch project on CrowdSupply. You can subscribe on the product page to get updates about the hardware release.
This tool should work fine with other CANtact/gs_usb compatible devices such as CANable.
The CLI and driver are built using cargo
, which can be installed using rustup.
Once cargo
is installed, use it to build and install the can
binary:
git clone https://github.com/linklayer/cantact
cd cantact
cargo install --path .
On Linux, only root can access the device by default. This results in a DeviceNotFound
error when trying to access the device as a normal user.
To allow access for all users, create a file at /etc/udev/rules.d/99-cantact.rules
which contains:
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="606f", MODE="0666"
Then reload the udev rules:
sudo udevadm control --reload-rules
sudo udevadm trigger
The CLI is invoked using the can
binary:
can help
can 0.1.0
Eric Evenchick <eric@evenchick.com>
Command line utilities for CANtact devices
USAGE:
can [FLAGS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-v, --verbose Print verbose debugging information
-V, --version Prints version information
SUBCOMMANDS:
cfg Set device configurations
dump Receive and display CAN frames
help Prints this message or the help of the given subcommand(s)
send Send a single CAN frame
The can cfg
command is used to set the bitrate and other device settings. Once set, other commands will use these options.
For example, to set channels 0 and 1 to 500000 kbps, then dump all frames on all channels:
can cfg --channel 0 --bitrate 500000
can cfg --channel 1 --bitrate 500000
can dump
Use can help [subcommand]
for additional documentation.
The driver can be used from Rust by installing the cantact-driver
crate.
Documentation for the crate can be found on docs.rs.
CANtact supports Python 3.5+ on Windows, macOS, and Linux. The Python modules are hosted on PyPI.
Installation requires pip 19.0+
(for manylinux2010 wheels).
Python end-users should not use this repository directly. Instead, install Python support using pip
:
python3 -m pip -U pip
python3 -m pip install cantact
This will attempt to install a binary distribution for your system. If none exists, it will attempt to build
from source. This requires nightly rust, which can be enabled by running rustup default nightly
before
installing.
See the examples/
folder for Python examples. python-can supports
CANtact, and is recommended over using the cantact
module directly. To install CANtact, python-can
,
and run a test:
python3 -m pip install cantact git+https://github.com/ericevenchick/python-can@cantact
can_logger.py -i cantact -c 0 -b 500000
Building Python support is only required if you want to make modifications to the cantact
Python module, or if
you are using a platform that does not have packaged support.
Python support is implemented using PyO3, and is gated by the python
feature.
Thanks to rust-setuptools, the cantact
Python module can be built
like any other Python module using setuptools
. PyO3 requires nightly Rust, which can be configured using rustup override
.
cd driver
rustup override set nightly
python setup.py build
Python builds for Windows, macOS, and manylinux are automated using Github Actions. Tagged releases are automatically pushed to PyPI.
C / C++ support is provided by the driver. This is currently used to implement BUSMASTER support on Windows.