Skip to content

Instantly share code, notes, and snippets.

@jackm
Last active May 5, 2026 08:35
Show Gist options
  • Select an option

  • Save jackm/f33d6e3a023bfcc680ec3bfa7076e696 to your computer and use it in GitHub Desktop.

Select an option

Save jackm/f33d6e3a023bfcc680ec3bfa7076e696 to your computer and use it in GitHub Desktop.
Collection of CAN bus packages and tools

Collection of CAN bus packages and tools

This document assumes the use of Linux as the chosen development platform. Items in bold are highly recommended.

It is recommended to use the SocketCAN interface when working with CAN bus on Linux. It is supported by the Linux kernel mainline and follows the Linux interface model, allowing you to use other network tools such as Wireshark. This also allows the creation of virtual CAN interfaces where no physical hardware is required to simulate or replay CAN messages.

Python packages

  • python-can - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.).
  • python-j1939 - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding.
  • kcd - Open CAN database format for describing CAN signals and relationships.
  • Cantools - CAN message encoding and decoding using DBC, KCD or SYM formats.
  • can4python - CAN signals sending and receiving using KCD format. Uses SocketCAN.
  • Canmatrix - Read and write several CAN database formats.
  • CANBabel - Conversion tool for CAN database files. Only supports reading/writing KCD and reading DBC formats.
  • Caring Caribou - Vehicle CAN bus security exploration tool (think of it as Nmap for automotive hacking).
  • CANalyzat0r - CAN analysis tool written in Python3. Modular, extensible, SocketCAN support.

Other packages

  • CAN support in Linux - Linux kernel support for CAN hardware interfaces.
  • can-utils - SocketCAN command line utilities (candump, cansend, canplayer, etc.).
  • SavvyCAN - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces.
  • Kayak - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!).
  • c0f - CAN bus fingerprinting tool. Written in Ruby. Still very experimental.
  • can-utils with J1939 support - Fork of can-utils with a few additional tools for J1939 (untested).
@JC0103
Copy link
Copy Markdown

JC0103 commented Sep 13, 2022

This tool is helpful in converting dbc to excel file format:
https://github.com/zhyongquan/DBC2Excel

@david-caruthers
Copy link
Copy Markdown

david-caruthers commented Jun 14, 2023

@jackm Great reference doc here! it seems that the link to DBC File Format Documentation v1.0 is broken. Can you update this link to route to the right place?

@jackm
Copy link
Copy Markdown
Author

jackm commented Jun 14, 2023

Do a search for DBC_File_Format_Documentation filetype:pdf and you should get some results. In fact, I found one that is for DBC version 1.0.5 which has corrected some of the errors found in version 1.0. I have updated the link.

@grant-allan-ctct
Copy link
Copy Markdown

Today I came across python-can-j1939 which is linked-to from the Other CAN bus tools page of python-can documentation.

@erzoe
Copy link
Copy Markdown

erzoe commented Jan 10, 2024

Thank you for this list. I was missing an editor to edit dbc and sym files so I have written one myself based on cantools and urwid: https://pypi.org/project/dbc-editor/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment