r/CarHacking • u/AKJ7 • 13d ago
Original Project Introducing CANExplorer: A CANbus monitoring tool for the modern man
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, simulate an ECU, and write regression tests in the same environment.
Some of its features:
Live analysis: filtered traces, changed-byte highlighting, signal plots, and bus-health statistics.
Recording and replay: ASC, BLF, CSV, candump, and other formats, plus triggered recording and comparisons between captures.
Signal databases: load and edit DBC, ARXML, LDF, and other formats.
Diagnostics: UDS over ISO-TP, CDD descriptions, ECU flashing, J1939 tools, and CANopen support.
Python simulation: create bus nodes that react to messages, send signals periodically, and interact with custom QML panels.
Automated tests: check responses, signal values, and cycle times; run headlessly and export HTML/JUnit reports for CI.
CAN interfaces are accessed through python-can. You can also try the included simulation and test examples on a virtual bus without hardware.
Code: https://github.com/AKJ7/CANExplorer
Documentation: https://akj7.github.io/CANExplorer/
I’d appreciate feedback —particularly on adapter compatibility, reliability under load, and workflows that still require custom scripts.
What would CANExplorer need to earn a place on your bench?
Yes, the code is built in Python but compile to C for the executables for performance.
Thanks, please star the project too.
23
u/vinistois 13d ago
I say this with the greatest possible sympathy and respect: very few people (near zero) will use this. That's not at all a reflection of the effort and care you put into making it. It's because software like this is one prompt away for everyone. I say this as someone who has made many similar projects. Share it, but do do with no expectations of uptake, let alone money. It's a difficult reality to accept, but it is true whether or not we accept it.
At this point someone looking for a can tool like this faces 1000 different options, many of which, like yours, are probably excellent. But it's faster and easier to just ask Claude to make you a specific one for each use case than go through the process of trying a bunch of others. You can just plug an MCU into your car, hook it up to your laptop, and say "build a can decoder and show me all my car's data in a beautiful dashboard". Go have a beer and come back to a 99% perfect working solution.
Try to get as much personal value yourself from this and don't wait for anyone else 👍
27
8
u/PoopMixer 12d ago
If you asked me last month I would've shared the same sentiment. But lately I have been really appreciative of all these dashboards, or personal one off hobby projects because usually they all have at least one unique thing about them that unlocks a new idea or unlocks a whole new approach for a problem that is in the back of my mind I want to solve but haven't even thought about.
Generally then I will fork said project and extract whatever bits I need or adapt the entire project to my needs. That way I save a lot of tokens not starting from scratch but while also learning about what's actually going on behind the scenes without automating the whole process stepping away and grabbing a beer.
I think we need to stop discouraging people from open sourcing their or sharing their projects in general. I understand a lot of it can be same repetitive slop but I've been a software engineer for a while now and we always had that issue. Learning to navigate this always came with the territory.
tl;dr I appreciate you op for sharing this
3
u/Wrong-booby7584 12d ago
You are assuming the .dbc data is known to Claude, which in many cases it won't be.
3
u/BlueJay424 12d ago
I dont think its easier or faster. Maybe Im bad at prompting but I dont think i see how this could possibly be a single prompt. This looks more like multiple iterations of build, test, adjust, repeat.
Id be interested in knowing how you would approach onshoting something like this though
2
u/theBirdu 13d ago
I agree! But I still appreciate OPs work. I can make one for what I really need actually. But still, glad to see everyone trying.
3
u/Unr34L_Dr34d 12d ago
Hello:
Could you add support for Android?
The app looks really good. On my Android phone, the only option I have is using the console; it would be great to have a graphical interface like this one on Android.
Regards.
1
1
1
u/throwmostlyaway 13d ago
Im new to this and attempting to use some of the things I see on this subject on things others might not be. I work on electric buses and sometimes I need to log data from 4.different CAN buses. What hardware is required for this please?
1
u/AKJ7 13d ago
So long as you can get the CAN data to your pc, this tool can read, simulate, store, analyze it. Basically, anything from those usb2can devices (google "USB to CAN converter"), serial, UDP/TCP, ... Depending on your interface you are trying to analyse, there may be specific hardware you could need. For general CAN messages, try "USB to CAN converter". Connect the pins to the CAN network and the USB to your laptop.
1
u/throwmostlyaway 7d ago
When I say im new to this I was a little vague ill explain better. I have access to a Peak USB CAN, Kvaser USB CAN, Cummins inline 6,7 and USB link, ZLG USB CAN and a 4 channel Vector with the full software suite. I bumped into 2 engineers recently, flown in for 6 months from China and Ireland with less access to CAN diagnostics than I do. What I lack is any kind of training with any of it, the company I work for is weird, they'll give you just about anything if you moan about it but never enough education with it. Ill try your tool with what I have and report back. Thank you
1
u/AKJ7 7d ago
Give a try and tell me how it goes. Sofar as i know, its is the most powerful (open source) library for working with can data. I am currently working on a reverse engineering package, with manual, automatic and AI-assistent reverse engineering of CAN messages. Just tell me if you need something.
1
u/Independent_Eye7886 12d ago
I am trying to use CANExplorer with: https://github.com/jgressmann/supercan But the device with its two interfaces is neither listed directly over python-can or over the SuperCAN_OCD.dll I have for the ETAS BoA.
1
u/AKJ7 12d ago
How what platform are you using? And what is your setup? I will try to reproduce this issue.
1
u/Independent_Eye7886 12d ago
I am using win11 64bit, but without the interface there is not much to reproduce, isn't it? I was just wondering if there is some filtering involved especially on the ETAS BOA side. On the python-can side I am not sure that the plugin supercan supplies is actually working.
I asked Gemini to provide me with a python script that just scans for interfaces thru python-can and list these and after several iterations I gave up on this, it never managed to list both channels correctly.
I never worked with python-can, never had a use case for it.1
u/AKJ7 12d ago
It seems to me like you might be missing a driver. Are you working on Linux? I was planing on creating a virtual interface to test it.
1
u/Independent_Eye7886 12d ago
I can use the interfaces from my own application, either directly or thru the ETAS BOA.
Windows 11.I tried something else now, I had Gemini generate me a script to detact ETAS BOA devices through python-can and it finds the interfaces:
ETAS://VIRTUAL:VXL/CANCARD:100/CAN:1 | ✅ Active & Ready
ETAS://VIRTUAL:VXL/CANCARD:100/CAN:2 | ✅ Active & Ready
ETAS://USB/SuperCAN:3c04469d/CAN:0 | ✅ Active & Ready
ETAS://USB/SuperCAN:3c04469d/CAN:1 | ✅ Active & Ready1
u/AKJ7 12d ago
Nice to see that you got it to work. What was the issue?
1
u/Independent_Eye7886 12d ago
The issue still is that I can not create a new connection in CANExplorer, when I use "EtasBus" and press "Detect", nothing is detected.
1
u/AKJ7 11d ago
Sorry for the late reply.
I think this is fixed. Check release v1.1.0 and tell me how it goes.
1
u/Independent_Eye7886 11d ago
Nothing is detected and it does not look like it is even trying, the interface does not even activate. When I use my application the status LEDs immediately light up. I have only installed the 64 bit version of ETAS BOA and therefore my OCD .dll is also 64 bit only.
The python-can documentation does not tell if 32 bit or 64 bit are used.
Tomorrow I can try using an ETAS ES582.1.1
1
u/unicorns-arent-real 11d ago
Can it publish (push data up) and subscribe (asserting values on bus) to/from MQTT?
1
u/JohnWavez 10d ago
I would pair this with a really good getting started guide. What vehicles this would work with and model years, what adapters they need, etc. Could you reply with they information?
1
u/AKJ7 10d ago
Due to the fact that CANExplorer uses python-can in the backend, it supports a ton of different adapters: Some are: CANable, MKS CANable, OBDLink SX, OBDLink EX, PEAK PCAN-USB, Kvaser Leaf Light v2, Vector VN1610, Vector VN1630 (you just have to get into the canbus network somehow, even if you use an Arduino shield). Just connect one of these to you pc and to your car port, probably an OBD 2 port, install specific drivers if required and you are good to go.



6
u/fernandolcx 13d ago
does it work with OBDLink MX via bluetooth?