Ashcon Mohseninia's Rust-Based Open Vehicle Diagnostics Aim to Break the Manufacturer Stranglehold
Written in Rust, Open Vehicle Diagnostics aims to reach feature-parity with expensive manufacturer-specific ECU management solutions.
Undergraduate student Ashcon Mohseninia has released a Rust-based open source tool, created for a final year project at the University of Reading, designed to offer engine control unit (ECU) diagnostics: Open Vehicle Diagnostics (OVD).
"I know there are some open source diagnostic software suites out there that work on Linux," Mohseninia writes of the project. "However they are focused on the ELM327 adapter and OBD2, whereas this is focused more on the more advanced diagnostics, essentially building a utility which could have feature parity to OEM diagnostics software such as Daimler's Veidmao/Xentry/Das or VW VAG software."
"I've been noticing for a long time how generic OBD scan tools can only touch the engine's ECU and not run any advanced diagnostic commands on more control units in a car. This came to bite me in March last year when I did some work to my cars transmission (W203 Mercedes C Class), and it threw an error code. I had to use an Arduino to write custom CAN Frames to the TCM module to clear them, which took ages, as my local Mercedes dealer was charging me £100 [$137] just to clear the error code. This is what inspired me to create a car diagnostic application that is free, open source and can work with a common JSON format, in contrast to OEMs' proprietary software which only works with their own files and only their hardware (or approved hardware)."
In development for the last nine months, Open Vehicle Diagnostics (OVD) is described as "far from finished" but with a range of features including: A CAN analyzer for packets accessible via the ODB-II port; automated scanning for ECUs which support the UDS or KWP2000 protocol; advanced JSON sessions; parsing of Daimler's CBF file format and conversion to open JSON; and full support for J2434 passthrough, offering broad compatibility with diagnostic adapters.
"I do plan on continuing this project long into the future as part of my free time, as long as there is a demand to try and keep car diagnostics open rather than letting OEMs capitalize on letting only their expensive software do this kind of diagnostics," Mohseninia explains.
"[The] main features I intend to add within a year: SocketCAN Support — useful for desk-testing of ECUs, and means you could theoretically run this on nothing more than a RPI and CAN shield; decoding more OEM formats — my next goal is to decode Daimler's SMR-D file format and begin looking at VAG's data formats which is used for Scoda, VW, and Audi ECUs."
The source code for OVD is available on GitHub under the GNU General Public License 3.