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) |
| TinyCAN | ✅ | ✅ | TinyCAN USB adapters via Qt serialbus (enable in Measurement > Driver menu) |
| Candlelight / CANable | ✅ | ✅ | CANable (Candlelight firmware), MKS CANable, cantact, … |
| SLCAN | ✅ | ✅ | CANable (SLCAN firmware), Arduino CAN shields |
| CANblaster | ✅ | ✅ | UDP-based remote CAN via CANblaster |
| GrIP | ✅ | ✅ | GrIP protocol |
- Real-time CAN/CAN-FD Decoding: Support for standard and high-speed flexible data-rate frames.
- Wide Hardware Compatibility: Works with SocketCAN (Linux), PEAK PCAN, Kvaser, Vector, TinyCAN, CANable, Candlelight, SLCAN, and CANblaster (UDP).
- DBC Database Support: Load multiple
.dbcfiles to instantly decode frames into human-readable signals. - Powerful Data Visualization: Integrated Graphing tools supporting Time-series, Scatter charts, Text-based monitoring, and interactive Gauge views with zoom and live tooltips.
- Advanced Filtering & Logging: Isolate critical data with live filters and export captures for offline analysis.
- Python Scripting: Built-in script editor with an embedded Python interpreter (via pybind11). Send and receive CAN messages, decode signals using loaded DBC 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.
- 🇩🇪 German
- 🇺🇸 English
- 🇪🇸 Spain
- 🇨🇳 Chinese
| 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 |
qmake6
make -j$(nproc)The binary will be in bin/cangaroo.
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 $USERCreate /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/ipNote: 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.
- Install Qt 6 (Community / Open Source) including the Qt Serial Bus component.
- Install Python 3 and pybind11 (
pip install pybind11). - Open
cangaroo.proin Qt Creator and build.
Include the required Qt6 libraries or run windeployqt on the .exe:
windeployqt --release cangaroo.exe
PEAK PCAN (CONFIG+=peakcan) — Windows only:
- Download PCAN-Basic SDK and extract to
src/driver/PeakCanDriver/pcan-basic-api/. - Build with
qmake CONFIG+=peakcan(or addpeakcanto the Qt Creator qmake arguments). - Place
PCANBasic.dll(frompcan-basic-api/x64/) next to the built.exe.
Kvaser (CONFIG+=kvaser) — Linux and Windows:
Linux:
- 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
- Build with
qmake6 CONFIG+=kvaser.
Windows:
- Install the Kvaser CANlib SDK (V5.51.461 or newer).
- Build with
qmake CONFIG+=kvaser CANLIB_DIR="C:/path/to/Kvaser/Canlib". - Place
canlib32.dll(fromCanlib/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
serialbusmodule 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
serialbusmodule handles the integration. - Enable the driver via Measurement > Driver > TinyCAN and restart the application.
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.dbcDownload the latest release from the Releases.
Written by Hubert Denkmair hubert@denkmair.de
Further development by:
- Ethan Zonca e@ethanzonca.com
- WeAct Studio
- Schildkroet (https://github.com/Schildkroet/CANgaroo)
- Wikilift (https://github.com/wikilift/CANgaroo)
- Jayachandran Dharuman (https://github.com/OpenAutoDiagLabs/cangaroo)
