FREEDIAG
More about Supported Interfaces.



[ Freediag@Sourcefo rge ] [ Home ] [ Documentation ]
[ Message Boards ] [ Mailing Lists ] [ CVS Access ]

Vasco Nevoa wrote:

To clarify once and for all - in freediag:

Supported PC<->Car Interfaces (comments taken from the source, my opinion remarked with "vnevoa"):

-- diag_l0_br.c:

vnevoa: I don't know this one, but looks like it's related to ALDL. This is an active interface (implemented with a PIC microcontroller) which simplifies life A LOT for the SW programmers... too easy for us!.. ;) we like the complication of timing issues in our SW! :))

-- diag_l0_elm.c:

vnevoa: I know this is also a PIC implementation, like the BR-x interfaces.

-- diag_l0_me.c:

vnevoa: never heard of it. From their web page I can see that it is also an Active interface, but it looks like they are using something better than a PIC, which will probably result in a higher-quality, more-featured protocol.

-- diag_l0_se.c:

vnevoa: don't know it. Another Active interface, like it is obvious on their web page. Expensive, too!

-- diag_l0_vw.c:

vnevoa: This is my baby :)... This supports any Passive interface, that is, this file does not really deal with any dreamed-up protocol, it deals directly with the car's protocol, just like it was defined by ISO(international) and SAE(USA). The fact that VAGtool is(was) the most well-known comercial name around at the time, and that VAG is for VolksWagen too, gave it the name we are using (vw) - but this is an unfortunate name, as you can see. This file is the one we REALLY need to be carefull and pay attention to timing issues... it involves kernel tweaks and everything... so this is the difficult one to port between OSs... My personal interface is a very cheap "Andy-Whittaker", and it can do any protocol (all OBD2 flavours, plus ALDL!)... provided the PC SW knows what it's doing!!! ;)

So, when it comes to interfaces (IFCs), we can draw the following conclusions:

  1. There are 2 classes of interfaces, which I call "active"(with a microprocessor unit - mpu) and "passive" (no mpu, only electrical voltage protection).

  2. "Active" IFCs are very friendly for the programmers, because they take care of all the car protocol timing issues, and turn the very strange and demanding signals into a simple PC serial port flow of characters. This is like using the "AT"modem commands, so you can see how easy it is. So timing is not critical and can be left to the interface HW, and logical results are garanteed at the SW level. However, the protocol is interface-proprietary.

  3. "Passive" IFCs have very little electronics on them, because they only try to protect the PC serial port and adapt the voltage levels (with optical isolation) . This means that the PC is dealing directly with the car's ECU signals, and therefore the timing must be VERY precise. But these IFCs have one BIG advantage: they are Open-Source and Future friendly!!! What I mean is that we can implement any kind of logical protocol we want with them, because they are protocol-ignorant! If you try using an Active IFC on a car with a protocol that it doesn't "speak", you are dependent upon the IFC manufacturer to update the IFC's firmware... This is why I prefer Passive IFCs.... the future protocol implementations depend only upon us! Same with the car's brand-specific protocol extensions. Neat.