FREEDIAG
Vehicle Diagnostic Suite



[ Home ] [ Download @Sourceforge ] [ Documentation ]
[ Source code @github [primary] ]

Freediag is an experimental suite of vehicle diagnostic protocols and an OBD II (mostly) compliant ScanTool, designed to run on Linux and Windows platforms natively. Only a command-line interface is provided at the moment.

OBD II is a standard for vehicle diagnostics relating to emissions implemented on all US vehicles since the mid 1990s. Europe has introduced a standard called EOBD which is basically the same.

The idea is that any garage/workshop will have a scantool and can diagnose vehicles with emissions problems - these are brought to the attention of the driver by a "Check Engine" light.

This suite also contains protocol suites for some manufacturer specific protocols such as the protocol used on some Mercedes Benz gearbox controllers. It is intended to add the VW and Nissan diagnostic protocols eventually.

It is intended that this grow into a full blown diagnostic suite for configuring and checking faults on many vehicles.

There are 4 physical interfaces specified for vehicles, ISO9141 (K-Line), ISO14230 (effectively the same as ISO9141), SAE-J1850 VPW and SAE-J1850 PWM. A 5th interface type (CANbus) is increasingly popular.

Of important note is that no part of CANbus / ISO 15765 is supported by freediag at the moment.

The bulk of the original code and design was written by Richard Almeida, the code was then checked and made more portable as the first stage of a project to make it portable to Windows by Andy Whittaker. Much work has been done by Bjorn Helgaas on enhancing the usability of the scantool, sanitising the comments in the code and adding functionality to the scantool.

From around 2006 to 2014, the project was in a prolonged coma, with only a few commits now and then. Some changes in >2.6 linux kernels caused some timing issues, and the increasing popularity of USB-Serial converters (not handled properly in freediag, in large part due to the ugliness of the linux TTY API) also became a problem. Since 2014, the current maintainer (fenugrec) fixed most of those old issues, adapted freediag to run natively on Windows (i.e. no Cygwin / MSYS requirement), and added proper ELMxxx support.


Since release 1.01, freediag can run natively on Windows (i.e. without CYGWIN) as well as linux / unix-based platforms.

If the current packages available on SourceForge causes problems, the most recent code can be found in the git repositories mirrored on both Sourceforge and github (see links at the top of this page), as the releases can be a few commits out of date. Any prospective user should be prepared to spend some time getting the package to work for their current setup. All bug reports and patches are welcome and should be submitted through the GitHub project page.

Hardware Support:

Vehicle Protocol Support:

Future direction
Development is mostly at a standstill. In an alternate universe, freediag would eventually support J2534 hardware, and CAN / ISO15765 protocols. None of this is either planned or worked on, to my knowledge. Contributions are always welcome.

Application Support: