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.
This page describes the operational characteristics, communication protocol, and transmitted data for the serial data stream. The serial data output is to be utilized to transmit predetermined data parameters to intelligent receiving devices external to the vehicle. Receivers external to the vehicle shall utilize the transmitted information to identify ECU type and for testing during the ECU assembly and in-car installation procedures. A high speed UART link option is available for GMAD assembly line diagnostics.
The high speed serial data transmits data at the rate of one bit each 122.07 microseconds 0.5%. This is equivalent to 8192 baud. The high speed serial data is transmitted on the serial data output.
Different data message types are transmitted by the ECU via the serial data output port if the ignition is on. The message type sent at any point in time is dependent upon the state of the diagnostic request line as summarized in the table below:
Resistance to power ground | Mode |
> 20K | Normal Mode |
10K +-5% | End of Line Test ALDL |
3.9K +-5% | ECU Factory Test |
< 500 ohms | Diagnostics/Field ALDL Service |
High Speed Serial Data Format
The approach used for the high speed transmission is intended to be the same as that used in a UART system.
Bit Format
A bit time is 122.07 microseconds +-0.5%. This is equivalent to 8192 Baud. A high voltage state indicates a logic one "1" condition and a low voltage state indicates a logic zero "0" condition. The high speed serial data is output on the serial data output port.
Word Format
A word consists of ten bit times. The first bit is a logic zero and is called the Start Bit. The last (tenth bit) in the word is always a logic one and is called the Stop Bit. The remaining eight center bits are data bits and are transmitted LSB (Least Significant Bit) first. A Start Bit must always be preceded by at least one logic one bit time (either the stop bit of the preceding word or an Idle Line).
Unless specified, numerical values are expressed in Hexadecimal format (base16). The &H prefix is used in order to avoid confusions (some may use to $ prefix too).
Decimal | Hexadecimal | Binary |
0 | &H0 | 0000 0000 |
10 | &H10 | 0000 1010 |
15 | &H0F | 0000 1111 |
16 | &H10 | 0001 0000 |
255 | &HFF | 1111 1111 |
Any and all data transmitted on the serial data bus must be part of a message. All messages must be of the following format:
Idle Line | 1Byte |
Message Identification Word | ID |
Message Length Word | 1Byte (d85 + d1 + N) |
Mode Number Word | |
Message Data | N Bytes |
Sum Check | 1Byte |
Idle Line | 1Byte |
Ten or more consecutive logic one bit times constitute an Idle Line. All receivers on the bus will use the occurrence of an Idle Line followed by a Start Bit to indicate the start of a message.
The first word of each message is a message identification (ID) word. Each message ID must be unique; therefore, all message ID's must be assigned in the particular Application Document. The total number of unique message ID's is limited to 254. ID's of &H00 and &HFF shall not be used in the vehicle.
The message length word indicated the total number of data words in the remainder of the message plus 85 (decimal). The maximum number of data words within one message which can be transmitted by any transmitter is 64. Thus a valid message length word must lie in the range of 85 to 149. Many messages with no data words are possible; for such messages, the Message Length Word would contain the binary word 0101 0101 (MSB-LSB). This pattern has been selected because, under an abnormally severe noise environment, there is a higher probability that an erroneously received message will be detected as such.
All high speed messages have an assigned mode number. An external ALDL tester that requests high speed communications will specify the desired mode of operation.
The last word to be transmitted in a message is the two's complement of the sum of all the other words in the message, including the message ID and message length words. Any carrycuts of this eight-bit word while it is being formed by both the transmitter and receivers are neglected. The two's complement is used so that the sum of all the words in the message is zero for a valid message.
The following sections define the input and output message formats for the various modes of high speed serial data. The operating modes are divided into two categories, normal and ALDL modes. The ALDL modes can be entered independent of the diagnostic request line.
The normal mode will be enabled if any of the following conditions are satisfied:
ALDL device not present. Mode 0 requested by ALDL device. No ALDL message received for a time of 5 seconds. When the normal mode is enabled, messages will be continuously transmitted by the scheduler unless the ALDL mode is enabled. The scheduler consists of a table of message addresses corresponding to messages that can be transmitted at a given 12.5 msec interval. Only one message can be transmitted in a given 12.5 msec interval.
The scheduler table *F9OMST* shown below, shows the expected messages and rates for this application:
Schedules Message Code Message
0 | No Message |
1 | No Message |
2 | No Message |
3 | No Message |
4 | *F97* |
5 | No Message |
6 | No Message |
7 | No Message |
8 | No Message |
9 | No Message |
A | No Message |
B | No Message |
C | No Message |
D | No Message |
E | No Message |
F | No Message |
The scheduler shows that message *F97* is transmitted once every 200 msec.
Normal Mode Message *F97*
Message *F97* is used to poll for the presence of an ALDL testing device. The message ID for the testing device is &HF0, and the message length is zero.
ALDL Mode
The ALDL Mode is enabled when the ALDL device responds to the normal mode ALDL polling message (*F97*). Once in the ALDL mode, the ECU will cease transmitting the normal mode messages.
The ALDL mode is divided into the following sub-modes and uses a message ID of &HF0:
Mode 0 | Return to normal mode |
Mode 1 | Transmit fixed data stream |
Mode 2 | Selectable memory dump |
Mode 3 | RAM contents |
Mode 4 | Controller function |
Mode 7 | Command normal mode message |
ALDL Mode 0 (Return to Normal Mode)
When the ALDL device requests Mode 0, the ECU will revert back to the normal mode. The ALDL device requests Mode 0 by sending the following message:
Message ID | 1 Byte | Message ID+&HF0 |
Message Length | 1 Byte | d85 + d1 = d86 = &H56 |
Mode | 1 Byte | &H00 |
Sum Check | 1 Byte |
The ECU will respond by transmitting the normal mode messages as described in previous sections.
ALDL Mode 1 (Transmit Fixed Data Stream)
When the ALDL device requests Mode 1, the ECU will respond by transmitting a predetermined 63 byte message as defined in table *F95*.
The ALDL device requests Mode 1 by sending the following message:
Message ID | 1 Byte | Message ID+&HF0 |
Message Length | 1 Byte | d85 + d1 = d86 = &H56 |
Mode | 1 Byte | &H01 |
Sum Check | 1 Byte |
The ECU will respond with the following message:
Message ID | 1 Byte | Message ID+&HF0 |
Message Length | 1 Byte | d85 + d1 = d86 = &H56 |
Mode | 1 Byte | &H01 |
Data | 64 Byte | |
Sum Check | 1 Byte |
ALDL Mode 2 (Selectable Memory Dump)
When the ALDL device request Mode 2, the ECU will respond by transmitting the contents of 64 memory locations beginning with the address specified in the Mode 2 request.
The ALDL device request Mode 2 by sending the following message:
Message ID = &HF0. Message Length = 85 + 3 = 86 = &H58. Mode = &H02. Starting Address Upper byte. Starting Address Lower byte. Sum Check. The ECU will respond with the following message:
Message ID = &HF0. Message Length = 85 + 65 = 150 = &H96. Mode = &H02. Contents of Address 1 - - Contents of Address (1 + 63) Sum Check
ALDL Mode 3 (RAM Contents)
When the ALDL device requests Mode 3, the ECU will respond by transmitting the contents of the RAM locations specified in the request (from 0 to 8 locations).
The ALDL device requests Mode 3 by sending the following message:
Message ID = &HF0. Message Length = 85 + 2N + 1 (N = 0 to 8). Mode = &H03. Address I Upper byte Address I Lower byte - - Address N Upper byte Address N Lower byte Sum Check The ECU will respond with the following message:
Message ID = &HF0. Message Length = 85 + N + I (N = 0 to 8). Mode = &H03. Contents of Address 1 - - Contents of Address N Sum Check
ALDL Mode 4 Input Message (ALDL Tester Request)
ID MESSAGE LENGTH (2N + 11 + 85) MODE 4 DISCRETE OUTPUT ENABLE CONTROL WORD * DISCRETE OUTPUT STATE WORD * MODE CONTROL ENABLE WORD * MODE CONTROL STATE WORD * PWM OUTPUT ENABLE CONTROL WORD * PWM OUTPUT DUTY CYCLE * FUNCTION MODIFICATION CONTROL WORD* IAC DESIRED POSITION/IDLE RPM * DESIRED A/F RATIO * SPARK ABSOLUTE/DELTA MODIFICATION * START ADDRESS HIGH START ADDRESS LOW - - ADDRESS N HIGH ADDRESS N LOW CHECK SUM Where N is the number of data bytes requested (0 to 8). See "Mode 4 - ECU Function Modification Mode Table".
The ECU will respond with the following message:
ID MESSAGE LENGTH = 85 + N + 1 (N = 0 to 8) MODE = &H04. ADDRESS 1 CONTENTS - - ADDRESS N CONTENTS CHECK SUM The Function Modifications will have immediate response (next applicable program loop), and will override the normal operation of the Outputs.
MODE 4 - ECU FUNCTION MODIFICATION MODE TABLE
1. Discrete Output Enable Control Word
2. Discrete Output State Word
3. Mode Control Enable Word
Note 1: Block Learn Memory Reset and Malfunction Code clearing can only occur during the first pass through the Mode 4 logic.
Note 2: IAC Motor Reset can occur at any time while in Mode 4 logic, however, it can only occur once
4. Mode Control State Word
5. PWM Output Control Enable Word
6. PWM Output Duty Cycle (0 - 100%)
7. Function Modification Control Word
8.IAC Desired Position/Idle RPM
IAC Position (0 - 255) or RPM (0 - 3200)
9. Desired A/F Ratio
Open Loop A/F (0.0 - 25.5, N = A/F * 10)
10. Spark Absolute/Delta Modification (0 - 90 deg.)
ALDL Mode 7 (Command Normal Mode Message)
When the ALDL device requests Mode 7, the ECU will transmit the normal mode scheduler message specified in the request.
The ALDL device requests Mode 7 by sending the following message:
Message ID = &HF0. Message Length = 85 + 2 = 87 = &H57. Mode = &H07. ECU Scheduler Message Code (0-F) Sum Check The ECU will respond with the appropriate normal mode scheduler message if one exists for that particular scheduler message code.
If any of the following errors are detected the complete message is ignored and the serial data handler is put into the wake-up mode in preparation for the next message:
Overrun Error, indicates that one or more characters in the Data Stream were lost. Framing Error, indicates that the Data Byte received was improperly framed by a start and stop bit Device Code riot recognizable by ECM. Data Byte Count received does not match Data Byte Count expected as defined in message control block. Checksum Error, indicates calculated check sum does not match transmitted check sum. Noise Error, indicates that one of three samples of the transmitted bit was different from other two.
Characteristics of the serial data output are as follows:
VOH GE 4.0V @ IOH = -2.5mA, VOH LE 5.1 V (max.) VOL LE 0.9V @ IOL = 10.0 mA, VOL GE ECM. Ground (min.) Serial Data Receiver Requirements
The following specifications are required to be met by any device transmitting serial data to the ECM:
VIH GE 3.1V, -360uA LE IIH LE -165uA ** VIH LE l6V, (absolute max. allowed) VIL LE 1.7V, -360uA LE IIH LE -l65uA ** VIL GE -0.5V, (absolute min allowed) *All voltages relative to ECU Ground and measured at ECU connector.
*All currents directed into ECU.
**Current levels defined by ECU receiver in tri-state mode.
Requiring each receiver to meet these specifications insures that the ECMs serial data output will drive at least eight receivers in parallel.
Time Message
This table defines the order in which the Mode 0 (normal mode) ALDL transmit tables will be transmitted in the serial data stream.
In this application, the *F97* is transmitted every 200 msec.
Location Content
1 &HF0
Loc. Variable Description
- Bit 0 = MALF CODE 24 Vehicle Speed Sensor
- Bit 1 = MALF CODE 23 Manifold Air Temperature Sensor Low
- Bit 2 = MALF CODE 22 Throttle Position Sensor Low
- Bit 3 = MALF CODE 21 Throttle Position Sensor High
- Bit 4 = MALF CODE 15 Coolant Sensor Low Temperature
- Bit 5 = MALF CODE 14 Coolant Sensor High Temperature
- Bit 6 = MALF CODE 13 Oxygen Sensor
- Bit 7 = MALF CODE 12 No Reference Pulses (Engine Not Running)
- Bit 0 = MALF CODE 42 EST Monitor Error
- Bit 1 = MALF CODE 41
- Bit 2 = MALF CODE 35 IAC Error
- Bit 3 = MALF CODE 34 MAP Sensor Low
- Bit 4 = MALF CODE 33 MAP Sensor High
- Bit 5 = MALF CODE 32 EVRV/EGR
- Bit 6 = MALF CODE 31 Wastegate Overboost
- Bit 7 = MALF CODE 25 Manifold Air Temperature Sensor High
- Bit 0 = MALF CODE 55 ADV Error
- Bit 1 = MALF CODE 54
- Bit 2 = MALF CODE 53 High Battery Voltage
- Bit 3 = MALF CODE 52
- Bit 4 = MALF CODE 51 PROM Error
- Bit 5 = MALF CODE 45 Oxygen Sensor Rich
- Bit 6 = MALF CODE 44 Oxygen Sensor Lean
- Bit 7 = MALF CODE 43 ESC Failure
- Bit 1 Vehicle Moving Flag (0 = At Rest)
- Bit 2 Interrupt Service Execution Exceeded 6.25 MSEC
- Bit 3 Premium Fuel Active Flag (1 = Active)
- Bit 4 Road Speed 1st Time Flag (0 = First Time)
- Bit 5 A/C Clutch Flag (1 = Disable)
- Bit 6 1 = Bypass Check Enabled (EST Monitor)
- Bit 7 Engine Running Flag (1 = Running)
- Bit 0 Not Used
- Bit 1 Road Speed Filter Exercise Flag
- Bit 2 Reference Pulse Occurred (6.25 MSEC Check)
- Bit 3 Diagnostic Switch In Factory Test Position
- Bit 4 Diagnostic Switch In Diagnostic Position
- Bit 5 Diagnostic Switch In ALDL Position
- Bit 6 High Battery Voltage - Disable Solenoid Discretes
- Bit 7 Old Cell Flag (Air/Fuel)
- Bit 0 Loop Timing Flag For Timing Error Logic
- Bit 1 1 = Synch Map Read With 2X REF Pulses Enabled
- Bit 2 1 = 6X Enable Criteria Met Last 6.25 MS Loop
- Bit 3 0 = IAC P/S First Time
- Bit 4 1 = EGR On
- Bit 5 1 = A/C Disengaged At High RPM
- Bit 6 1 = REF Pulse Occurred (Used For FILTRPM Logic)
- Bit 7 1 = ESC Active
- Bit 0 02 Sensor Ready Flag, 1 = Ready
- Bit 1 Closed Loop Timer O.K. Flag, 1 = Timer O.K.
- Bit 2 Motor Reset Complete (1 = Yes)
- Bit 3 Improper Shutdown Flag, 0 = Proper, 1 = Improper.
- Bit 4 Extended Throttle Cracker A/C Off Enabled Flag
- Bit 5 IAC Kickdown Enable Flag, 1 = Enabled
- Bit 6 Extended Throttle Cracker A/C On Enabled Flag
- Bit 7 MALF 42 Fail Flag (EST Monitor)
- Bit 0 Park/Neutral (1 = Drive)
- Bit 1 Not Used
- Bit 2 Vacuum (0 = Vacuum Present)
- Bit 3 Power Steering (0 = Cramp)
- Bit 4 VS Cooling Fan Discrete (1 = Fan Requested)
- Bit 5 Not Used
- Bit 6 Not Used
- Bit 7 Air Conditioner (1 = A/C Requested)
- Bit 0 Fan On
- Bit 1 Check Engine Light Delay Flag
- Bit 2 Power Steering Mode Flag (1 = Active)
- Bit 3 MALF 42A Repeat Flag
- Bit 4. ICC MPH HYST BIT
- Bit 5 1ST Time Hot Flag
- Bit 6 First Time Fan Run Flag (Used In IGN OFF Logic)
- Bit 7 Transmission Locked Flag (1 = LOCKJP Enabled) ..Or Shift Light Status (1 = On)
- Bit 0 Clear Flood Flag (1 = Cranked In Clear Flood Mode)
- Bit 1 Learn Control Enable Flag (1 = Enable Store, 0 = Disable)
- Bit 2 Low Battery IAC Inhibit Flag (1 = IAC Inhibited)
- Bit 3 Not Used
- Bit 4 Quast - Asynchronous Pulse Flag (QAP Flag)
- Bit 5 First Time CIL Flag (1 = First Time)
- Bit 6 Rich - Lean Flag (1 = Rich, 0 = Lean)
- Bit 7 Closed Loop Flag (1 = Closed Loop, 0 = Open Loop)
A very exhaustive presentation about ALDL
http://www.sunflower.com/~leroy/P4/section5.htm
ALDL Data
http://www.geocities.com/ecmguy.geo/diagnostics/7749aldl.html