SavvyCAN is a cross platform QT based C++ program. It is a CAN bus reverse engineering and capture tool. It was originally written to utilize EVTV hardware such as the EVTVDue and CANDue hardware. It has since expanded to be able to use any socketCAN compatible device as well as the Macchina M2 and Teensy 3.x boards. It can capture and send to multiple buses and CAN capture devices at once.

It has many functions specifically meant for reverse engineering data found on the CAN bus:

- Ability to capture even very highly loaded buses

- Ability to connect to many dongles simultaneously

- Scan captured traffic for data that looks coherent

- Show ASCII of captured data to find things like VIN numbers and traffic to and from the radio

- Graph data found on the bus

- Load and Save many different file formats common to CAN capture tools (Vector captures, Microchip, CANDo, PCAN, and many more)

- Load and Save DBC files. DBC files are used to store definitions for how data are formatted on the bus. You can turn the raw data into things like a RPM, odometer readings, and more.

- UDS scanning and decoding

- Scripting interface to be able to expand the scope of the software

- Best of all, it's free and open source. Don't like something about it? Change it!


Links to all of the binary versions (Updated June 19 2018 - Version 187)

Version 186 had several bugs. It will be beneficial for anyone on V186 to update to 187 as soon as possible.



Windows (64 Bit)

Windows (32 Bit)


GVRET Firmware Updater  (Updated Nov 10, 2017 - Version 343)

M2RET Firmware Updater (Updated May 18, 2018 - Version 345)


The GVRET/M2RET firmware updaters have scripts for use with Windows and OSX. It can be used to automatically update the firmware to the newest version without having to compile anything. 


A half hour video that walks through SavvyCAN and how to use it. The video is a little dated now (several SavvyCAN versions old) but still a good resource for getting into SavvyCAN. 


GVRET compatible capture devices are available at (Dual CAN with sdCard) (Single CAN all-in-one board) (Tesla Model S Kit with adapter)


The source code can be accessed on GITHub.


Recent Changelog (for a more complete changelog see github):


  1. June 19 - 2018 (V187)

    1. Fix GVRET serial on OSX

    2. Several small fixes for file loading

    3. Fix DBC signal interpretation for signals near the 64 bit boundary

    4. Fix UDS and ISO-TP code to work with extended frames

  2. June 04 - 2018 (V186)

    1. Fixes to socketcan (Previous release added some nasty bugs)

    2. Addition of error frame and RTR reception in socketcan driver

    3. Fixed loading of native and CRTD files that included frames with zero data bytes

    4. Fixes to online help file system

    5. Fixes to GVRET TCP/IP system

    6. Fixed BLF file loading

    7. Fixed ability to save and automatically reload connection settings

    8. Reworked the Range State window to provide better results

    9. Fixed interpreted frames glitch on Windows

    10. Added ability to set filters with keyboard in Playback window

    11. Fix to allow custom frame sender to send frames with ID = 0

  3. Apr 24 - 2018 (V184)

    1. All screens have built-in documentation now! Press F1 when a screen has focus to get help for that screen.

    2. The font size used in the program can now be changed. This is helpful for hiDPI monitors. 4K is painful otherwise.

    3. Many new file loaders (Canalyzer ASC and BLF, PCAN v2, canhacker trace files)

    4. Save to candump format

    5. Fixes for DBC loading

    6. Remove DBC status from main screen (use the DBC File Manager)

    7. Clean up in GVRET code, extra fault handling

    8. GVRET devices can send MARK events that show up in this program now

    9. GVRET support over TCP/IP. Only supported on ESP32 at the moment.

    10. Fixes for Custom Frame Sender Window, Realtime mode in Flow View, ISOTP/UDS Decoder, Scripting Interface

    11. Fixes to auto scroll mode on Main Screen

    12. IDs shown as either 3 or 8 hex digits on Main Screen

    13. ASCII column on Main Screen shows any text characters in the CAN data

    14. Columns on Main Screen can be resized and should stay that way when program is next run

    15. Sorting enabled on columns on Main Screen. Click column headers to resort

    16. Fixes to overwrite mode to make it work better with interpreted frames

    17. Removed irrelevant menu items - some were half done, some not meant for general usage. They're gone now.

    18. Added additional example files (mostly scripts to show how it can be used)

    19. Graphing Screen now has a coordinate readout that gives you the coordinates of the nearest point on the nearest graph to where you clicked. Double clicking puts a circle at that point.

  4. Nov 9 - 2017 (V180)

    1. Graphs can now be OpenGL accelerated for added prettiness and perhaps a speed boost. This is a preference.

    2. Sped up realtime graphing

    3. Ability to utilize multiple scripts at the same time

    4. Scripts can have user editable parameters now (found in a list)

    5. SocketCAN fixes

    6. Frame data analysis now has a graphical histogram

    7. Continuous logging mode - ability to log to file in realtime so data is constantly written to disk.

    8. Fixed TAB order for all forms

    9. ISOTP and UDS decoding VERY much expanded

    10. Connection window rewritten to be much more intuitive.

    11. Ability to use J1939 for DBC decoding

    12. M2 and CANDUE2.2 boards are now supported along with their third bus (dedicated Single Wire CAN)

    13. Playback window has been totally rewritten to be multi-threaded

    14. Playback window also now supports original frame timing

    15. Main frame list can now be sorted by various columns

    16. Sent frames are now timestamped with true microsecond resolution

    17. Other misc bug fixes

  5. Aug 27 - 2017 (V174)

    1. Fixes to DBC loading

    2. Removed dependency on QScintilla - Much easier to compile yourself now!

    3. Updated QCustomPlot to newest beta - Mostly transparent

    4. A lot of work to make ISOTP and UDS work better

    5. Fixes to overwrite mode to make it work better

    6. Allow connection window size and position to be saved

    7. Make scrolling of the main frames window work better

    8. A lot of work to make scripting more powerful

    9. Addition of a "following" mode to graphing. Allows for continuing to visualize data as it comes in

  6. July 13 - 2017 (V171)

    1. Some small fixes to allow compiling on OSX and Linux more easily

    2. Moved all binaries over to QT 5.9.1 which is a long term support release for Qt

    3. Add "System Time" as a frame timing option - Time stamp incoming frames with your system time

      1. Added ability to format the system timestamp to your preference. 

    4. Fix a bug in the DBC loader

    5. Make GUI update more quickly

    6. Fix overwrite mode to actually update the GUI now

  7. May 21 - 2017 (V168)

    1. Fixed DBC loading bugs

    2. Added ability to save and load DBC attributes

    3. Added ability to set colors for DBC signals

    4. Added kvaser format for file loading

    5. Fixed graph definitions loading/saving

    6. Added a serial console to connection window (for GVRET devices)

    7. Much more work on UDS scanning window (many more features!)

  8. Jan 08 - 2017 (V163)

    1. Changed PCAN extension to be the proper one.

    2. Changed "little endian" text to be more descriptive

    3. Fix broken DBC string signal code

    4. Make signal size automatically update in signal editor

    5. Fix crash bugs in discrete and flowview windows

    6. Fixed multiplexed signal code

  9. Jan 05 - 2017 (V162)

    1. Fixed crash bug when trying to send to a socketcan device without it actually being connected

    2. Fixed bug that allowed spaces in signal names (but this isn't allowed)

    3. Show the number of actually connected buses instead of the number of potentially connected buses

    4. Fix visual issues only found on OSX involving the 8x8 data grid

  10. Jan 02 - 2017 (V161)

    1. Switched to a new connection system that supports multiple devices at once and socketcan (Linux only)

    2. Added a bisect window which can cut the master frame list into two pieces

    3. Misc bug fixes

    4. More DBC bug fixes

    5. Attempts to synchronize timebase of all connected devices

    6. Firmware updater window works now

  11. Sept 13 - 2016 (V157)

    1. Added PCAN file format for loading

    2. DBC loading bug fixes

    3. More timing info in the Frame Info Window

    4. Now possible to double click the name of a graph to edit it

  12. Jun 7 - 2016 (V156)

    1. More implementation of "Discrete State" window

    2. Fixed custom frame sender

    3. Better implementation of UDS scan window

    4. Fixed various crash bugs

    5. Better time synchronization between GVRET hardware and SavvyCAN

    6. Stability improvements

    7. Better, less brittle file loading

    8. New data graphing system built more closely with DBC signals.

  13. Feb 7 - 2016 (V151)

    1. Fixed some nasty crash bugs in the graphing system

    2. Increased communications and program stability

  14. Jan 30 - 2016 (V150)

    1. Fixed a wide variety of crash bugs 

    2. Added saving of last used connection method. It is now possible to click "Connect" immediately upon starting the program if settings haven't changed.

    3. Fixed up old file loading code in playback window (now uses unified system)

    4. Added Vehicle Spy format for input (not saving yet)

    5. Added a screen that allows for very configurable fuzzing on the bus

    6. Added a screen that somewhat automates UDS scanning

  15. Jan 21 - 2016 (V148)

    1. Changed the default file format to the native GVRET format (from CRTD)

    2. Fixed CAN-DO loading and saving

    3. Added ability to create new DBC files

  16. Jan 19 - 2016

    1. Added IXXAT file format for frame loading/saving

    2. Added CAN-DO format for loading/saving

  17. Jan 17 - 2016

    1. Added ability to load and use more than one DBC file at a time

    2. Fixed some issues with the use of DBC files

    3. Added ability to directly graph signals (even multiplexed signals)

  18. Jan 11 - 2016

    1. Added multiplexed signals to DBC screen and the rest of the program

    2. The signal editor now shows all used bits in light gray making it easier to