Open-source CAN bus analyzer for Linux, Automotive, Robotics, and Industrial Applications
Cangaroo is a professional-grade CAN bus analyzer designed for engineers in Automotive, Robotics, and Industrial Automation. It facilitates real-time capture, decoding, and analysis of CAN and CANβFD traffic.
Works with SocketCAN (Linux), CANable, Candlelight, and CANblaster for immediate testing and real hardware connections.
Real-time capture and decoding of CAN traffic using DBC databases.

Simulate CAN traffic with customizable periodic and manual transmissions.

Seamlessly reassemble and decode UDS (Unified Diagnostic Services) messages over the ISO-TP transport layer.

Robust analysis of J1939 heavy-duty protocols, supporting Multi-frame (BAM) reassembly and PGN identification.

Visualize CAN signals in real-time with Time-series, Scatter charts, Text view, and interactive Gauges.

- Real-time CAN/CAN-FD Decoding: Support for standard and high-speed flexible data-rate frames.
- Wide Hardware Compatibility: Seamlessly works with SocketCAN (Linux), CANable (SLCAN), Candlelight, 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.
- Modern Workspace: A clean, dockable userinterface optimized for multi-monitor setups.
Getting started is as simple as running our automated setup script:
git clone https://github.com/OpenAutoDiagLabs/CANgaroo.git
cd CANgaroo
./install_linux.shFollow the interactive menu to install dependencies and build the project.
If you downloaded a pre-compiled release tarball, use the included setup script to prepare your environment:
- Extract the package:
tar -xzvf cangaroo-vX.Y.Z-linux-x86_64.tar.gz - Run the setup script:
./setup_release.sh - Select an option to install dependencies and/or install Cangaroo to
/usr/local/bin.
| Distribution | Command |
|---|---|
| Ubuntu / Debian | sudo apt install qt6-base-dev libqt6charts6-dev libqt6serialport6-dev build-essential libnl-3-dev libnl-route-3-dev |
| Fedora | sudo dnf install qt6-qtbase-devel qt6-qtcharts-devel qt6-qtserialport-devel libnl3-devel |
| Arch Linux | sudo pacman -S qt6-base qt6-charts qt6-serialport libnl |
Cangaroo leverages the standard Linux SocketCAN subsystem. This means it works with virtually any CAN interface supported by the Linux kernel.
- PEAK-System (PCAN):
- PCAN-USB, PCAN-USB Pro, PCAN-PCIe, etc. (Native driver:
peak_usb).
- PCAN-USB, PCAN-USB Pro, PCAN-PCIe, etc. (Native driver:
- Native USB-CAN Adapters:
- CANable (with Candlelight firmware)
- Kvaser USB/CAN Leaf
- Candlelight compatible devices (e.g., MKS CANable, cantact)
- USB SLCAN Adapters:
- CANable (with set-default SLCAN firmware)
- Arduino-based CAN shields (running SLCAN sketches)
- Industrial / Embedded CAN:
- PCIe/mPCIe CAN cards
- Embedded CAN controllers on SoCs (e.g., Raspberry Pi with MCP2515)
- Remote / Network CAN:
- CANblaster (UDP)
- tcpcan / candlelight-over-ethernet
Most professional hardware is recognized automatically as can0, can1, etc. To bring up an interface at 500k bitrate:
sudo ip link set can0 up type can bitrate 500000If your device uses SLCAN (like original CANable firmware), use slcand:
# Connect device as /dev/ttyUSB0 and set bitrate (S6 = 500k)
sudo slcand -o -s6 -t hw -S 115200 /dev/ttyUSB0 slcan0
sudo ip link set slcan0 upsudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
Monitor traffic from a remote machine (e.g., a Raspberry Pi on your vehicle) on your local PC:
# On your local machine, setup vcan0 as shown above, then:
ssh user@remote-ip "candump -L can0" | canplayer vcan0=can0 -tNow open Cangaroo and connect to vcan0 to see the remote traffic.
If the target device is behind a jump host or firewall:

- Create an SSH Tunnel: Expose the remote device's SSH port to your local machine.
# local-pc -> jump-host -> target-device
sshpass ssh -N -L localhost:9999:<remote-machine-ip>:22 user@jump-host-ip
eg: ssh -N -L localhost:9999:10.66.201.60:22 root@10.147.17.225Breakdown of the command:
| Item | Description |
|---|---|
localhost:9999 |
The local port on your PC that will map to the target device. |
10.66.201.60 |
The Internal IP of the Remote Linux Device (Target). |
22 |
The SSH port on the Remote Linux Device. |
root@10.147.17.225 |
The login details for the Jump Host / Remote PC that has access to the target. |
- Stream CAN over the Tunnel:
ssh -p 9999 root@localhost "stdbuf -o0 candump -L can0" | canplayer vcan0=can0 -tCangaroo 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 tarball from the Releases Page.
All official releases include a SHA256 checksum. Verify your download using:
sha256sum cangaroo-v0.4.3-linux-x86_64.tar.gz
# Expected output:
# abc123def456... cangaroo-v0.4.3-linux-x86_64.tar.gzWe welcome contributions!
- Report Bugs: Open an issue on our GitHub Tracker.
- Suggest Features: Start a discussion in the Discussions Tab.
- Contribute Code: See CONTRIBUTING.md for guidelines.
- Original Author: Hubert Denkmair (hubert@denkmair.de)
- Lead Maintainer: Jayachandran Dharuman
- New Graph View Feature: Added a versatile visualization suite including:
- Time-series Graph: Smooth real-time signal plotting with interactive cursors and tooltips.
- Scatter Chart: Visualize signal correlations and distributions.
- Text View: Compact, live-updating text representation of signal values.
- Gauge View: High-visibility analog/digital gauges with customizable column layouts.
- Interactive Analysis Tools: Integrated zooming (In/Out/Reset), signal color customization, and absolute timestamp cursors.
- Unified Protocol Decoding: Intelligent prioritization between J1939 (29-bit) and UDS/ISO-TP (11-bit) with robust Transport Protocol reassembly.
- Enhanced J1939 Support: Auto-labeling for common PGNs (VIN, EEC1) and reassembled multi-frame (BAM/CM) messages.
- Generator Synchronization: Global "Stop" now halts all background cyclic transmissions automatically for safe simulation teardown.
- Responsive State Management: Replaced unstable signal blocking with a "Safe Flag Pattern" to ensure responsive UI editing without data corruption.
- Generator Loopback: Transmitted frames are now visible in the Trace View (TX labels), providing a complete view of bus activity.
Keywords: CAN bus analyzer Linux, SocketCAN GUI, CAN FD decoder, J1939 analyzer, UDS ISO-TP decoder, automotive diagnostic tool.
License: GPL-3.0+