back.gif (853 octets) ECU2PC project flag-fr.gif (272 octets)

Important notice: some information from this page are unaccurate or obsolete. Please check the latest ECU information.

ecu2pc6.jpg (42985 octets)

As you can see, the content of this page is in english, so that this project could be shared with a maximum number of persons. The aim of this project is to design both hardware and software that are necessary to access to the data from the ECU. Please feel free to pass any information, comments and remarks related to this project.

Warning: Information from this site is provided as is, with no warranty of any kind from the author. Information is subject to change without notice. No support and no material is available from the author.

up.gif (853 octets) Definitions


Modern vehicles are equipped with a variety of environmental, safety and other features that require some form of computer control. All EFI vehicles have at least one electronic modules (including a computer) that controls the fuel injectors and usually the spark timing. Other features such as electronic transmissions, antilock braking systems and air bags require additional electronic modules for monitoring and control. Modules communicate information electronically between themselves via a bus. A bus is just a computer term for a wire (or set of wires) that carries electronic messages from one part of a computer-controlled system to another. The bus in most EFI vehicles consists of a single wire that carries a 5-volt serial data stream. Each module that is connected to the bus may broadcast and receive discrete packets of information via the bus.


OBD stands for On-Board Diagnostics and has been on most vehicles since 1981. The first generation of OBD (or OBD I) was originally designed as a means to monitor various systems on a vehicle (i.e. fuel injection system, ignition system, emission system, etc.) and detect any failures it sees. While the vehicle is running the computer will illuminate the MIL (Malfunction Indicator Lamp: either a "Check Engine" light or a "Service Engine Soon" light) on the dashboard to warn the driver that a fault has been detected. At that point, the computer is programmed to generate and store a numeric fault code (two or three digit code) that is associated with the failure. This is when a Code Reader becomes useful. OBD I covers the years of 1981 through 1993. OBD I was not named until the emergence of OBD II. This second generation of OBD was introduced universally in 1996 as part of a government mandate to lower vehicle emissions pollutants. These OBD II systems are found in vehicles built from 1996 to present. This recent system is a far more advanced and precise version of the first generation but the concept is still the same. The computer still monitors vehicle systems to look for faults, vehicles computer still uses an MIL indicator to warn the driver of problems, and codes can still be pulled to identify the systems or circuits where the problem was detected.

up.gif (853 octets) Hardware


The idea is to make this project as popular as possible, so that any kind of PC would work. In the begining, testing shall be executed with the help of a desktop PC (Pentium II MMX 166 Mhz, 32Mb RAM) running MS WINDOWS 98 and a lap top PC (Pentium 100Mhz, 8Mb RAM) running MS WINDOWS 95.

On the other hand, I'm investigating the possibility to use a pocket PC (SH3 processor running under Microsoft CE rev. 3) as a very fancy and easy to handle terminal.


Finally, after attempting to create the ultimate interface, I decided to switch back to good ol' circuits. Again, the design mathes the following requirements:

ecu2pc5s.jpg (1350 octets)

Ecu data can be read/write using one single wire (pin G from the diagnostic plug). This line is kept at the logical HIGH level by a pull up resistor wired to the 12V, helping to square the signal. TTL to Serial protocol convertion is performed by a specialized chip (MAX232A). The whole circuit power supply is drown from the car's battery (typ. 12v).

ecu2pc7s.jpg (1636 octets)

This circuit has been designed, built and tested using a bread board and a lap top computer. Connection to the ECU is not necessary for testing this circuit, because the same data line is used for input and output. A PCB will later be designed once the reliability of the circuit will be demonstrated.

up.gif (853 octets) Software

ECU2PC software shall be written in Micrcosoft Visual Basic rev. 6, due to availability and programing skills reasons. The tricky 8192 baud rate imposes the use of API calls in order to manage the serial comm port. As a reminder, let's recap the ones used here:

Definitions (and variable formats) can be found in the API viewer, while more information is available from MSDN Library. The big surprise is that the 8192 baud rate can be simply entered in the parameters line from the  BuildCommDCB function, and I had to plug a scope to the serial port to make sure of this! Data requests and capture shall be performed using the ALDL frames, as described in some nice pages referenced below. The project itself shall contain three forms!

The picture below illustrate the bar graph form:

ecu2pc4.jpg (13839 octets)

up.gif (853 octets) Links

Many, many thanks to the nice persons who published the very needed information. Investigating the field of ALDL is just like cryptlogy: you deadly need a starting point! Then its just a matter of logic, method and intuition. Experience in this area will save your time and nerves.

Data format

The mandatory tuning tips:

A very good starting point:

A summarized version of ECU data format:

Some more details:

Some very interesting information about motronic ECU:

Andy's clean and nicely shaped information:


A Lotus fan site containing plenty nice information related to the GM ECU:

A nice looking site with plenty ALDL information:

An other interface design:


78L00 Data sheet:

MAXIM's site:

4n35 data sheet:

An other data sheet library, including the 4N35 opto coupler:

RS232C specification

A lot of well presented RS232C information:

Interfacing systems through RS232C (almost everything you need to know):

RS232C specifications:

A very well designed private web site with plenty usefull information about RS232C protocols:

Interfacing system through RS232C:



A list of available software:


The real ECM content (Data and routines) How did they get this information?



General information about GL ALDLs:

ALDL basics, Lotus oriented:

An other ALDL basics Lotus oriented site:

FAQ about OBD:

An other very well documented FAQ about OBD:

An other well documented FAQ about OBD:

ECU codes and curative actions:

ADLDL information about PONTIAC Fiero:

CAN at Bosch:

up.gif (853 octets) Résumé

Une fois n'est pas coutume, le contenu de cette page est en anglais. Le choix de cette langue permettra de partager ce projet avec le plus grand nombre de personnes possible. Le projet ECU2PC consiste à étudier et réaliser les moyens matériels et logiciels nécessaires pour accéder aux données mémorisées dans le boîtier de gestion du moteur. Toutes les contributions, avis et conseils sont les bienvenus.

Important: Les informations contenues dans cette page sont mises à votre disposition en l'état. L'auteur de ce site ne saurait en aucun cas être tenu responsable des conséquences d'une information erronée ou utilisée de manière inappropriée. Aucun support ni aucun matériel ne sera fourni par l'auteur.

up.gif (853 octets)