Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://linklayer.github.io/cantact
Drivers and Command Line Interface for CANtact tools
https://linklayer.github.io/cantact
Last synced: 3 months ago
JSON representation
Drivers and Command Line Interface for CANtact tools
- Host: GitHub
- URL: https://linklayer.github.io/cantact
- Owner: linklayer
- License: mit
- Created: 2020-06-05T16:34:14.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-01T23:38:19.000Z (over 1 year ago)
- Last Synced: 2024-07-29T01:03:47.598Z (3 months ago)
- Language: Rust
- Homepage: http://cantact.io
- Size: 142 KB
- Stars: 46
- Watchers: 9
- Forks: 11
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-vehicle-security - CANtact - "The Open Source Car Tool" designed to help you hack your car. You can buy one or make your own following the guide here. (Miscellaneous / Episodes)
- awesome-vehicle-security - CANtact - "The Open Source Car Tool" designed to help you hack your car. You can buy one or make your own following the guide here. (Miscellaneous / Episodes)
- AVS-awesome-vehicle-security- - CANtact - "The Open Source Car Tool" designed to help you hack your car. You can buy one or make your own following the guide here. (Podcasts and Episodes / Episodes)
README
# CANtact
[![crates.io](https://img.shields.io/crates/v/cantact?label=cantact)](https://crates.io/crates/cantact)
[![crates.io](https://img.shields.io/crates/v/cantact-driver?label=cantact-driver)](https://crates.io/crates/cantact-driver)
[![PyPI](https://img.shields.io/pypi/v/cantact)](https://pypi.org/project/cantact/)
[![docs.rs](https://docs.rs/cantact-driver/badge.svg)](https://docs.rs/cantact-driver/)
![Rust Build](https://github.com/linklayer/cantact/workflows/Rust/badge.svg)
![Python Build](https://github.com/linklayer/cantact/workflows/Python/badge.svg)Software support for CANtact devices. Includes a driver (see `driver/`), APIs, and a cross-platform command line interface.
## Getting a Device
CANtact Pro is currently a pre-launch project on CrowdSupply. You can subscribe on the [product page](https://www.crowdsupply.com/linklayer-labs/cantact-pro)
to get updates about the hardware release.This tool should work fine with other CANtact/gs_usb compatible devices such as CANable.
## Installing
The CLI and driver are built using `cargo`, which can be installed using [rustup](https://rustup.rs/).
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 .
```### Setting udev Rules (Linux only)
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
```## Command Line Interface
The CLI is invoked using the `can` binary:
```
can helpcan 0.1.0
Eric Evenchick
Command line utilities for CANtact devicesUSAGE:
can [FLAGS] [SUBCOMMAND]FLAGS:
-h, --help Prints help information
-v, --verbose Print verbose debugging information
-V, --version Prints version informationSUBCOMMANDS:
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.
## Rust Support
The driver can be used from Rust by installing the [`cantact-driver` crate](https://crates.io/crates/cantact-driver).
Documentation for the crate can be found on [docs.rs](https://docs.rs/cantact-driver/).## Python Support
CANtact supports Python 3.5+ on Windows, macOS, and Linux. The Python modules are hosted on [PyPI](https://pypi.org/project/cantact/).
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](https://github.com/hardbyte/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
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](https://github.com/PyO3/pyo3), and is gated by the `python` feature.
Thanks to [rust-setuptools](https://github.com/PyO3/setuptools-rust), 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](https://github.com/linklayer/cantact/actions?query=workflow%3APython).
Tagged releases are automatically pushed to PyPI.## C / C++ Support
C / C++ support is provided by the driver. This is currently used to implement [BUSMASTER](https://rbei-etas.github.io/busmaster/)
support on Windows.