ALDL Interface for a 1991 Chevrolet Cavalier
October, 2001

Keywords: ALDL, GM, Chevrolet, Cavalier, 1991, ECU, TBI, Serial, Assembly Line Diagnostic Link

Warning

The information provided here to help other people learn about their vehicle's computer. If you use this to do the same to your car, you might not have the same results. As a matter of fact, you may damage you car, and even hurt yourself and /or other people. Therefore, I am not responsible for what you do, I am not responsible for what you break, or who you hurt. Please take care in using this information, it is partial, and may be inaccurate. Having said that, I had lots of fun doing this, and I hope you do too.

Introduction

I started my venture into the car diagnostics protocols when I was curious as to what does the vehicle's computer put out through the black connector next to the fuse box. First off, I have to say that GM does not make any information about the ECU (the car's computer) public. All the information presented here was obtained in two steps. The first step was to search the Internet for what other people have found out. This turned out to be instrumental in learning what to look for and what to expect. I provided some of the better links down below. The second step was to use the data obtained by research and apply it to my 1991 Chevrolet Cavalier. This required some pretty extensive reverse engineering, but it was worth it. This paper presents everything I learned during the process and I hope it will help others get started hacking their car's brains.

I decided to post this data since I noticed that most cars that were reverse engineered were all cars, which fall under the sport/exotic/performance vehicles. As such, you can find a lot of information about Corvettes , Camaros and several Japanese cars. My car does not fall under that category. My car is a shitty Chevrolet Cavalier and the most excitement I get out of it is the thrill of wondering when will the engine fall out while cruising down Arizona highways. Since some other people want to do this, I figured they could use the information for their own experiments, so have fun!

Why do this at all?

Good question! Well modern cars are getting more and more sophisticated. Most of the sophistication translates into complex control schemes which are implemented via electronic control. This has 3 main goals, increase fuel efficiency, reduce emissions, and improve performance. In the past, carbureted vehicles had mechanical pressure activated controls which were less then optimal. Even since computers were introduce, the engine has become a very tightly managed system.

Under ideal conditions, we want the engine to run at what is called in the chemistry world as Stoichiometric ratio. This means that during the chemical process of combustion the right ratio of input exists so that all the molecules recombine with no leftovers. The engine does so by read several sensors and by controlling the fuels injection and ignition system. In many modern cars, we also see transmission control (automatic) and more.

Now we get to the fun part. It turns out that in addition to controlling the engine, the ECU also has a communications port which helps the shop see what's going on. In the early 70's GM came out with what they called ALDL - Assembly Line Diagnostics Link, and later, an industry wide standard called OBD came about. Now, since car manufactures don't like to overwhelm the common driver with 5-60 engine parameters they kept this for shop use only.

Since some of us like to know what the little brain is doing, I though it would be very interesting to try to decode and analyze what is coming out of the ECU.

What is ALDL

ALDL stands for Assembly Line Diagnostics Link. It was invented in the mid 70's (I think) by GM when they introduced Emissions Control Units (ECU) into vehicles. The Emissions Control Units are also know as Engine Control Units and as we simple folks call em: Computers. The ALDL interface is a simplex serial asynchronous bus designed to give the manufacturer and technician an insight into what the engine is doing. It allows us to read engine parameters, read sensors, modify operating parameters and more.

Initially, ALDL was a 160 baud PWM based protocol. I never tried to decode this, but others have done a nice job decoding the protocol. As far as I understand, most ECUs still support this mode by default. For more information about this protocol, check out: http://www.techedge.com.au/vehicle/aldl160/aldl160b.htm they have all the layer 0 stuff decoded.

The second ALDL protocol is a 8192 Baud asynchronous 1 start, 1 stop, no parity serial link. This is a standard serial interface which is compatible with most PCs. Again, if you want more information about the interface check out http://www.techedge.com.au/vehicle/aldl8192/8192baud.htm

Beyond this, GM made a change over to what we know today as OBD and OBD-II. So ALDL in modern cars is obsolete. In OBD, the baud rate was increased, and many compatibility enhancements were added. Since I don't own a vehicle with OBD, I haven't tried to get to the bottom of it, but hopefully one day?

Building a serial interface

In order to interface the ALDL to a laptop, we need a TTL to RS232 lever converter. Check this ALDL PC Hardware Interface http://www.techedge.com.au/vehicle/aldl8192/8192hw.htm link for good info on how to build a simple interface. Note, I built my own MAX232 based level converter using a very similar circuit. Since I wasn't interested in the 160 Baud PWM mode, I neglected the support for it.
NOTE: Even though the 8192Baud interface is compatible protocol wise, it is not compatible voltage wise. Any attempt to connect a PC directly to the ALDL connector might damage one or even both computers. Don't try to do this without the interface, its cheap and simple enough for almost anyone to build.

Capturing data

After building the interface, I downloaded Andy Whittaker's software. Even though he does not have support for my Chevy, he does have a generic capture mode. I used that to capture a 15 minute drive to the local  grocery store. The data was taken from the file and imported into an Excel spread sheet. I think this file is the most useful part of this little article since I haven?t seen anyone else do
this. The file is LARGE, it's a 14MB Excel spreadsheet (zipped to 2.8MB).

The great thing about it is that it's the complete file I used to reverse engineer my ECU frames. It includes the raw data that came out of the ECU and then, I translated it into decimal values and started the
long process of reverse engineering the channels. I used a lot of Dan's tables to correlate channels and figure out heuristics. It turns out that the apple doesn't fall far from the tree, and I guess my Cavalier
has some similarities to Vetts and Camaros ;-) (or at least I tell myself, and even if it does - is that really a compliment?)

Here is the zipped spreadsheet: raw_data.zip (its 2.8MB zipped, and 14MB unzipped)

If you don't want to look at the spreadsheet and the nice graphs in it, here is the decoded telemetry frame structure and conversion formulas.

Telemetry Channels

Here is the table below as an Excel spread sheet: frame.xls 




Vehicle Engine Monitor

The last thing I did was build a small CPU based hand held monitor with a 4X20 LCD display that enables me to connect directly to the ALDL connector and monitor the engine parameters as I drive. It's a neat gadget and I use it once in a while to make sure all the sensors are fine.

The only disadvantage to having it inline all the time is the when the ECU is set to the 8192 baud more, it enters what GM calls the Field Service Mode. In this mode, the ECU does not do all the control
functions it normally does. As a result, I noticed that cold starts are much harder, even though its hardly noticeable under normal driving conditions.

I think that if I use the 160 baud PWM mode, the engine will not enter the Field Service Mode but the great disadvantage of the 160 baud more is that it doesn't give you nearly as much data as the 8192 baud mode, and I will need to once again reverse engineer the frame.

If I get any feedback that indicates people are interested in my ALDL monitor circuit, I might consider posting it here.


Acronyms

ALDL:  Assembly Line Diagnostics Link
ECU:  Emissions/Engine Control Unit
RS232:  Recommended Standard 232
CPU:  Central Processing Unit
LCD:  Liquid Crystal Display
GM:  General Motors (yes, the one that owns half of the motor industry in the US, and lots in Europe too)
PWM:  Pulse Width Modulation


Links


Information about 160 Baud ALDL: http://www.techedge.com.au/vehicle/aldl160/aldl160b.htm

Information about 8192 Baud ALDL: http://www.techedge.com.au/vehicle/aldl8192/8192baud.htm and http://www.techedge.com.au/vehicle/aldl8192/8192hw.htm

Andy Whittaker did some nice ALDL software and has some technical info as well: http://www.andywhittaker.com

Andrew managed to get a hold of some official GM ALDL documentation: http://www.akmcables.com/aldl.htm

Dan's web page used to contain a lot of data for different GM engines (except mine!) I used this data to correlate the data for my engine and reverse engineer the data: http://www.ws6transam.org (I noticed that much of the old data is gone, I hope he brings it back online).

Back to the Home Page

All rights reserved
Last updated January 4, 2007