AKJ7/CANExplorer

A CAN-Analysing Tool for all platform

Python

5

32 commits

updated Oct 18, 2026

See the code

See what people are saying

SourceMessageScoreDate

Introducing CANExplorer: A CANbus monitoring tool for the modern man (r/coolgithubprojects)

Hi everyone, I’m developing CANExplorer, an open-source desktop tool for monitoring, analyzing, diagnosing, simulating, and testing CAN devices on Linux, Windows, and macOS. It combines everyday bus debugging with Python-based simulation and testing. You can inspect traffic, decode signals,…

1

Oct 19, 2026

Introducing CANExplorer: A CANbus monitoring tool for the modern man (r/opensource)

Hi everyone, I’m developing CANExplorer, an open-source desktop tool for monitoring, analyzing, diagnosing, simulating, and testing CAN devices on Linux, Windows, and macOS. It combines everyday bus debugging with Python-based simulation and testing. You can inspect traffic, decode signals,…

3

Oct 18, 2026

README

CANExplorer logo

CANExplorer

CANBus monitoring for the modern man!

Monitor, analyse, diagnose, simulate and test CAN, CAN FD and LIN buses — on Linux, Windows and macOS, with any adapter python-can supports, or without hardware on a virtual bus.

Documentation · Quick start · Downloads · Changelog

CANExplorer dashboard

Features

Monitoring and analysis

  • Live view of any python-can interface: SocketCAN, PCAN, Vector, Kvaser, gs_usb, slcan and other serial adapters, virtual buses; CAN FD with a separate data bitrate; channel detection
  • Dashboard with frame rates, bus load, error frames, bus activity, traffic breakdown and the busiest identifiers
  • Trace and per-identifier overview (cycle times, changed bytes highlighted, sortable columns), display filters such as 100-1FF !123 ext rx fd, search by text, data pattern or signal condition, and bookmarks
  • Millions of frames per session: older frames are paged to disk
  • Bus health: error state timeline, error frames, TEC/REC and bus load over up to an hour
  • Remote buses: can-server shares the interfaces of e.g. a Raspberry Pi in a vehicle over the network
  • Signal plots with zoom and pan over the whole buffer, two cursors with values and statistics, several signals per chart and CSV export

Recording and replay

  • ASC, BLF, CSV, candump LOG, PEAK TRC, SQLite, ASAM MF4 and gzip compressed text logs
  • Splitting into numbered files by size or time, and triggered recording with conditions such as EngineData.EngineSpeed > 6000, keeping the time before and after the event
  • Replay at 0.25× to 10× or as fast as possible, with pause and jumping to any position
  • Replay of a recording onto a real bus, filtered and repeated
  • Several buses on one timeline, and simulated gateways forwarding frames between them
  • Comparison of two recordings: identifiers only in one of them, changed cycle times and payloads, and signal values, aligned by time, by a trigger identifier or by frame sequence

Signal databases

  • Vector DBC, BUSMASTER DBF, AUTOSAR ARXML (including container PDUs), Kayak KCD, PCAN SYM and LIN LDF
  • Database editor for CAN and LIN databases (frames, signals, nodes, encodings, schedule tables) with a bit layout view and consistency checks, and conversion between the formats

Diagnostics and protocols

  • UDS over ISO-TP and the LIN transport layer: sessions, reset, data identifiers, security access with your own seed/key algorithm, DTCs, routines; CANdelaStudio CDD descriptions for named and decoded identifiers
  • ECU flashing over UDS (RequestDownload/TransferData) from Intel HEX, S-record or binary files, with progress
  • J1939: nodes with their address claims, DM1/DM2 trouble codes and lamps, clearing codes, requests and sending parameter groups by name with BAM or RTS/CTS
  • CANopen master: NMT, SDO access to object dictionaries from EDS/DCF files, PDO mappings with live values, emergency messages
  • Decoding of ISO-TP, UDS, J1939, CANopen and LIN diagnostic frames in the trace
  • LIN master schedule tables

Simulation and test automation

  • Simulated ECUs written in Python, controlled from QML panels
  • ECU test scripts with checks, timing measurements and UDS requests; pass/fail verdicts in the Tests view or headless with can-test, with HTML, JUnit and Markdown reports for CI; parametrised test cases and requirement traceability

Workspace

  • Connections, databases, filters, plots and scripts saved in one workspace file
  • Dashboard-style interface with six colour themes, a command palette (Ctrl+K) and English and German texts

See the documentation for a guide to every feature.

Installation

Installers

Download the installer for your platform from the releases: a setup.exe for Windows, an AppImage or .deb for Linux and a .dmg for macOS (Apple silicon). Portable zip archives are attached as well. No Python installation is needed.

From source

With uv and Python 3.10 or newer:

git clone https://github.com/AKJ7/CANExplorer.git
cd CANExplorer
uv sync                  # Add --extra mf4 for ASAM MF4 log files (installs asammdf, numpy and pandas)
uv run canexplorer

On Linux, uv run canexplorer --install-desktop-entry adds CANExplorer with its icon to the application menu.

Interfaces

CANExplorer supports every interface of python-can 4.6. Install the vendor's driver for your adapter; the supported interfaces page lists the drivers, CAN FD support and the Linux kernel drivers.

InterfaceHardwarePlatforms
SocketCAN (socketcan)Any adapter with a Linux kernel driver: PEAK, Kvaser, candleLight/gs_usb (CANable), ETAS ES58x, 8devices, EMS, esd, MCP2515/MCP251xFD (Raspberry Pi hats), virtual vcan; LIN through sllinLinux
PEAK PCAN (pcan)PCAN-USB, PCAN-USB FD, PCAN-PCI(e), PCAN-LANWindows, Linux, macOS
Vector (vector)VN16xx, VN56xx and other XL Driver Library devices, Vector virtual channelsWindows
Kvaser (kvaser)Leaf, U100, Memorator, USBcanWindows, Linux
IXXAT (ixxat)HMS IXXAT USB-to-CAN, CAN-IBWindows
ETAS (etas)ES581, ES582, ES584, ES891 (BOA)Windows
Intrepid neoVI (neovi) ¹neoVI, ValueCAN, RAD-GalaxyWindows, Linux, macOS
NI-XNET (nixnet) ¹National Instruments NI-XNET devicesWindows
NI-CAN (nican)National Instruments NI-CAN devicesWindows
SYS TEC (systec)USB-CANmodulWindows
8devices USB2CAN (usb2can)USB2CAN (Korlan)Windows
Thorsis isCAN (iscan)isCANWindows
Neousys (neousys)CAN ports of Neousys industrial computersWindows, Linux
CANalyst-II (canalystii) ¹Chuangxin CANalyst-IIWindows, Linux, macOS
CANtact (cantact) ¹CANtact, CANableWindows, Linux, macOS
gs_usb (gs_usb) ¹candleLight/gs_usb firmware adapters through libusbWindows, Linux, macOS
slcan (slcan)Lawicel CANUSB, CANable (slcan firmware), USBtin and other serial slcan adaptersWindows, Linux, macOS
python-can serial (serial)Adapters with python-can's serial protocolWindows, Linux, macOS
Robotell (robotell)Robotell USB-CANWindows, Linux, macOS
Seeed Studio (seeedstudio)USB-CAN AnalyzerWindows, Linux, macOS
socketcand (socketcand)SocketCAN buses of another Linux computer, over the networkWindows, Linux, macOS
CANExplorer remote (canexplorer_remote)Buses shared by can-server on another computer, e.g. a Raspberry PiWindows, Linux, macOS
UDP multicast (udp_multicast) ¹A software bus between computers over UDP multicastWindows, Linux, macOS
Virtual (virtual)A software bus inside CANExplorer, no hardware neededWindows, Linux, macOS

¹ Needs Python packages that the installers do not include: run from source with uv sync --extra drivers.

Try it without hardware

Run the example ECU tests against the example engine simulation on a virtual bus:

uv run can-test examples/testing/vehicle_tests.py \
    --database examples/simulation/vehicle.dbc \
    --simulation examples/simulation/engine_simulation.py \
    --report report.html

In the application, connect to a VirtualBus, load examples/simulation/vehicle.dbc and run engine_simulation.py in the Simulation view; the quick start walks through it.

Command line

CommandPurpose
uv run canexplorerThe application. Options such as --log_level DEBUG, or CANEXPLORER_* environment variables
uv run can-test SCRIPT …Run ECU test scripts on a bus; exit code and HTML/JUnit reports for CI
uv run can-db-convert IN OUTConvert signal databases, e.g. vehicle.dbc vehicle.dbf, or one bus with system.arxml powertrain.dbc --bus Powertrain

Development

uv run pytest                                  # Tests (headless Qt, python-can virtual buses)
uv run ruff check . && uv run black --check .  # Lint and formatting
uv run --group docs mkdocs serve               # Documentation preview on http://127.0.0.1:8000
uv run python packaging/build.py --archive     # Standalone bundle in dist/ (--backend nuitka to compile)
uv run python packaging/installer.py           # Installers of the platform in dist/installers

The core (can_explorer/core) is Qt-independent asyncio code; can_explorer/gui adapts it to the QML interface in can_explorer/gui/qt, and Qt and asyncio share one event loop through qasync. The development guide covers the architecture, testing, packaging and contributing.

License

MIT, as declared in pyproject.toml.

can
canbus
canbus-analysis
canbus-communications
canbus-sniffer
vehicle-research

AKJ7/CANExplorer

A CAN-Analysing Tool for all platform

Python

5

32 commits

updated Oct 18, 2026

See the code

See what people are saying

SourceMessageScoreDate

Introducing CANExplorer: A CANbus monitoring tool for the modern man (r/coolgithubprojects)

Hi everyone, I’m developing CANExplorer, an open-source desktop tool for monitoring, analyzing, diagnosing, simulating, and testing CAN devices on Linux, Windows, and macOS. It combines everyday bus debugging with Python-based simulation and testing. You can inspect traffic, decode signals,…

1

Oct 19, 2026

Introducing CANExplorer: A CANbus monitoring tool for the modern man (r/opensource)

Hi everyone, I’m developing CANExplorer, an open-source desktop tool for monitoring, analyzing, diagnosing, simulating, and testing CAN devices on Linux, Windows, and macOS. It combines everyday bus debugging with Python-based simulation and testing. You can inspect traffic, decode signals,…

3

Oct 18, 2026

README

CANExplorer logo

CANExplorer

CANBus monitoring for the modern man!

Monitor, analyse, diagnose, simulate and test CAN, CAN FD and LIN buses — on Linux, Windows and macOS, with any adapter python-can supports, or without hardware on a virtual bus.

Documentation · Quick start · Downloads · Changelog

CANExplorer dashboard

Features

Monitoring and analysis

  • Live view of any python-can interface: SocketCAN, PCAN, Vector, Kvaser, gs_usb, slcan and other serial adapters, virtual buses; CAN FD with a separate data bitrate; channel detection
  • Dashboard with frame rates, bus load, error frames, bus activity, traffic breakdown and the busiest identifiers
  • Trace and per-identifier overview (cycle times, changed bytes highlighted, sortable columns), display filters such as 100-1FF !123 ext rx fd, search by text, data pattern or signal condition, and bookmarks
  • Millions of frames per session: older frames are paged to disk
  • Bus health: error state timeline, error frames, TEC/REC and bus load over up to an hour
  • Remote buses: can-server shares the interfaces of e.g. a Raspberry Pi in a vehicle over the network
  • Signal plots with zoom and pan over the whole buffer, two cursors with values and statistics, several signals per chart and CSV export

Recording and replay

  • ASC, BLF, CSV, candump LOG, PEAK TRC, SQLite, ASAM MF4 and gzip compressed text logs
  • Splitting into numbered files by size or time, and triggered recording with conditions such as EngineData.EngineSpeed > 6000, keeping the time before and after the event
  • Replay at 0.25× to 10× or as fast as possible, with pause and jumping to any position
  • Replay of a recording onto a real bus, filtered and repeated
  • Several buses on one timeline, and simulated gateways forwarding frames between them
  • Comparison of two recordings: identifiers only in one of them, changed cycle times and payloads, and signal values, aligned by time, by a trigger identifier or by frame sequence

Signal databases

  • Vector DBC, BUSMASTER DBF, AUTOSAR ARXML (including container PDUs), Kayak KCD, PCAN SYM and LIN LDF
  • Database editor for CAN and LIN databases (frames, signals, nodes, encodings, schedule tables) with a bit layout view and consistency checks, and conversion between the formats

Diagnostics and protocols

  • UDS over ISO-TP and the LIN transport layer: sessions, reset, data identifiers, security access with your own seed/key algorithm, DTCs, routines; CANdelaStudio CDD descriptions for named and decoded identifiers
  • ECU flashing over UDS (RequestDownload/TransferData) from Intel HEX, S-record or binary files, with progress
  • J1939: nodes with their address claims, DM1/DM2 trouble codes and lamps, clearing codes, requests and sending parameter groups by name with BAM or RTS/CTS
  • CANopen master: NMT, SDO access to object dictionaries from EDS/DCF files, PDO mappings with live values, emergency messages
  • Decoding of ISO-TP, UDS, J1939, CANopen and LIN diagnostic frames in the trace
  • LIN master schedule tables

Simulation and test automation

  • Simulated ECUs written in Python, controlled from QML panels
  • ECU test scripts with checks, timing measurements and UDS requests; pass/fail verdicts in the Tests view or headless with can-test, with HTML, JUnit and Markdown reports for CI; parametrised test cases and requirement traceability

Workspace

  • Connections, databases, filters, plots and scripts saved in one workspace file
  • Dashboard-style interface with six colour themes, a command palette (Ctrl+K) and English and German texts

See the documentation for a guide to every feature.

Installation

Installers

Download the installer for your platform from the releases: a setup.exe for Windows, an AppImage or .deb for Linux and a .dmg for macOS (Apple silicon). Portable zip archives are attached as well. No Python installation is needed.

From source

With uv and Python 3.10 or newer:

git clone https://github.com/AKJ7/CANExplorer.git
cd CANExplorer
uv sync                  # Add --extra mf4 for ASAM MF4 log files (installs asammdf, numpy and pandas)
uv run canexplorer

On Linux, uv run canexplorer --install-desktop-entry adds CANExplorer with its icon to the application menu.

Interfaces

CANExplorer supports every interface of python-can 4.6. Install the vendor's driver for your adapter; the supported interfaces page lists the drivers, CAN FD support and the Linux kernel drivers.

InterfaceHardwarePlatforms
SocketCAN (socketcan)Any adapter with a Linux kernel driver: PEAK, Kvaser, candleLight/gs_usb (CANable), ETAS ES58x, 8devices, EMS, esd, MCP2515/MCP251xFD (Raspberry Pi hats), virtual vcan; LIN through sllinLinux
PEAK PCAN (pcan)PCAN-USB, PCAN-USB FD, PCAN-PCI(e), PCAN-LANWindows, Linux, macOS
Vector (vector)VN16xx, VN56xx and other XL Driver Library devices, Vector virtual channelsWindows
Kvaser (kvaser)Leaf, U100, Memorator, USBcanWindows, Linux
IXXAT (ixxat)HMS IXXAT USB-to-CAN, CAN-IBWindows
ETAS (etas)ES581, ES582, ES584, ES891 (BOA)Windows
Intrepid neoVI (neovi) ¹neoVI, ValueCAN, RAD-GalaxyWindows, Linux, macOS
NI-XNET (nixnet) ¹National Instruments NI-XNET devicesWindows
NI-CAN (nican)National Instruments NI-CAN devicesWindows
SYS TEC (systec)USB-CANmodulWindows
8devices USB2CAN (usb2can)USB2CAN (Korlan)Windows
Thorsis isCAN (iscan)isCANWindows
Neousys (neousys)CAN ports of Neousys industrial computersWindows, Linux
CANalyst-II (canalystii) ¹Chuangxin CANalyst-IIWindows, Linux, macOS
CANtact (cantact) ¹CANtact, CANableWindows, Linux, macOS
gs_usb (gs_usb) ¹candleLight/gs_usb firmware adapters through libusbWindows, Linux, macOS
slcan (slcan)Lawicel CANUSB, CANable (slcan firmware), USBtin and other serial slcan adaptersWindows, Linux, macOS
python-can serial (serial)Adapters with python-can's serial protocolWindows, Linux, macOS
Robotell (robotell)Robotell USB-CANWindows, Linux, macOS
Seeed Studio (seeedstudio)USB-CAN AnalyzerWindows, Linux, macOS
socketcand (socketcand)SocketCAN buses of another Linux computer, over the networkWindows, Linux, macOS
CANExplorer remote (canexplorer_remote)Buses shared by can-server on another computer, e.g. a Raspberry PiWindows, Linux, macOS
UDP multicast (udp_multicast) ¹A software bus between computers over UDP multicastWindows, Linux, macOS
Virtual (virtual)A software bus inside CANExplorer, no hardware neededWindows, Linux, macOS

¹ Needs Python packages that the installers do not include: run from source with uv sync --extra drivers.

Try it without hardware

Run the example ECU tests against the example engine simulation on a virtual bus:

uv run can-test examples/testing/vehicle_tests.py \
    --database examples/simulation/vehicle.dbc \
    --simulation examples/simulation/engine_simulation.py \
    --report report.html

In the application, connect to a VirtualBus, load examples/simulation/vehicle.dbc and run engine_simulation.py in the Simulation view; the quick start walks through it.

Command line

CommandPurpose
uv run canexplorerThe application. Options such as --log_level DEBUG, or CANEXPLORER_* environment variables
uv run can-test SCRIPT …Run ECU test scripts on a bus; exit code and HTML/JUnit reports for CI
uv run can-db-convert IN OUTConvert signal databases, e.g. vehicle.dbc vehicle.dbf, or one bus with system.arxml powertrain.dbc --bus Powertrain

Development

uv run pytest                                  # Tests (headless Qt, python-can virtual buses)
uv run ruff check . && uv run black --check .  # Lint and formatting
uv run --group docs mkdocs serve               # Documentation preview on http://127.0.0.1:8000
uv run python packaging/build.py --archive     # Standalone bundle in dist/ (--backend nuitka to compile)
uv run python packaging/installer.py           # Installers of the platform in dist/installers

The core (can_explorer/core) is Qt-independent asyncio code; can_explorer/gui adapts it to the QML interface in can_explorer/gui/qt, and Qt and asyncio share one event loop through qasync. The development guide covers the architecture, testing, packaging and contributing.

License

MIT, as declared in pyproject.toml.

can
canbus
canbus-analysis
canbus-communications
canbus-sniffer
vehicle-research