Skip to content
Aaron Turner edited this page May 6, 2014 · 7 revisions

Overview

Message format is 8 bytes with 10ms gap between each byte and 30ms gap between messages. The final byte is a CRC using the algorithm over the first 7 bytes of the message:

byte ecm_message[8];
byte check_sum = 0;
for (int x = 0; x <= 6; x++) {
    check_sum = check_sum + ecm_message[x];
}
ecm_message[7] = 256 - check_sum;

Message Decode:

byte ecm_message[8];

// temp is 10 bits (0-1023), all of byte 0 and top two of byte 1
ecm_message[0] = temp >> 2
ecm_message[1].7 = temp.1
ecm_message[1].6 = temp.0

ecm_message[1].5 = C43 Undefined. (just padding)
ecm_message[1].4 = Dealer Mode
ecm_message[1].2 = Adjust TPS 1
ecm_message[1].1 = Adjust TPS 0
ecm_message[1].0 = C42 Ignition Switch

ecm_message[2].7 = C41 Fuel Pump Relay
ecm_message[2].4 = C33 Fuel Injector 2
ecm_message[2].3 = C32 Fuel Injector 1
ecm_message[2].2 = C31 Gear Position Sensor
ecm_message[2].1 = C25 Ignition Coil 2
ecm_message[2].0 = C24 Ignition Coil 1

ecm_message[3].7 = C23 Tip Over Sensor
ecm_message[3].6 = C22 Intake Air Pressure Sensor on SV1000
ecm_message[3].5 = C21 Intake Air Temp Sensor
ecm_message[3].4 = C15 Engine Coolant Temp Sensor
ecm_message[3].3 = C14 Throttle Position Sensor
ecm_message[3].2 = C13 Intake Air Pressure 
ecm_message[3].1 = C12 Crank Position Sensor
ecm_message[3].0 = C11 Cam Shaft Sensor on SV1000

ecm_message[4].7 = C49 PAIR Valve
ecm_message[4].6 = C29 Secondary Throttle Position Sensor
ecm_message[4].5 = C28 Secondary Throttle Valve Actuator
ecm_message[4].3 = C44 Lambda (O2) Sensor on SV1000

ecm_message[5] = 0 Unused Byte
ecm_message[6] = 0 Unused Byte

ecm_message[7] = CRC (see above)

Note: Most of the above info taken from TeeRiver's post here with additional help from Ati for the SV1000 codes.

Clone this wiki locally