CANtrip Tech Demo

CANtrip

An 86-second tech demo

v1.5.0 - Yukari · Qt 6 · C++20 · GPLv3
0:00 / 1:26

    Everything the film shows as built is in CANtrip v1.5.0 today, and every format, field name and constant on screen comes from the source. The roadmap sheet lists what is planned.

    Transcript
    1. CANtrip. An open-source CAN and CAN FD analyzer for Windows. Version 1.5.0, Yukari. GPLv3.
    2. Why CANtrip. Commercial analyzer licenses run from a few thousand to tens of thousands of euros per seat, and free tools are mostly command-line first. CANtrip aims for the free, graphical corner.
    3. Standing on proven parts. CANtrip writes what is specific to CAN analysis (the Qt 6 interface, the C++20 core, the can2pcap extcap and the AVlabs CAN backend) and reuses Wireshark's tshark for dissection and dbcppp for DBC files. Vendor DLLs load at runtime.
    4. Three processes, one pipeline. can2pcap reads the adapter through the vendor-neutral backend and writes SocketCAN pcap records to a fifo; tshark dissects them and emits JSON; cantrip.exe parses, decodes and fans out to the trace, graphs, bus load and log writers. Why: no frame parser to maintain, one class per new adapter, drivers optional, the same capture works in Wireshark, and a GUI-free core that made headless mode possible.
    5. Transmitting while capturing. On Vector, CANtrip opens a second XL port with a zero permission mask. PCAN-Basic refuses a second initialization, so on PEAK CANtrip sends through a named pipe into can2pcap, which writes on the handle it already owns. Sent frames re-enter the receive pipeline tagged TX.
    6. One frame, end to end. 0x100 EngineData: bits on the wire, a 16-byte SocketCAN record, tshark's JSON fields, then the DBC decode: 0x2C50 times 0.125 is 1418 rpm, 0x82 minus 40 is 90 degC. Then the trace, graphs, bus load and log.
    7. What's in v1.5.0. CAN and CAN FD on PEAK and Vector, DBC decode, up to six graph windows, bus load statistics, cyclic and one-shot transmit, ASC and CSV logging with replay, runes, bit timing from a target sample point, bitrate autodetect, listen-only, headless mode and a synthetic source.
    8. Same core, no window. With --headless, main.cpp starts a QCoreApplication and a HeadlessRunner instead of the Qt window, on the same capture, decode, send and logging classes.
    9. Where it goes next. v2.0: multi-bus monitoring and a gateway. v3.0: scripting, UDS diagnostics, trace filter and search, multiple DBCs, counter and CRC checks, trigger-based logging. v4.0: Linux and SocketCAN. Unscheduled: MF4 logging, a programmatic API, more adapters.
    10. One bus to sniff them all. Free software under GPLv3. github.com/avmolaei/CANtrip, documentation at avmolaei.github.io/CANtrip.