RefuhrandClaude Opus 5 3ae429ae48 feat: add gs_usb support on Windows
candleLight, CANable, CANnectivity and cantact adapters speak gs_usb. On
Linux and macOS the kernel driver exposes them as SocketCAN interfaces, so
SavvyCAN already reached them through Qt SerialBus. Windows has no such
driver, which left those adapters unusable there.

Add a GSUSBConnection that talks to the hardware directly over WinUSB:

- one connection per physical device, one SavvyCAN bus per CAN channel
- CAN FD including BRS, plus RTR, extended IDs and error frames
- known good bit timings for 16/48/80/160/170 MHz device clocks, with a
  generic solver for clocks the tables do not cover
- hardware timestamps, unwrapped across the 32 bit rollover and anchored
  to the host clock so they line up with the rest of SavvyCAN

gs_usb multiplexes every channel over a single USB bulk IN endpoint, so a
single reader thread drains it and hands frames to the connection thread in
batches, coalescing the wakeups. That keeps one producer on the lock free
queue, which the tx echo path already writes to.

Device scans skip adapters that a live connection holds. candle_dev_open()
shares the file handle and queues read URBs immediately, so probing a device
in use would consume frames the open connection is waiting for.

connections/candle_api is an unmodified copy of the candle Windows API, LGPL
3.0 rather than MIT and only compiled into Windows builds. See its README for
provenance.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XZnuZJ7zc3e8hk6C8bGDZN
2026-07-29 09:25:32 +02:00
2020-09-26 03:45:19 +03:00
2026-07-29 09:25:32 +02:00
2026-06-26 17:24:58 +02:00
2026-03-06 23:10:26 -03:00
2016-06-24 17:27:15 +02:00
2026-07-29 09:25:32 +02:00
2026-03-06 20:52:22 -03:00
2021-05-12 13:30:07 +02:00
2026-01-13 19:57:08 -05:00
2021-05-30 23:40:47 -04:00
2022-04-05 03:33:43 -04:00
2021-07-03 11:22:24 +02:00
2015-04-27 21:38:33 -04:00
2026-06-08 15:13:46 +02:00
2026-06-08 15:10:57 +02:00
2026-06-08 15:13:13 +02:00
2026-06-08 15:13:13 +02:00

SavvyCAN

Qt based cross platform canbus tool (C) 2015-2024 Collin Kidder

A Qt5 based cross platform tool which can be used to load, save, and capture canbus frames. This tool is designed to help with visualization, reverse engineering, debugging, and capturing of canbus frames.

Please use the "Discussions" tab here on GitHub to ask questions and interact with the community.

Requires a resolution of at least 1024x768. Fully multi-monitor capable. Works on 4K monitors as well.

You are highly recommended to use the CANDue board from EVTV.

The CANDue board must be running the GVRET firmware which can also be found within the collin80 repos.

It is now possible to use any Qt SerialBus driver (socketcan, Vector, PeakCAN, TinyCAN).

It should, however, be noted that use of a capture device is not required to make use of this program. It can load and save in several formats:

  1. BusMaster log file
  2. Microchip log file
  3. CRTD format (OVMS log file format from Mark Webb-Johnson)
  4. GVRET native format
  5. Generic CSV file (ID, D0 D1 D2 D3 D4 D5 D6 D7)
  6. Vector Trace files
  7. IXXAT Minilog files
  8. CAN-DO Logs
  9. Vehicle Spy log files
  10. CANDump / Kayak (Read only)
  11. PCAN Viewer (Read Only)
  12. Wireshark socketcan PCAP file (Read only)

Dependencies

Now this code does not depend on anything other than what is in the source tree or available from the Qt installer.

Uses QCustomPlot available at:

http://www.qcustomplot.com/

However, this source code is integrated into the source for SavvyCAN and one isn't required to download it separately.

This project requires 5.14.0 or higher because of a dependency on QtSerialBus and other new additions to Qt.

NOTE: There is a work-in-progress branch QT6WIP that can compile with QT6 (Tested with Qt 6.9 on 2026-03-11). Support for QT6 is approximately "beta" quality. Most all functions should work, please send issues if found.

It appears that the current binary build for MacOS requires at least MacOS 10.15

Instructions for compiling:

Download the newest stable version of Qt directly from qt.io (You need 5.14.x or newer (tested with 6.9.0))

cd ~

git clone https://github.com/fasttube/SavvyCAN.git

cd SavvyCAN

~/Qt/6.9.0/gcc_64/bin/qmake

make

Now run SavvyCAN

./SavvyCAN

On linux systems you can run ./install.sh to create a desktop shortcut.

Compiling in debug mode for additional information

qmake CONFIG+=debug

make

What to do if your compile failed?

The very first thing to do is try:

qmake

make clean

make

Did that fix it? Great! If not, ensure that you selected SerialBUS support when you installed Qt.

What to do if qmake fails with error Project ERROR: Unknown module(s) in QT: qml serialbus help on Ubuntu? :

sudo apt install libqt5serialbus5-dev libqt5serialport5-dev qtdeclarative5-dev qttools5-dev

Used Items Requiring Attribution

nodes by Adrien Coquet from the Noun Project

message by Vectorstall from the Noun Project

signal by shashank singh from the Noun Project

signal by juli from the Noun Project

signal by yudi from the Noun Project

Death by Adrien Coquet from the Noun Project

S
Description
QT based cross platform canbus tool
Readme MIT
13 MiB
Languages
C++ 97.1%
C 1.9%
Shell 0.4%
QMake 0.3%
JavaScript 0.1%