Skip to content

Schildkroet/CANgaroo

 
 

Repository files navigation

CANgaroo

Open-source CAN bus analyzer for Linux 🐧 / Windows 🪟

🔩 Supported Interfaces & Hardware:

Interface Linux Windows Notes
SocketCAN Any kernel CAN interface (can0, vcan0, …)
PEAK PCAN PCAN-USB, PCAN-USB Pro, PCAN-PCIe, … via PCAN-Basic SDK (CONFIG+=peakcan)
Kvaser USB/CAN Leaf and other Kvaser devices via CANlib SDK (CONFIG+=kvaser)
Vector VN-series and other Vector devices via Qt serialbus (XL Driver Library required at runtime), CAN FD supported
TinyCAN TinyCAN USB adapters via Qt serialbus (enable in Measurement > Driver menu)
Candlelight / CANable CANable (Candlelight firmware), MKS CANable, cantact, … CAN FD supported
SLCAN CANable (SLCAN firmware), Arduino CAN shields
CANblaster UDP-based remote CAN via CANblaster
GrIP GrIP protocol

⚙️ Features

  • Real-time CAN/CAN-FD/LIN Decoding: Support for standard CAN, high-speed CAN-FD, and LIN bus frames.
  • Wide Hardware Compatibility: Works with SocketCAN (Linux), PEAK PCAN, Kvaser, Vector, TinyCAN, CANable, Candlelight, SLCAN, and CANblaster (UDP).
  • DBC & LDF Database Support: Load multiple .dbc files for CAN signal decoding and .ldf files for LIN bus signal decoding.
  • Powerful Data Visualization: Integrated Graphing tools supporting Time-series, Scatter charts, Text-based monitoring, and interactive Gauge views with zoom and live tooltips. Supports both CAN and LIN signals.
  • Advanced Filtering & Logging: Isolate critical data with live filters and export captures for offline analysis.
  • Network Rights Management: Per-network access control for bus interfaces.
  • Python Scripting: Built-in script editor with an embedded Python interpreter (via pybind11). Send and receive CAN and LIN messages, decode signals using loaded DBC/LDF files, and automate tasks. Scripts can be started manually or automatically with the measurement.
  • Trace Replay: Replay captured CAN logs (Vector ASC, candump, PCAP, and PCAPng formats) with adjustable speed, per-message RX/TX direction filtering, channel mapping to live interfaces, and optional autoplay with the measurement. Supports classic CAN, CAN-FD, RTR, and error frames.
  • Multiple Export Formats: Save traces as Vector ASC, Vector MDF4, Linux candump, PCAP, or PCAPng (Wireshark-compatible).
  • Modern Workspace: A clean, dockable userinterface optimized for multi-monitor setups.


Cangaroo Trace View

Languages

  • 🇩🇪 German
  • 🇺🇸 English
  • 🇪🇸 Spain
  • 🇨🇳 Chinese

🛠️ Building

🐧 Linux

Install dependencies:

Distribution Command
Ubuntu / Debian sudo apt install build-essential qt6-base-dev qt6-charts-dev qt6-serialport-dev qt6-serialbus-dev qt6-svg-dev qt6-tools-dev qt6-l10n-tools libqt6opengl6-dev libnl-3-dev libnl-route-3-dev python3-dev pybind11-dev pkg-config
Fedora sudo dnf install gcc-c++ make qt6-qtbase-devel qt6-qtcharts-devel qt6-qtserialport-devel qt6-qtserialbus-devel qt6-qtsvg-devel qt6-qttools-devel libnl3-devel python3-devel pybind11-devel pkgconfig
Arch Linux sudo pacman -S base-devel qt6-base qt6-charts qt6-serialport qt6-serialbus qt6-svg qt6-tools libnl python pybind11 pkgconf

Build:

qmake6
make -j$(nproc)

The binary will be in bin/cangaroo.

SocketCAN privileges

CANgaroo uses ip link to configure SocketCAN interfaces (bitrate, sample point, CAN FD), which requires CAP_NET_ADMIN. The recommended way is a targeted sudoers rule so no password prompt appears:

sudo groupadd cangaroo
sudo usermod -aG cangaroo $USER

Create /etc/sudoers.d/cangaroo:

%cangaroo ALL=(ALL) NOPASSWD: /sbin/ip link set * down, /sbin/ip link set * up type can *

Log out and back in for the group membership to take effect. If you prefer not to use a group, you can instead grant CAP_NET_ADMIN directly to the ip binary (applies to all users):

sudo setcap cap_net_admin+ep /sbin/ip

Note: If the interface is set to "Configured by OS" in the setup dialog, CANgaroo will not touch the interface configuration and no elevated privileges are needed.

🪟 Windows

  • Install Qt 6 (Community / Open Source) including the Qt Serial Bus component.
  • Install Python 3 and pybind11 (pip install pybind11).
  • Open cangaroo.pro in Qt Creator and build.

Deployment

Include the required Qt6 libraries or run windeployqt on the .exe:

windeployqt --release cangaroo.exe

Optional hardware drivers

PEAK PCAN (CONFIG+=peakcan) — Windows only:

  1. Download PCAN-Basic SDK and extract to src/driver/PeakCanDriver/pcan-basic-api/.
  2. Build with qmake CONFIG+=peakcan (or add peakcan to the Qt Creator qmake arguments).
  3. Place PCANBasic.dll (from pcan-basic-api/x64/) next to the built .exe.

Kvaser (CONFIG+=kvaser) — Linux and Windows:

Linux:

  1. Download and build linuxcan (V5.51.461 or newer):
    tar -xf linuxcan.tar.gz
    make -C linuxcan/canlib
    sudo make -C linuxcan/canlib install
    sudo ldconfig
  2. Build with qmake6 CONFIG+=kvaser.

Windows:

  1. Install the Kvaser CANlib SDK (V5.51.461 or newer).
  2. Build with qmake CONFIG+=kvaser CANLIB_DIR="C:/path/to/Kvaser/Canlib".
  3. Place canlib32.dll (from Canlib/Bin/) next to the built .exe.

Vector (always enabled) — Windows only:

  • Install the Vector XL Driver Library on the target machine.
  • No build-time SDK needed — Qt's serialbus module handles the integration.

TinyCAN (toggle in Measurement > Driver menu) — Linux and Windows:

  • Install the TinyCAN driver/library on the target machine.
  • No build-time SDK needed — Qt's serialbus module handles the integration.
  • Enable the driver via Measurement > Driver > TinyCAN and restart the application.

ARXML to DBC Conversion

Cangaroo natively supports DBC. If you have ARXML files, you can convert them using canconvert:

# Install canconvert
pip install canconvert

# Convert ARXML to DBC
canconvert TCU.arxml TCU.dbc

📥 Download

Download the latest release from the Releases.

📜 Credits

Written by Hubert Denkmair hubert@denkmair.de

Further development by:

About

Open source CAN bus analyzer software - with support for CANable / CANable2 / USB2CANFDV1, CANFD, and other new features

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 93.2%
  • C 5.7%
  • Other 1.1%