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 |
- 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
.dbcfiles for CAN signal decoding and.ldffiles 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.
- 🇩🇪 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)
