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!

 

Need to get in touch for support? kidderc at the domain of gmail is the way to do so.

 

Links to all of the binary versions (Updated August 08 2019 - Version 199)  - These are now found on GitHub

OSX

LINUX (Somewhat broken. Use the bleeding edge build for now)

Windows (32 Bit)

The windows 64 bit files are not available currently. But, the 32 bit version above should work fine on 64 bit Windows.

 

There is now a bleeding edge binary compiled for LINUX. 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: https://github.com/collin80/SavvyCAN/releases/tag/continuous

 

  

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

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

ESP32RET Firmware Updater (Updated Mar 17, 2019 - Version 363)

 

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.

https://youtu.be/kdA5Gdf3FAk 

 

GVRET compatible capture devices are available at EVTV.me

http://store.evtv.me/proddetail.php?prod=ArduinoDueCANBUS&cat=28 (Dual CAN with sdCard)

http://store.evtv.me/proddetail.php?prod=EVTVDue2 (Single CAN all-in-one board)

http://store.evtv.me/proddetail.php?prod=TeslaCANKit&cat=28 (Tesla Model S Kit with adapter)

 

The source code can be accessed on GITHub.

 

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

 

  1. 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)

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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.

  10. 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