CanLab
A desktop workstation for reverse-engineering a CAN bus. Load a capture, work out which bytes carry what, write the signal definitions down, check them against real frames, and export a DBC that other tools can read.
Watch it work
For each beat the frame pushes in on the control being described, dims the rest, rings it and captions it, then pulls back out. The rectangle is the widget's own geometry, read off the live window at record time, so a control that moves in a later build takes its callout with it.
It is a real analysis. The first capture turns out to be a marine NMEA 2000 bus rather than the J1939 that 29-bit identifiers usually suggest. The counter detector finds the sequence byte the specification defines without being told the protocol. A wind speed signal is defined, and the same two bytes are plotted both ways round: little-endian reads 0.72 to 0.87 m/s, big-endian claims 184 to 223.
The full walkthrough
Every tab, in four parts, recorded from the running application with captions on by default.
All the videos are generated rather than hand-recorded. The recorders drive a real main window under Qt's offscreen platform and call the same slots the buttons call, so a scene that stops working fails the run instead of quietly recording a stale screen.
What it is for
You have a capture from a vehicle bus and a few thousand frames of hex. The job is to work out which arbitration IDs matter, which bytes inside them move, which of those are actually signals rather than counters and checksums, what physical quantity each one represents, and then to write that down in a form other tools accept. CanLab is built around that loop.
The workflow
Load, narrow down, define, verify, export. Start here if you have a capture and no idea what is in it.
All 16 tabs
What each one does and when you would reach for it.
How the analysis works
Counters, checksums, entropy, correlation, and what the confidence numbers do and do not mean.
The transmit gate
What ARM TX covers, what it does not, and why that distinction matters.
What it is not
It is not a signal identifier. The analysis produces candidates ranked by heuristics, and a confidence figure is a match fraction over the frames you loaded, not a proof. Every result needs verifying against the vehicle before you rely on it. The project is a single-author effort, in beta, and has not been validated across a wide range of real vehicles. The limitations are listed plainly.
CanLab can transmit on a CAN bus. Use it only on isolated bench setups: a
benchtop ECU, vcan0, or dedicated lab hardware. Injecting or
forwarding frames on a live vehicle bus can interfere with braking,
steering and airbag systems. Read Safety
first.
Try it without hardware
A sample capture ships with the source at
canlab/sample_data/sample_kona_drive.csv: 6,610 frames across
10 arbitration IDs over 10 seconds, at rates from 1 Hz to 100 Hz. Every
offline feature works on it, so you can go through the whole
workflow before touching a vehicle.