├── .github └── workflows │ └── gh-pages.yml ├── .gitignore ├── README.md ├── book.toml └── src ├── SUMMARY.md ├── apis ├── apis.md ├── c.md ├── python.md └── rust.md ├── cantact-pro ├── bootloader-folder.png ├── cantact-pro.jpg ├── enter-bootloader.jpg └── users-guide.md ├── cantact ├── cantact.jpg ├── enter-boot.jpg └── users-guide.md ├── hacking └── hacking.md ├── introduction.md ├── socketcan ├── getting-socketcan.md ├── hw-devices.md ├── isotp.md ├── socketcan.md ├── utilities.md └── virtual-devices.md ├── support └── support.md └── tools ├── busmaster.md ├── cantact-cli.md ├── socketcan.md └── software-tools.md /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: github pages 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-18.04 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: Setup mdBook 15 | uses: peaceiris/actions-mdbook@v1 16 | with: 17 | mdbook-version: '0.3.7' 18 | # mdbook-version: 'latest' 19 | 20 | - run: mdbook build 21 | 22 | - name: Deploy 23 | uses: peaceiris/actions-gh-pages@v3 24 | with: 25 | github_token: ${{ secrets.GITHUB_TOKEN }} 26 | publish_dir: ./book 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | book 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Documentation for CANtact. [Read it here](https://cantact.io). 2 | -------------------------------------------------------------------------------- /book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | authors = ["Eric Evenchick"] 3 | language = "en" 4 | multilingual = false 5 | src = "src" 6 | title = "The CANtact Book" 7 | 8 | [build] 9 | build-dir = "book" 10 | -------------------------------------------------------------------------------- /src/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | - [Introduction](./introduction.md) 3 | - [CANtact Pro User Guide](./cantact-pro/users-guide.md) 4 | - [CANtact User Guide](./cantact/users-guide.md) 5 | - [Software Tools](./tools/software-tools.md) 6 | - [CANtact CLI](./tools/cantact-cli.md) 7 | - [SocketCAN](./tools/socketcan.md) 8 | - [BUSMASTER](./tools/busmaster.md) 9 | - [APIs](./apis/apis.md) 10 | - [Rust](./apis/rust.md) 11 | - [Python](./apis/python.md) 12 | - [C / C++](./apis/c.md) 13 | - [SocketCAN](./socketcan/socketcan.md) 14 | - [Getting SocketCAN](./socketcan/getting-socketcan.md) 15 | - [Hardware Devices](./socketcan/hw-devices.md) 16 | - [Virtual Devices](./socketcan/virtual-devices.md) 17 | - [Utilities](./socketcan/utilities.md) 18 | - [ISOTP](./socketcan/isotp.md) 19 | - [Hacking](hacking/hacking.md) 20 | - [Support](support/support.md) 21 | -------------------------------------------------------------------------------- /src/apis/apis.md: -------------------------------------------------------------------------------- 1 | # APIs 2 | 3 | The CANtact driver provides APIs to allow developers to build custom CAN-enabled applications. 4 | Currently, API support exists for Rust, Python, C, and C++. -------------------------------------------------------------------------------- /src/apis/c.md: -------------------------------------------------------------------------------- 1 | # C / C++ 2 | 3 | The C / C++ API is a work in progress. This API is used to implement support for ETAS BUSMASTER on Windows. It currently only works on Windows. 4 | 5 | Cross-platform support and documentation is a work in progress. -------------------------------------------------------------------------------- /src/apis/python.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | A Python API is implemented by the CANtact driver. This can be used directly, but it is recommended to use 4 | the `python-can` library. The `develop` branch of `python-can` is required to use the command line utilities. 5 | 6 | Install `cantact` and `python-can`: 7 | 8 | ``` 9 | python3 -m pip -U pip 10 | python3 -m pip install cantact 11 | git clone https://github.com/hardbyte/python-can.git 12 | cd python-can 13 | python -m pip install . 14 | ``` 15 | 16 | If no binary release exists for your platform, the driver can be built manually. 17 | For details, see the [README](https://github.com/linklayer/cantact/#building-python-support). 18 | 19 | Once CANtact and `python-can` are installed, the bundled tools can be used. For example, 20 | to log frames on CAN 0 at 500000 kbit/s: 21 | 22 | ``` 23 | can_logger.py -i cantact -c 0 -b 500000 24 | ``` 25 | 26 | ## Examples 27 | 28 | Examples of using the Python API directly and through `python-can` are 29 | [available on Github](https://github.com/linklayer/cantact/tree/master/driver/examples). 30 | -------------------------------------------------------------------------------- /src/apis/rust.md: -------------------------------------------------------------------------------- 1 | # Rust 2 | 3 | The CANtact driver can be used as a Rust library. The library is self-documenting, and documentation for the 4 | latest version can always be found [on docs.rs](https://docs.rs/cantact-driver). -------------------------------------------------------------------------------- /src/cantact-pro/bootloader-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linklayer/cantact-book/3138f1fe6f1bdf09e77ae493ef848c9af89b43ab/src/cantact-pro/bootloader-folder.png -------------------------------------------------------------------------------- /src/cantact-pro/cantact-pro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linklayer/cantact-book/3138f1fe6f1bdf09e77ae493ef848c9af89b43ab/src/cantact-pro/cantact-pro.jpg -------------------------------------------------------------------------------- /src/cantact-pro/enter-bootloader.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linklayer/cantact-book/3138f1fe6f1bdf09e77ae493ef848c9af89b43ab/src/cantact-pro/enter-bootloader.jpg -------------------------------------------------------------------------------- /src/cantact-pro/users-guide.md: -------------------------------------------------------------------------------- 1 | # CANtact Pro User Guide 2 | 3 | ![CANtact Pro](cantact-pro.jpg) 4 | 5 | CANtact Pro is [available from CrowdSupply](https://www.crowdsupply.com/linklayer-labs/cantact-pro) 6 | 7 | ## Getting Started 8 | 9 | Thank you for buying a CANtact Pro 🙂 10 | 11 | To start using CANtact, connect it via USB. Before using, you should update to the latest 12 | firmware following the instructions in this document. 13 | 14 | After updating, the device will work on Linux via SocketCAN. For details, see [SocketCAN](../tools/socketcan.html). 15 | 16 | On all platforms, you can install the CANtact CLI. For details, see [CANtact CLI](../tools/cantact-cli.html). 17 | 18 | For more information on software support, see [Software Tools](../tools/software-tools.html). 19 | 20 | ## Features & Specifications 21 | - 2x CAN Interfaces 22 | - 1x CAN/CAN-FD/SWCAN 23 | - 1x CAN/CAN-FD 24 | - High Speed USB interface (480 Mbit/s) 25 | - Isolation between CAN and USB 26 | - Industry standard DB9 connectors 27 | - Software support for Windows, macOS, and Linux 28 | - Cross-platform USB driver, command line interface, and APIs: 29 | - Python (via [python-can](https://github.com/hardbyte/python-can/)) 30 | - C / C++ 31 | - Rust 32 | - [ETAS BUSMASTER](https://rbei-etas.github.io/busmaster/) support on Windows 33 | - SocketCAN support on Linux 34 | 35 | 36 | ## Pin Assignments 37 | 38 | |Pin | Function | CAN 0 Only? | 39 | |----|----------|-------------| 40 | |1 | | 41 | |2 | CAN - | 42 | |3 | GND | 43 | |4 | SWCAN | Yes 44 | |5 | | 45 | |6 | GND | 46 | |7 | CAN + | 47 | |8 | | 48 | |9 | +12 V In | Yes 49 | 50 | Note that single-wire CAN is only available on the CAN 0 connector. 51 | 52 | ## LED Indicators 53 | 54 | The device has four LEDs, two for each CAN channel. When powered on, the LEDs will blink in sequence. The LED indications during normal operations are shown here. 55 | 56 | |Color | State | Meaning | 57 | |-------|---------|---------| 58 | | Green | Solid | channel enabled, no activity 59 | | Green | Blinking| receive activity 60 | | Red | Solid | channel transmit enabled, no activity 61 | | Red | Blinking| transmit activity 62 | 63 | When using SocketCAN, each CAN interface can be identified by blinking the corresponding LEDs using `ethtool`. This is especially useful when using multiple devices. 64 | 65 | ``` 66 | sudo ethtool --identify can0 67 | ``` 68 | 69 | ## Configuring Permissions on Linux 70 | 71 | By default, root privileges are required to interact with the device. To allow other users to access the device, 72 | create a file at `/etc/udev/rules.d/99-cantact.rules`: 73 | ``` 74 | SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6070", MODE="0666" 75 | ``` 76 | 77 | After creating the file, reload the udev rules: 78 | ``` 79 | sudo udevadm control --reload-rules 80 | sudo udevadm trigger 81 | ``` 82 | 83 | This will make the device accessible to all users. 84 | 85 | ## Flashing Firmware 86 | 87 | 1. Download the newest firmware binary [from Github](https://github.com/linklayer/cantact-pro-fw/releases). 88 | 2. To enter bootloader mode, hold down the button beside the USB connector while connecting the device 89 | to your computer. 90 | 91 | ![Holding the button to enter bootloader mode](enter-bootloader.jpg) 92 | 93 | The device will appear as a USB Mass Storage device with the label `CRP DISABLD`. Open the device. It should contain a single file: `firmware.bin`. 94 | 95 | ![Bootloader Mass Storage Device folder](bootloader-folder.png) 96 | 97 | 3. Delete the `firmware.bin` file from the device. 98 | 4. Copy the downloaded `firmware.bin` file to the folder. 99 | 5. Eject the device 100 | 6. Unplug and reconnect the device. The firmware update is complete! -------------------------------------------------------------------------------- /src/cantact/cantact.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linklayer/cantact-book/3138f1fe6f1bdf09e77ae493ef848c9af89b43ab/src/cantact/cantact.jpg -------------------------------------------------------------------------------- /src/cantact/enter-boot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linklayer/cantact-book/3138f1fe6f1bdf09e77ae493ef848c9af89b43ab/src/cantact/enter-boot.jpg -------------------------------------------------------------------------------- /src/cantact/users-guide.md: -------------------------------------------------------------------------------- 1 | # CANtact 2 | 3 | ![CANtact](cantact.jpg) 4 | 5 | The CANtact device is a single channel USB CAN interface. It can be used to connect to CAN bus systems, including cars, heavy duty vehicles, and industrial automation systems. CANtact works on Linux, OS X, and Windows. 6 | 7 | With a CANtact and an OBD-II to DE9 cable, it is very easy to get onto the OBD-II CAN bus of any CAN enabled vehicle. 8 | 9 | ## Getting Started 10 | 11 | ### Connections & Jumpers 12 | 13 | CANtact uses a USB-B cable to interface with your computer. These cables are commonly used to connect printers as well. 14 | 15 | The DE9 connector of the CANtact allows for two pin mappings for different use cases: 16 | 17 | - Pins 7 (CAN high), 2 (CAN low), and 3 (ground) for standard CAN connections 18 | - Pins 3 (CAN high), 5 (CAN low), and 1 (ground) for use with an OBD-II to DB9 cable. This is compatible with the Sparkfun OBD-II cable. 19 | 20 | The pins can be selected using the jumpers on board. 21 | 22 | The final jumper is for CAN termination. Place the jumper beside the "CTE" marking to place 120 ohms across CAN high and CAN low. This is commonly used in development, when you are only interfacing with a single CAN device. 23 | 24 | ### CandleLight Firmware 25 | To use the tools discussed in this book, you **must ensure your CANtact is running the CandleLight firmware**. The firmware can be [downloaded from Github](https://github.com/linklayer/candleLight_fw/releases/download/cantact-8b2b2b4/gsusb_cantact_8b2b2b4.bin). 26 | 27 | After downloading, follow the steps in [Updating Firmware](#updating-firmware) to perform the update. 28 | 29 | ## Updating Firmware 30 | 31 | The CANtact can be updated over USB. First, you will need to put the device into DFU mode by following these steps: 32 | 33 | 1. Disconnect the USB cable from the CANtact 34 | 2. Connect the two "BOOT" pins 35 | 36 | ![Connecting the BOOT pins](enter-boot.jpg) 37 | 38 | 3. While the pins are connected, plug the USB cable into the CANtact 39 | 4. The CANtact device is now in DFU mode 40 | 41 | The next steps depend on what OS you are using. 42 | 43 | ### Windows 44 | 45 | 1. Install the [ST DfuSe Tool](https://www.st.com/en/development-tools/stsw-stm32080.html) 46 | 2. Open the DfuSe tool 47 | 3. Click "Choose..." and select a DFU firmware file 48 | 4. Check the "Verify after download" box 49 | 5. Click Upgrade 50 | 6. Wait for the "Verify successful !" message at the bottom of the window. 51 | 7. Unplug the USB cable, disconnect the "BOOT" pins, and reconnect the USB cable. The device is now updated! 52 | 53 | ### Linux & macOS 54 | 55 | Flashing on Linux and macOS requires `dfu-util`. 56 | 57 | On macOS, this can be installed from Brew: `brew install dfu-util`. 58 | 59 | On Ubuntu, install dfu-util with: `sudo apt install dfu-util`. 60 | 61 | Once `dfu-util` is installed, use it to flash the device: 62 | ``` 63 | sudo dfu-util --dfuse-address -d 0483:df11 -c 1 -i 0 -a 0 -s 0x08000000 -D FIRMWARE_FILE.bin 64 | ``` 65 | 66 | Once this is complete, unplug the USB cable, disconnect the "BOOT" pins, and reconnect the USB cable. The device is now updated! -------------------------------------------------------------------------------- /src/hacking/hacking.md: -------------------------------------------------------------------------------- 1 | # Hacking 2 | 3 | Want to hack on CANtact? Great! 4 | 5 | All CANtact related development takes place on Github. If you find a bug, please file an issue there. There are several relevant repositories containing code and design files. 6 | 7 | ## CANtact CLI and Driver 8 | 9 | The CANtact CLI and Driver are written in Rust. The repository can be found [on Github](https://github.com/linklayer/cantact). 10 | 11 | ## CANtact Pro 12 | 13 | Design files and firmware for CANtact Pro: 14 | 15 | - [CANtact Pro Hardware](https://github.com/linklayer/cantact-pro-hw) 16 | - [CANtact Pro Firmware](https://github.com/linklayer/cantact-pro-fw) 17 | 18 | ### Hardware 19 | CANtact Pro is designed using the open source [KiCAD EDA](https://kicad-pcb.org/) suite. 20 | 21 | ### Firmware 22 | 23 | The CANtact Pro is powered by an NXP LPC546xx series microcontroller (specifically, the [LPC54616J512BD100](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc54000-cortex-m4-/power-efficient-microcontrollers-mcus-with-advanced-peripherals-based-on-arm-cortex-m4-core:LPC546XX?fpsp=1&tab=Documentation_Tab)). 24 | 25 | NXP provides their [MCUXpresso IDE](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE) 26 | free of charge, which can be used to develop and debug firmware for the device. 27 | 28 | ## CANtact 29 | 30 | Design files and firmware for CANtact: 31 | - [CANtact Hardware Repository](https://github.com/linklayer/cantact-hw) 32 | - [CANtact SLCAN Firmware](https://github.com/linklayer/cantact-fw) 33 | - [candleLight Firmware for CANtact](https://github.com/candle-usb/candleLight_fw) 34 | 35 | -------------------------------------------------------------------------------- /src/introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | This "book" provides documentation for the CANtact hardware devices and related hardware. 4 | It also provides information on some device agnostic software tools including SocketCAN. 5 | 6 | The content here is generated by [mdBook](https://github.com/rust-lang/mdBook), and the 7 | source code is [available on Github](https://github.com/linklayer/cantact-book). 8 | If you find any issues with the information here, please create a Github issue 9 | (or even better, submit a pull request 😉). -------------------------------------------------------------------------------- /src/socketcan/getting-socketcan.md: -------------------------------------------------------------------------------- 1 | # Getting SocketCAN 2 | 3 | Specifics for installing SocketCAN will depend on your Linux distribution. 4 | 5 | ## Ubuntu & Debian 6 | 7 | SocketCAN is built into the kernel provided with these systems. You will need to install the `can-utils` package to use the SocketCAN utilities (candump, cansend, etc...): 8 | ``` 9 | sudo apt-get install can-utils 10 | ``` 11 | -------------------------------------------------------------------------------- /src/socketcan/hw-devices.md: -------------------------------------------------------------------------------- 1 | # Hardware Devices 2 | 3 | A hardware device is required to connect to a real CAN bus. When using hardware SocketCAN devices, each hardware CAN channel is given a number based on the order which the devices were connected in. The first device's first channel will be `can0`. 4 | 5 | To set up a device with channel `can0` at a bitrate of 500000 kbps: 6 | 1. Connect the device to a Linux computer 7 | 2. Set the device bitrate: 8 | ``` 9 | sudo ip link set can0 type can bitrate 500000 10 | ``` 11 | 3. Bring the interface up: 12 | ``` 13 | sudo ip link set up can0 14 | ``` 15 | -------------------------------------------------------------------------------- /src/socketcan/isotp.md: -------------------------------------------------------------------------------- 1 | # ISOTP 2 | 3 | The can-utils package contains tools for working with ISOTP. However, the kernel ISOTP support needed by these tools is not available by default on most systems. This results in an `Protocol not supported` error when running ISOTP tools. 4 | 5 | The can-isotp kernel module and build instructions are available [on Github](https://github.com/hartkopp/can-isotp) 6 | 7 | ## Testing ISOTP Driver 8 | 9 | To use ISOTP, you will need two physically connected CAN channels (or gatewayed virtual CAN devices) to send and receive data. Once set up, start `isotprecv`: 10 | ``` 11 | isotprecv -s456 -d123 can1 12 | ``` 13 | 14 | In another terminal, run `isotpsend` to send ISOTP data. This tool reads from standard input, so `echo` is used to provided data as a sequence of space seperated hexidecimal bytes: 15 | ``` 16 | echo "de ad be ef de ad be ef aa bb cc dd" | isotpsend -s123 -d456 can0 17 | ``` 18 | 19 | The data should appear in `isotprecv`. 20 | -------------------------------------------------------------------------------- /src/socketcan/socketcan.md: -------------------------------------------------------------------------------- 1 | # SocketCAN 2 | 3 | SocketCAN is a collection of CAN drivers and networking tools for Linux. It allows interfacing with CAN bus devices in a similar fashion as other network devices. This allows for developers to write code that can support a variety of CAN bus interfaces, including CANtact. Unfortunately, SocketCAN only works on Linux. 4 | 5 | This section provides an overview of common SocketCAN usage. -------------------------------------------------------------------------------- /src/socketcan/utilities.md: -------------------------------------------------------------------------------- 1 | # Utilities 2 | 3 | The SocketCAN utilities provide simple command-line tools for interacting with CAN buses. 4 | 5 | ## candump 6 | candump displays messages on the specified CAN bus. To show all traffic in real time on device can0: 7 | ``` 8 | candump can0 9 | ``` 10 | 11 | The displayed messages can be filtered using a mask and identifier. Two filter types are available: 12 | 13 | - `[can_id]:[can_mask]` matches when `[received_can_id] & [can_mask] == [can_id] & [mask]` 14 | - `[can_id]~[can_mask]` matches when `[received_can_id] & [can_mask] != [can_id] & [mask]` 15 | 16 | ### Examples 17 | Only show messages with ID 0x123 on vcan0: 18 | ``` 19 | candump vcan0,0x123:0x7FF 20 | ``` 21 | 22 | Only show messages with ID 0x123 or ID 0x456 on can3: 23 | ``` 24 | candump can3,0x123:0x7FF,0x456:0x7FF 25 | ``` 26 | 27 | ## cansend 28 | cansend sends a single CAN frame on the bus using the specified identifier and data bytes. For example: 29 | ``` 30 | cansend can0 123#1122334455667788 31 | ``` 32 | 33 | This sends a message on interface `can0` with identifier `0x123` and data bytes `[0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88]`. This tool assumes all values (ID and data) are provided in hexadecimal. 34 | 35 | ## cangen 36 | cangen can generate random CAN data, which can be useful for testing. Run `cangen` for detailed usage information. 37 | 38 | ## cansniffer 39 | cansniffer displays frames that are currently on the bus, but filters out frames with data that is not changing. This is very useful for reverse engineering CAN bus systems. Run `cansniffer` for detailed usage information. 40 | -------------------------------------------------------------------------------- /src/socketcan/virtual-devices.md: -------------------------------------------------------------------------------- 1 | # Virtual Devices 2 | 3 | Virtual CAN devices, or vcan devices, can be used to simulate a CAN bus without any hardware. This is useful for simulation, testing, and bridging. It also lets you try out can-utils without having an actual CAN device. 4 | 5 | To create a vcan device run: 6 | ``` 7 | sudo ip link add name vcan0 type vcan 8 | ``` 9 | 10 | Once created, the device can be used like a hardware device. It does not require a bitrate setting, but the interface must be enabled before use: 11 | ``` 12 | sudo ip link set up vcan0 13 | ``` -------------------------------------------------------------------------------- /src/support/support.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | Need help with CANtact? 4 | 5 | If your hardware appears to be defective, please contact us at [hello@linklayer.com](mailto:hello@linklayer.com). 6 | 7 | If you have found a bug, please leave a ticket on the relevant Github repository. For a full list, see [Hacking](../hacking/hacking.html). 8 | 9 | Need commercial support? Developing custom CAN tooling? Contact us: [hello@linklayer.com](mailto:hello@linklayer.com). -------------------------------------------------------------------------------- /src/tools/busmaster.md: -------------------------------------------------------------------------------- 1 | # BUSMASTER 2 | 3 | [ETAS BUSMASTER](https://rbei-etas.github.io/busmaster/) is an open source tool software for simulating, analyzing, and testing CAN and LIN networks. BUSMASTER only supports Windows. 4 | 5 | A [fork](https://github.com/linklayer/busmaster) of BUSMASTER which implements CANtact support is available. 6 | A pre-built installer can be downloaded from the [releases page](https://github.com/linklayer/busmaster/releases). -------------------------------------------------------------------------------- /src/tools/cantact-cli.md: -------------------------------------------------------------------------------- 1 | # CANtact Command Line Interface 2 | 3 | The CANtact Command Line Interface (CLI) is a cross-platform tool with basic CAN functionality. 4 | These can be used to send and receive frames on Windows, macOS, and Linux. 5 | 6 | ## Building the CLI 7 | 8 | Building the CLI requires Rust, which can be installed using [rustup](https://rustup.rs/). 9 | 10 | Once Rust is installed, install CANtact using `cargo`. 11 | 12 | ``` 13 | cargo install cantact 14 | ``` 15 | 16 | ## Running the CLI 17 | 18 | The CLI provides a single binary named `can`. To get help, run `can --help`. -------------------------------------------------------------------------------- /src/tools/socketcan.md: -------------------------------------------------------------------------------- 1 | # SocketCAN 2 | 3 | SocketCAN is supported out of the box. Just connect a CANtact to a Linux system and CAN interfaces will appear. For details on using SocketCAN devices, see the [SocketCAN](../socketcan/socketcan.html) section of this book. -------------------------------------------------------------------------------- /src/tools/software-tools.md: -------------------------------------------------------------------------------- 1 | # Software Tools 2 | 3 | This section provides details on software tools with support for CANtact. 4 | Some of these tools have been created specifically for CANtact, while others 5 | support a variety of CAN interfaces. --------------------------------------------------------------------------------