Automotive diagnostics have come a long way since the “idiot lights” of the 1980s. The current version of the on-board diagnostics (OBD) protocol provides real time data as well as fault diagnostics, thanks to the numerous sensors connected to the data network in the modern vehicle. While the hardware interface is fairly standardized now, manufacturers use one of several different standards to encode the data. [Alex Sidorenko] has built an open source OBD-II Adapter which provides a serial interface using the ELM327 command set and supports all OBD-II standards.
The hardware is built around the LPC1517 Cortex-M3 microprocessor and can accept a couple of different versions. Here’s the PDF schematic, and a set of Gerber files (ZIP archive) for the PCB layout, if you’d like to dig in to it’s internals. The MC33660 ISO K Line Serial Link Interface device is used to provide bi-directional half-duplex communication interface with the micro-controller. Also included is the TJF1051, a high-speed CAN transceiver that provides an interface between the micro controller and the physical two-wire CAN lines on the ODB-II connector. The serial output from the adapter board is connected to a computer using a serial to USB adapter.
The software is written in C++ for the LPCXpresso IDE – a GNU tool chain for ARM Cortex-M processors, but can also be compiled using a couple of other toolchains. He’s got instructions if you’d like to build the firmware from source, or if you’d like to program the adapter via Flash Magic.
We featured [Alex]’s inexpensive PIC based ODB-II interface way back in 2007, so he’s been working on this for a while and has a good grip on what he’s doing.
54 thoughts on “Open Source OBD-II Adapter”
i hate to the the guy but what does this do that my amazon ODBII cant? i checked his page but it only show design info.
I think the usefulness of an open sourced project is the possibility to expand and customize it for your own project.
Imagine someone (like me) wants to add a few gauges to their dashboard, but wants to make a nice setup instead of an OBD reader.
You might want to look at what’s available there. Most of them are just fit into the OBD-II connector nowadays (and only cost something like $5-10) with Bluetooth connectivity.
Of course, a lot of those use counterfeit chips, so there’s that.
The cheap ebay scanners don’t work on pre-ODB II cars or imports. Some either don’t support ODB-II or have much better support using proprietary protocols. Old Subarus use SSM, Volkwagon used VAG protocol. An open source adapter and application allows you to add support for whatever is needed.
If you have an OBD-I Suzuki, check out Rhinopower’s website!
Build it your self so that you know for sure it’s not going to fry your ECU because it’s badly built? (although if I built it, it probably would)
Many horror stories on youTube showing all sorts of bad stuff coming out of china.
To pass smog check. Clean plugging
Finally, someone can destroy the market of junk obd-II devices that cost a obscene amount and generally suck.
What are you talking about? You can get a bluetooth enabled one from amazon for $15
I’m confused… Is this better than the ELM327? The ELM327 has been around for a very long time now and the price for an ELM based scanner was down to about 10 bucks last I checked…
You missed the point. It’s up ^^^^^^, over your head.
It’s open source.
Yes its much better. Being open source and accepting my patches later firmware 1.21 (dev board and usb versions are upgradable – see the allpro web site) support VPW 4x speed protocol and large packets (2kb). With the pcm hammer open source tool you can read and write GM ‘0411 pcms used on various ls1 applications. See PCM Hammer release 3 (released 2018-12-31) or newer.
Steakhouse is there you still do BBQ?
the problem is fake elm 327 and the good ones, when you check HW revisions it doesnt match the official ELM products
I had a elm327 copy and it worked badly a certain baud rates, bought an original chip from elm, and problems solved, you have to be careful on Ex: Ebay Aliexpress etc …
There seems to be a lot of bad elm 327’s. I bought one from a (from an automotive webshop, not ebay) that just gave me endless problems. Bought a ODBLink later, works flawlessly, but cost $80 instead of $15.
Nice – is it available assembled? I am way too old to do SMT kitbashing – I’d rather pay for an assembled and tested board, but something open so I can hook into it and update it and so on.
Go back and read Jenny’s SMD post from a couple of weeks ago.
i was thinking since reading your post, likely it would be not much work to convert this design to through hole pcb… :)
Quick question for the pros – are ABS brakes diagnostics/exercising (activating the ABS system to purge trapped air) part of the OBD-II protocol or is it manufacturer specific (ie top secret unless you cozy up to Ford/Chevy/etc with a check)?
ABS is not covered under the compulsory information that vehicle manufacturers have to provide by law so the answer to that is no.
It has been an uphill struggle with manufacturers to force them to release the engine diagnostics and real time data information and, for now, that is where it stops.
An open source OBD will allow people that are brave enough to extract more and hopefully that will all be collected somewhere so that eventually there will be something equivalent to the X431 Launch that does a reasonable job on most cars. A perfect job on all cars is about as likely as viable cold fusion.
I think this is an important point that ties back in with the others about this vs an elm, even an ebay elm. I think the most common problem you come up against is how compatible it is with your car, ie how much is proprietary and how much is part of standards, which this tool itself wont help you with. But if you have or can work out the non standard protocol data then this tool would be good.
Id be interested to know what the appx. parts cost of this would be, if anyone has calculated it ?
This is a good point, its more about how compatible your software is with your car than your adapter, with most problem ive had being related to proprietary protocols rather than if my elm adapter is genuine or not… This adapter itself wont help with that, but it would if you had the details or could work it out.
Id be interested to know what the parts cost of this is if anyone has/does work it out ?
Ford has the OpenXC platform ( http://openxcplatform.com/ ) for reading stuff, but it also is really limited. The point being that you could put the codes from any vehicle on the reader, but even the Ford data is limited.
I happen to have couple of Chipkits with the network (includes 2 CAN interfaces) shield, so i was thinking of trying it, but since it’s for Fords only currently (no other car manufacturer or anyone else have contributed any codes) and i don’t have a Ford, it’s kind of useless to me.
I do wish it would take off.
Oh and the Ford reference device uses LPC1769.
Someone just needs to snoop the command sequence that the expensive tools use to do this. The bus isn’t authenticated, to my knowledge.
There exists at least one site which collects information on mfg-specific OBD-II commands.
yes thats right and what i want to do, as i have a knock off factory citroen adapter which works fine and does everything but it is reliant on a windows box and its software (Lexia) , so this stop me from accessing the data and doing what with it i want.
Is it using the serial interface (even bluetooth/usb-serial like pretty much everyone)?
I just sniffed the serial communications with “Free Serial Port Monitor” Request view when building drive computer for my OBD-I car.
And as it is just serial data, I used virtualbox to run windows XP IE6 test image from MS with the serial adapter on linux host.
No i dont believe it is, its an Actia device, i have sniffed the usb, and did get a basic helo working with a between a due in host mode and the device, but it was going to be a long haul to do anything with it.
Buy an OBD spliter and sniff the communication directly on the OBD port
thats what i did !
FYI: I’ve found this simpler [non-CAN bus] project a couple of years ago: http://www.mictronics.de/projects/j1850-vpw-interface/
Also, details on J1850 VPW protocol are here [PDF]: http://download.intel.com/design/intarch/papers/j1850_wp.pdf
Would be nice if included a single wire CAN interface (eg GM-LAN) on next rev.
OnBoard Diagnostics = OBD not ODB. This site is getting as bad as the Graudian
You’re not kidding! People trying to research the founding members of Wu-Tang Clan are gonna wind up here going “whaaaat???? You straight up buggin….”🤣🤣🤣
Great project ! However when I tried to order boards I got error that border and bottom silk layer is missing :-/
” … on-board diagnostics (ODB) … ” [sic]
Would be nice if the tag would also be fixed. And going back in time over all the other wrong tags and fix those too ;)
I second what @Alan Hightower says.
The next rev should have the ability to repurpose any pin that isn’t 4, 5 and 16 (grounds and +VE) to any method of communication. That to me would be a true open source OBD-II adapter that I would “do a Fry” and yell “Shut up and take my money!”
Soooo many manufacturers have used alternative pins for obscurity over the years and some even use the same pin. Take Pin 1 for example, GM use this for all their 33 kbit (and occasionally 83 kbit) single wire CAN data and is a common place for security negotiation to occur, whereas Mitsubishi have used it for MUT-II / MUT-III diagnostics and ECU reflashing.
Alex Sidorenko, if you ever happen to read this, please 1-UP this for Mk2 and make it truly something special by implementing any pin / any bus / any protocol. I’m confident you could achieve this with a couple of MCP2515 IC’s, a couple of NCV7356 IC’s and a handful of MUX8532 IC’s to deal with the switching.
I realise this may not be the cheapest solution, but there are so few products out there that offer this versatility that I think you could be onto a winner.
What’s the downside if you get it wrong? Can you bork the car’s MCdU/network?
Nice build, I can see this being useful when combined in other projects. The biggest problem I have found with this interface is the car companies not releasing all their fault codes. But that’s a software issue.
It’s funny how far you have to progress just to get back to a similar point in the past. Before the “idiot” lights of the 80s we had gauges. They were also real time.
Elm327 costs less than 10.00 on Amazon, and an app called Torque( Android) is free or 5.95 for the deluxe version.
Torque when paired with the ELM will give you every bit of data tour car puts out including fault codes. In addition you can reset the red fault code light. You can also use it (your smart phone) as a head up display.
only if your car outputs said data in the standard that those devices are operating in which many dont.
Plus the datarate is shite for anything more than an a cool thing to show your friends and quality is questionable.
Stop boasting those crap ELM tools, people. CAN networks offer a lot more than most think, but you can’t access those extra things with a dongle.
Apart from standardized messages (rpm, speed, faults) there is a ton of traffic that is manf/model specific and requires special tools and custom code.
I’ve always wondered why there seems to be such a lack of car hacking projects. OBD-II has been around for 20 years, and this is the first open-source alternative to the ELM327 I remember seeing. Even commercial OBD-II tools are expensive and limited.
Is it lack of interest? Are hackers afraid of bankrupting themselves by potentially damaging their overpriced car electronics? The latter reason is probably the main reason I haven’t tried it myself.
I’m not a kid (30 years old) , but am young in the IT world, I must say these kinds of discussions are seriously mind blowing/altering. We have a platform that surpasses time and allows great thinkiners as well as average joe to share data. So my question about the lack of interest, say some was interested and being able to manipulate every aspect of one’s vehicle which path is most reasonable and which is higher risk? Not for stealing cars of course.
Could I flash my bluetooth obd adapter with this firmware?
Where can I get the gerber files from now? zip link no longer works.
My name is definitely “Joe”.you guys/gals are way sharper than, lets say, the average pencil.
Just reading all the comments made me feel like a 3rd grader(not to belittle third graders).
Someone could make a useful app that can interface with a wifi or bluetooth OB2 device to preheat a Fiat 500e while it was still plugged in and the key was off.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)