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. SavvyCAN can use any CAN interface supported by QT's SerialBus system (PeakCAN, Vector, SocketCAN, J2534, etc) 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!


Need to get in touch for support? Want to chat with the community? Join the discussions at the GitHub project:


Links to all of the binary versions (Updated Dec 04 2022 - Version 208)  - These are now found on GitHub





There is now a bleeding edge binary compiled for LINUX and Windows (64 Bit). This is built from the most up to date commit on GitHub but there are no promises about stability. If you'd like to try it then go to:



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

M2RET Firmware Updater (Updated May 18, 2018 - Version 345 - Recompiled May 7 2020 to fix issues with SDCards)

ESP32RET Firmware Updater (Updated August 2, 2023 - Version 618)

The latest ESP32RET has support for more boards, bug fixes, listen only mode works, bluetooth has been removed (took up too much RAM and caused stability issues)


The GVRET/M2RET/ESP32RET 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 (Custom Dual CAN board based around ESP32. Second CAN bus is CAN-FD capable) (Dual CANBus, 2MB EEPROM, Based around Arduino Due) (Model 3 Interface for vehicles made before Jan of 2019) (Model 3 Interface for vehicles made on or after Jan of 2019)


The source code can be accessed on GITHub.


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


  1. V208 - 4 December 2022

    1. Updated help files

    2. Fixed bugs in DBC code

    3. Added ability to read CANServer binary log files

    4. Support drag/drop files onto app icon

    5. Fixes to ISO-TP decoding

    6. Datagrid now can show signal names when doing DBC edits

    7. Added ability to set notch and expire intervals in sniffer

    8. Support for reading wireshark files

    9. Added preliminary support for lawicel devices (not great yet)

    10. UDS Scan window has been redone to make it more configurable

    11. Increased support for CAN-FD. It's not complete yet but some things support CAN-FD now

    12. Bisector window can now break frames along bus boundaries

    13. Graphing window can now respect bus number so the same ID but on multiple buses won't break things any longer.

  2. V204 (Continuous Build) - 5 May 2021
    1. Now graphs of signals with DBC value tables will be annotated with the value strings and brackets
    2. The graphing window can be opened multiple times now with different graphs in each window
    3. Graphing of multiplexed signals should be correct now
    4. DBC signals are utilized if available in the Frame Data Analysis window to give more analysis
    5. The File Comparison window will now also use DBC signals to compare signal differences between the two sides. This is currently slow and poorly done. But, it works.
    6. PCAN version 1.3 files are now supported for loading
  3. V203 (Continuous Build) - 30 April 2021
    1. Added ability to load Tesla AP Snapshots. How you would get those is up to you.
    2. Several bug fixes for file loading
    3. Huge changes to graphing interface to support many different visualization modes
    4. Ability to filter main CAN frame view by bus
    5. Support for extended multiplexing (in DBC files)
    6. Bug fixes for fuzzing window, overwrite mode
  4. V201 (Continuous Build)
    1. VERY large changes to DBC interface.
      1. Now loaded DBC files that were loaded when the program was exited will be loaded when it is restarted
      2. GMLAN filtering support
      3. The entire way the DBC file is presented is entirely new now. The DBC is presented as a treeview with icons
      4. It is now possible to search for DBC signals and messages by name and ID
    2. Help files are now just HTML files
    3. Bugfixes to a few different file format loads (CANAlyzer for one)
    4. Large changes and bug fixes to ISO-TP / UDS decoder. It actually works now.
    5. Backend is now more compatible with QCanBusFrame and potentially is better geared toward CAN-FD support (though CAN-FD is not supported properly yet)
    6. Added text boxes to Fuzzing window so the values can more easily be set and viewed
    7. Fixes for Sniffer Window
    8. Changed to logarithmic view for bit counts in Frame Details Window. This makes it far easier to see the distribution.
    9. Added a special CAN driver that allows for tunneling CAN traffic over MQTT back and forth to SavvyCAN
  5. Aug 08 - 2019 (V199)
    1. Added a new window - The Signal Viewer. This allows you to "watch" DBC signals to get their current value.
    2. Another new window - The Temporal View - Shows the timing for each ID that is on the bus
    3. Reworked connection window - now buses associated with a given device are shown as tabs and the tabs are numbered according to the actual bus number
    4. Overwrite mode now respects buses and only overwrites frames with the same ID on the same bus
    5. Keep track of the last directory used for file loading, saving, DBC files, filter definitions, scripts, etc so that the same directory is defaulted to thereafter for that function
    6. In the Frame Data Analysis window additional histogram and timing info was added
    7. Added support for latest CRTD format
    8. Support for uncompressed BLF files
    9. Additional bitfield triggers for Flow View window
    10. Support for GMLAN added in several places
    11. Updated help system to be strictly HTML based, added documentation for new windows
    12. Other misc bug fixes
    13. Reworked the main status bar a bit. It's more clear how to get help now (Hint - F1)
  6. April 14 - 2019 (V197)
    1. Fixes and improvements to overwrite mode
    2. Add automatic determination of file format while loading (still a bit beta quality)
    3. Various fixes to exiting program and opening windows
    4. The new graph window now shows which signal you used when setting up the graph
    5. Better support for pseudo sending when no buses are actually set up
  7. Mar 30 - 2019 (V196)
    1. Fixed file loading for a few of the formats
    2. Added CANOpen Magic file format
    3. Changed formatting in Comparator window to be clearer
    4. Fixed coloring for DBC signals
    5. Reverted timestamp changes from V195 as it breaks things on Windows 10
  8. Mar 17 - 2019 (V195)
    1. The Connection window should be a lot more intuitive now. Setting enable/disable and baud rates should all work now (update ESP32RET as well if you're using an ESP32)
    2. Add ability to load and save Cabana formatted files
    3. Add ability to save CANAlyzer ASC files
    4. Add ability to clone signals within the current message. Right click and select clone or select a signal and push F2
    5. Add signal caching. Mostly used by overwrite mode so that in that mode you get all signals within the message and can see their last updated value
    6. Revamped File Comparator window to be more intuitive and less confusing
    7. Reformat timestamps on main view to look better in a variety of circumstances
  9. Feb 27 - 2019 (V192)
    1. Fixed a crash bug in Flow View
    2. Many fixes to coloring issues when using a "dark" theme in your operating system
    3. Allow Frame Playback window to send frames even if no connections exist - Useful for testing against saved log files
    4. Automatically find ESP32RET devices on the local network and provide them as options to connect to
  10. Feb 21 - 2019 (V190)
    1. Bugfixes and improvements to TCP/IP remote connection to ESP32RET
    2. Bugfixes for DBC handling
    3. Allow GVRET serial connection to automatically connect to either ESP32RET serial or GVRET/M2RET
    4. Add "Save to Spreadsheet" command in Graphing view
    5. Bugfixes for loading graphing definitions
    6. Added ability to use any QT SerialBus compatible driver. But, now you have to use a SerialBUS virtual driver if you want to send traffic without any physical hardware (or use VCAN in linux)
    7. Drastic updates to Sniffer window - addition of many extra modes
    8. Updated help files to match new functionality
    9. Restructured Frame Info window and added a graph of each data byte over time
    10. Fixes for linux and OSX to make window management a little easier
    11. Fixes to loading of Vector ASC files
    12. Fixes for auto scroll mode
    13. Fixed frame # display in Playback Window
    14. Fixed PCAN file loading
    15. Better sorting by timestamp for Main window and ISO-TP decoder
    16. Ask for confirmation when closing a DBC file and automatically close sub windows
    17. Restructured DBC Signal Editor to fit in a smaller resolution
    18. Warning when starting Overwrite mode and make it actually work like it should
    19. Fixed a few more places with hardcoded number of buses
  11. 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