CanLover – Can Bus Analyzer for Vector/Peak/Kvaser on Windows and Linux

denisswfc1 pts0 comments

CanLover — CAN Bus Analyzer | Free CANalyzer Alternative for Linux & Windows

v1.0<br>SocketCAN Native<br>ImGui · C++20

Professional

CAN Bus Analysis

for engineers.

Inspect, decode, record, and replay CAN bus traffic with a modern,<br>lightweight, cross-platform tool. The free alternative to Vector CANalyzer<br>and PEAK PCAN-View — built from the ground up for automotive, EV,<br>and embedded systems engineers.

Download Free

Explore Features

Compatible with<br>SocketCAN<br>PEAK PCANBasic<br>Vector XL<br>Kvaser CANlib

Hardware adapters supported

SocketCAN (Linux)

PEAK PCANBasic

Vector XL Driver

Kvaser CANlib

DBC files

SYM files

ASC / TRC / BLF logs

Capabilities

Everything you need<br>to work with CAN bus

From raw frame capture to J1939 diagnostics — all in one professional tool with a modular licensing model so you only pay for what you use.

Bus ConfigurationFree

Add multiple CAN channels — physical hardware or virtual. Set bitrate per channel, attach DBC/SYM databases, and connect or disconnect with one click. Logs to ASC, TRC, and BLF simultaneously.

Multi-channel<br>ASC · TRC · BLF<br>DBC / SYM

Raw TraceFree

Live scrolling frame trace with a 2000-frame ring buffer. Switch between scrolling and unique-ID view. Real-time text filter, cycle-time tracking, TX-frame highlighting, and timestamp/DLC/hex columns.

2000-frame buffer<br>Unique-ID view<br>Live filter<br>TX highlight

Signal Table DbcDecoder⚙ In progress

Live decoded signal values from your DBC or SYM database. Columns show message name, signal name, physical value with unit, type, and last-update time. Filterable and freezable.

Physical values<br>Filterable<br>Freezable

Node Logic NodeLogic ⚙ Beta: In progress

A visual scripting canvas built directly into CanLover. Drop event nodes that fire on incoming CAN frames, signal conditions, or timers — then wire logic, data, and action nodes to build automated CAN behaviours without writing a line of code. Send frames, start periodic tasks, set variables, and log values, all driven by live bus traffic.

Event-driven<br>CAN frame triggers<br>Signal conditions<br>Periodic timers<br>Automated TX

Signal Plot SignalPlot

Multi-canvas time-series plotter with a configurable N×M grid. Drag signals from the signal tree onto any canvas. Stacked subplots or shared Y-axis per canvas, adaptive markers that appear when zoomed in, and cursor dots that follow the replay scrubbar position via binary search. Data is never discarded — time regressions appear as NaN gaps so all history stays intact.

N×M grid layout<br>Drag & drop signals<br>Shared Y-axis<br>Replay cursor<br>NaN gaps on seek

CAN TransmitFree

Compose and send raw frames manually or via DBC-decoded message definitions. Schedule periodic TX at any interval. Built-in signal waveform generators: Fixed, Ramp Up, Triangle, and Sine — continuously re-encodes and pushes to the TX scheduler.

Periodic TX<br>Signal waveforms<br>DBC encoding

Log-file Replay Free

Open recorded log files and replay them at 0.1× to 16× speed. Pause, resume, loop. Drag the scrubbar to any position — Signal Plot cursors update in real time. On seek, Raw Trace rebuilds from scratch while Signal Plot retains history with visual NaN gaps.

0.1× – 16× speed<br>Scrubbar<br>ASC · TRC · BLF<br>Loop mode

J1939 Network J1939 Decoder⚙ In progress

Automatically discovers J1939 nodes on the bus and displays their address, manufacturer name, function, and last-seen time. The indispensable view for truck, bus, and heavy equipment CAN networks.

Node discovery<br>Manufacturer DB<br>Live timestamps

DTC Panel J1939 Decoder⚙ In progress

J1939 Diagnostic Trouble Code reader. Shows PGN name, source address, SPN, FMI, occurrence count, human-readable descriptions, and timestamp for each active fault code.

SPN / FMI<br>Occurrence count<br>J1939 DM1

Freeze Frame J1939 Decoder⚙ In progress

Captures J1939 freeze-frame snapshots at the exact moment a DTC fires. Displays the trigger SPN/FMI alongside all signal values recorded at the instant of the fault — invaluable for root-cause analysis.

DTC-triggered<br>Signal snapshot<br>SPN / FMI context

Database BrowserDbcDecoder

Browse all loaded DBC and SYM files through a hierarchical message and signal tree. Inspect attributes, value tables, and signal scaling without leaving the application.

DBC browser<br>SYM browser<br>Signal tree

Bus StatisticsFree

Per-channel live counters for bus load (current, average, peak), RX/TX frame and byte totals, and a full error-frame breakdown by kind — bit, form, stuff, CRC, ACK, bus-off, and more. Error counts shift from green to red as the risk of bus-off increases.

Bus load %<br>TEC / REC<br>Error breakdown<br>Reset counters

decoder_chain.cpp

// First-match modular decoder chain<br>std::optionalDecodedFrame><br>DecodeChain::decode(const CanFrame& frame) {<br>for (auto& dec : decoders_) {<br>if (auto r = dec.tryDecode(frame))<br>return r; // first match wins<br>return PassthroughDecoder{}.decode(frame);

// Lock-free SPSC hot path<br>void DriverThread::run() {<br>while (running_) {<br>CanFrame f = hw_.read(); // blocking<br>spsc_.push(f);...

signal frame j1939 time from live

Related Articles