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

up.gif (853 octets) Introduction

The content of this page is in english, so that the information can be shared by a maximum number of persons. The aim of this page is to gather all information necessary for the ECU2PC project which involves the design of both hardware and software components that are necessary to establish a logical link between a PC and car. The scope of this project is originally limited to Calibra powered by the C20NE engine.

Please feel free to pass any information, comments and remarks related to this project.

up.gif (853 octets) Information reliability

Both ECU makers and integrators fail to provide consistent technical data, so that most of the informatrion gathered in this page are compiled from various sources. Due to the lack of accuracy and reliability of some information, I decided to adopt a ranking system that ranges from the "Sure" to the "Unsure".

Dsiclamer: 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) Computer [S]

Any desktop or laptop will do the job. Its performance shall be compatible with Windows 98 (and higher), NT4 (and higher, e.g. Win2K, WinXP) operating systems.

up.gif (853 octets) Interface pcb [S]

This interface is fully ISO 9141-1 compliant, cheap and very simple. An LED provides a basic indication on the traffic on the K line: off=idle, blinking=serial date transmitted, steady=trouble(!).


Information from PC flows through the Tx line of the serial comm port and is rectified by D1 in order to prevent negative swings to damage compartor IC1B. Input signals in excess of Vbat will flow through D2, and the current formed is absorbed by R5. This rectified input signal is compared to a reference voltage built across D3 (biased by R8) , in a way that IC1B ouptut is in a high Z state when the input signal exceeds the reference voltage (0 RS232 logical state). So that T1 is biased by R9 and R11 thus shorting R10 to ground. The purpose of R10 is to prevent reciprocal damage to the interface or to external devices. When a 1 RS232 logicial status exists, the input signal is lower than the reference voltage and IC1B output is shorted to ground thus leaving T1 in an open state so that the K line stays at a high level defined by the R4, R12 and R7. The signal input from the K-line is compared to half Vbat (divisor bridge using R1 and R2), in a way that IC1A ouptut is shorted to ground when a high state exists on the K-line, thus creating a low state on the Rx line from the serial port.

Components list

Part Value Device Package
C1 100µF ELC-5 ES-5
D1 1N4148 1N4148 DO35-10
D2 1N4148 1N4148 DO35-10
D3 1N4148 1N4148 DO35-10
IC1 LM393N LM393N DIL08
R1 10K RESEU-10 R-10
R2 10K RESEU-10 R-10
R3 10K RESEU-10 R-10
R4 1K RESEU-10 R-10
R5 100K RESEU-10 R-10
R6 1K RESEU-10 R-10
R7 100K RESEU-10 R-10
R8 10K RESEU-10 R-10
R9 10K RESEU-10 R-10
R10 10 RESEU-10 R-10
R11 10K RESEU-10 R-10
R12 1K RESEU-10 R-10
T1 2N2222 2N2222 TO18


All diodes oriented in the same direction. Be carefull with the orientation of IC1 and C1.



The evaluation version of Eagle 1.4 has been used to generate the diagram and PCB. It has a lot of advanced feature even in its freeware version.

up.gif (853 octets) Interface cable [S]

Same for the cable: I managed to design and build a simple and affordable male connector for X13 using a simple PCB and some copper wire...

up.gif (853 octets) Data format [S]

Notice: Unless specified, values are formated in hexadecimal format using the &Hxx syntax where xx starts from 00, ... , 09, 0A, ... ,0F, 10, ... , FF.

The communication protocol must be initialized by the &H10 byte value (ECU address) sent at 5 baud (1 start bit, 1 stop bit, 8 data bits, parity none)

Then the ECU replies at 9600 baud &H55 &HC7 &H80. The leading &H55 value corresponds to the digital 1010101 value. The signal produced by this value looks like the squares produced by a frequency generator; this signal is interpreted by the tesing unit to understand at which baud rate the ECU wants to communicate. The next hex values correspond to the Keyword value (LSB then MSB)

The PC must now send an aknowledgment byte which is the complementary value of the byte sent. In the present case,  this value is equal to &H7F (complementary byte value = &HFF - Last_Byte_Value. This bytes tells the ECU that the testing unit received the correct data and that it is still alive!

You have no idea about how nice it was to see the ECU reply on my scope after such works on the subject.

up.gif (853 octets) Software [S]

ECU2PC software shall be written in Micrcosoft Visual Basic rev. 6 Enterprise Edition, due to availability and programing skills reasons. It is surely not the most appropriate software to use, mainly for driving communication ports in special way, but, on the other hand, it is one of the most popular and it is the one I am the most familiar with. All contributors are invited to share their experience in this domain.

Note that some specific CommPort Windows API must be used to set the 5 baud rate.

up.gif (853 octets) Résumé

Cette page est destinée à mettre en commun un maximum d'information qui seront nécessaires pour l'élaboration du projet ECU2PC, lequel comprend la conception électronique et informatique d'une interface spécialisée.

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)