EFILive Home Page | Downloads | Support Forum
Home
Up
 

 

 

Computers are modules

Modern EFI vehicles are equipped with a variety of environmental, safety and luxury features that require some form of computer control. All EFI vehicles have at least one 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 computers for monitoring and control. Throughout this documentation these computers are referred to as electronic modules or simply modules.

Modules are connected by a bus

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. Throughout this document discrete packets of information that are broadcast on the bus are referred to as frames. A frame is a sequence of bytes that adheres to the following format.

General frame format (where 0<=N<=170)

Mnemonic

Byte

Description

ID

1

Frame ID

LENGTH

2

Number of data bytes $55+N

DATA BYTE N

N+2

N data bytes

CHECKSUM

N+3

Checksum

ID
All frames must begin with a frame ID.

LENGTH
The length byte is the number of data bytes in the message plus $55. A valid length must be in the range $55..$FF (85..255).

Many messages contain no data and would therefore have a length byte of $55 (85). This value appears to have been selected because its binary representation is 0101 0101, which is a pattern that is highly unlikely to be generated by interference in an noisy, electronic environment.

DATA
The data bytes contain data that is specific to the frame ID. The receiving module (including EFILive V4 - which is just an other module on the bus) must be pre-programmed to understand the data, its format and scaling so that it is able to correctly interpret the data.

CHECKSUM
The last byte is the checksum of the entire frame. The checksum is determined so that the sum of all the bytes in the frame - including the frame ID, the length byte and the checksum byte itself - is zero, ignoring any carry bits.

For example the frame $F5,$57,$01,$00,$B3

  • Has a frame ID of $F7.
  • Has a length of $57-$55=$02 data bytes.
  • Contains two data bytes: $01,$00.
  • Has a checksum of $B3.

 

To calculate the checksum in hex:

  • Sum  the bytes $F5+$57+$01+$00=$14D.

  • Find the remainder when the sum is divided by $100 which in this case is $4D.

  • The checksum will be $100-$4D=$B3.

 

To calculate the checksum in decimal:

  • Sum  the bytes 245+87+1+0=333.

  • Find the remainder when the sum is divided by 256 which in this case is 77.

  • The checksum will be 256-77=179 (179 is $B3 in hexadecimal).

 

Chatter frames

Some modules may, without being requested, broadcast frames according to their message schedule. A message schedule is a list of pre-configured frames contained within the module. These frames will be broadcast automatically at certain time intervals - usually at sub-second intervals. EFILive V4 calls these spontaneous frames, chatter frames.

Some vehicles have one or more modules with message schedules which means that there will be chatter frames being broadcast on the bus all the time. Some modules even broadcast when the ignition is turned off, although usually only a subset of their message schedule.

Some vehicles do not have any modules with message schedules which means that there will be no chatter on the bus.

Communicating with frames

When a module broadcasts a frame it identifies the frame by setting the frame's ID to a pre-assigned value. Any module is able to listen to any frame and access the data in that frame.

Modules are programmed to listen and respond to frames with particular ID's. The module's response is usually determined by the frame's mode.

Unfortunately the same type of module in different vehicles may respond to different frame IDs.

For example the ECM in a 1996 VS Holden Commodore V8 will respond to frames with a frame ID of $F4 while the ECM in a1998 VT Holden Commodore V8 will respond to frames with a frame ID of $F5. (The difference has more to do with a change in ECM rather than the change in vehicle models).


Command frames

General command frame format (where 0<=N<=169)
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+N
MODE (command) 3
$00 Normal communications
$01 Request for ALDL data
$02 Request a block of 64 bytes of  addressed memory
$03 Request up to 8 individually addressed memory bytes
$04 Change module settings
$08 Suppress chatter
$09 Resume chatter
$0A Clear diagnostic trouble codes
PARAMETER N N+3 N parameter bytes
CHECKSUM N+4 Checksum

Command frames are issued by EFILive V4 in order to extract data or to override the normal functioning of the vehicle's modules.


Specific command frame formats

Request a particular table of data from a module

Request frame - mode $01
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+1=$57
MODE 3 Mode $01
TABLE 4 Table number ($00..$09)
CHECKSUM 5 Checksum

 

Request a block of 64 bytes of addressed memory

Request frame - mode $02
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+2=$58
MODE 3 Mode $02
MSB 4 Most significant byte of address
LSB 5 Least significant byte of address
CHECKSUM 6 Checksum

 

Request 1<=n<=8 bytes of memory

Request frame - mode $03 (where 0<=N<=8)
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+(N*2)
MODE 3 Mode $03
MSB N N*2+4 Most significant byte of address N
LSB N N*2+5 Least significant byte of address N
CHECKSUM N*2+6 Checksum

 

Send parameters to module

Request frame - mode $04
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+N
MODE 3 Mode $04
PARAMETER N N+4 Parameter bytes 0<=N<=64
CHECKSUM N+5 Checksum

 

Stop chatter

Request frame - mode $08
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+0=$56
MODE 3 Mode $08
CHECKSUM 4 Checksum

 

Resume chatter

Request frame - mode $09
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+0=$56
MODE 3 Mode $09
CHECKSUM 4 Checksum

 

Clear malfunction flags

Request frame - mode $0A
Mnemonic Byte Description
ID 1 Frame ID
LENGTH 2 Number of data bytes $55+1+0=$56
MODE 3 Mode $0A
CHECKSUM 4 Checksum
 

Copyright 1998-2006 EFILive Limited