# GT350 CAN Bus Topology

From Wiki-DIY

## Contents

## CAN bus table (VERIFIED)

The following table are all verified values. Many unverified values are listed in the "CAN bus register details" section of this wiki.

Hex Address | Position | Y = mX + b | Range | Sampling Rate | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|

Address Name | Field Name | Start | End | Length (bits) | Direction | Data Format | Data Scale (m) | Data Offset (b) | Start | End | Description | ||

GT350_STEERING_ANGLE | STEERING_ANGLE_DEG | 76 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | -0.1 | 1600 | -450 | 450 | 50 Hz | Steering angle (degrees) |

STEERING_ANGLE_RAD | 76 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | -0.00174533 | 27.92528 | -7.854 | 7.854 | 50 Hz | Steering angle (radians) | |

REVERSE_SW | 76 | B1[7] | 1 | Bit | 50 Hz | 1=Reverse engaged
| |||||||

GT350_SPEEDOMETER | SPEEDOMETER_KPH | 77 | B1[0] | B0[7] | 16 | Big-Endian | Unsigned integer | 0.01 | 0.00 | 0.000 | 656.000 | 50 Hz | Speedometer (KPH)? Very likely speedometer. Seems to have about a 3.3% fudge factor with respect to wheel speed sensors. |

SPEEDOMETER_MPH | 77 | B1[0] | B0[7] | 16 | Big-Endian | Unsigned integer | 0.00621371 | 0.00 | 0.000 | 408.000 | 50 Hz | Same as above (MPH) | |

GT350_BRAKE_PRESSURE | BRAKE_PRESSURE_BAR | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 0.025 | 0 | 0.0 | 409.6 | 50 Hz | Brake pressure (bar) |

BRAKE_PRESSURE_KPA | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 2.5 | 0 | 0.0 | 40960 | 50 Hz | Brake pressure (kPa) | |

BRAKE_PRESSURE_PSI | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 0.362595 | 0 | 0.00 | 5940.75 | 50 Hz | Brake pressure (psi) | |

GT350_ENGINE_TEMPS_01 | COOLANT_TEMP_C | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 10 Hz | Coolant temperature (deg-C) |

COOLANT_TEMP_K | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1 | 213.15 | 213.15 | 468.15 | 10 Hz | Coolant temperature (deg-K) | |

COOLANT_TEMP_F | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1.80 | -76.00 | -76.00 | 383.00 | 10 Hz | Coolant temperature (deg-F) | |

UNKNOWN_TEMP_C | 156 | B1[0] | B1[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 10 Hz | Unknown temperature sensor (deg-C) | |

GT350_WEATHER | AMBIENT_TEMP_C | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.25 | -128.00 | -128.00 | 128.00 | 10 Hz | Ambient temperature (deg-C) |

AMBIENT_TEMP_K | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.25 | 145.15 | 145.15 | 401.15 | 10 Hz | Ambient temperature (deg-K) | |

AMBIENT_TEMP_F | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.45 | -198.40 | -198.40 | 262.40 | 10 Hz | Ambient temperature (deg-F) | |

AMBIENT_PRESSURE_MBAR | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 2.50 | 500.00 | 500.00 | 1140.00 | 10 Hz | Ambient pressure (mBar) | |

AMBIENT_PRESSURE_KPA | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 0.25 | 50.00 | 50.00 | 114.00 | 10 Hz | Ambient pressure (kPa) | |

AMBIENT_PRESSURE_MBAR | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 0.073825 | 14.765 | 14.765 | 33.664 | 10 Hz | Ambient pressure (inHg) | |

UNKNOWN_TEMP | 178 | B7[0] | B7[7] | 8 | Big-Endian | Unsigned Integer | TBD | TBD | TBD | TBD | 10 Hz | Unknown sensor; seems to be temperature related | |

GT350_RPM_TPS | THROTTLE_POSITION | 204 | B1[0] | B0[1] | 10 | Big-Endian | Unsigned Integer | 0.10 | 0.00 | 0.00 | 102.30 | 80 Hz | Throttle position (%) |

ENGINE_RPM | 204 | B4[0] | B3[4] | 13 | Big-Endian | Unsigned Integer | 2.00 | 0.00 | 0.00 | 16384.00 | 80 Hz | Engine RPM | |

GT350_213_MOTION | LONG_ACCELERATION_G | 213 | B6[0] | B5[1] | 10 | Big-Endian | Unsigned Integer | 0.0078125 | -3.9921875 | -4.000 | 4.000 | 50 Hz | Longitudinal acceleration (G) |

GT350_WHEEL_ROTATION | WHL_01 | 216 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Some type of wheel rotation sensors. Monotonically increments while wheels are in motion. Starts at 0 when car is turned on. Does not return to 0 when car is not in motion. Seem to count rotation, or partial rotation of each wheel. | ||||

WHL_02 | 216 | B1[0] | B1[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||

WHL_03 | 216 | B2[0] | B2[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||

WHL_04 | 216 | B3[0] | B3[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||

GT350_WHEEL_SPEEDS | WHLSPD_FRNT_DRV_KPH | 217 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (front, driver, KPH) |

WHLSPD_FRNT_DRV_MPH | 217 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (front, driver, MPH) | |

WHLSPD_FRNT_PAS_KPH | 217 | B3[0] | B2[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (front, passenger, KPH) | |

WHLSPD_FRNT_PAS_MPH | 217 | B3[0] | B2[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (front, passenger, MPH) | |

WHLSPD_REAR_DRV_KPH | 217 | B5[0] | B4[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (rear, driver, KPH) | |

WHLSPD_REAR_DRV_MPH | 217 | B5[0] | B4[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (rear, driver, MPH) | |

WHLSPD_REAR_PAS_KPH | 217 | B7[0] | B6[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (rear, passenger, KPH) | |

WHLSPD_REAR_PAS_MPH | 217 | B7[0] | B6[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (rear, passenger, MPH) | |

GT350_TRANSMISSION | TBD | 230 | B0[4] | B0[7] | 4 | Big-Endian | Unsigned Integer | Seems to be clutch related because it changes value at the approximate times the clutch is being engaged and disengaged. | |||||

TRANSMISSION_TEMP_C | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 50 Hz | Transmission Temperature (deg-C) | |

TRANSMISSION_TEMP_K | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | 213.15 | 213.15 | 498.15 | 50 Hz | Transmission Temperature (deg-K) | |

TRANSMISSION_TEMP_F | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | -76.00 | -76.00 | 383.00 | 50 Hz | Transmission Temperature (deg-F) | |

GT350_ENGINE_LAMBDA? | Lambda? | 242 | B3[0] | B2[4] | 13 | Big-Endian | Signed 2's complement integer | 25 Hz | Possible engine lambda (AFR) sensor. | ||||

TBD | 242 | B2[5] | B2[7] | 3 | 25 Hz | There is some type of 3-bit field here | |||||||

GT350_ALTIMETER? | Altimeter? | 326 | B3[0] | B2[1] | 10 | 1 Hz | Possible altimeter, but really just a wild guess at this point. |

## CAN bus register details

Each section below lists one CAN bus register, each byte, and each bit. Some values are known and verified; other values are guesses or work-in-progress; and other values are completely unknown.

For known values, there will be a register description, datatype description, decoding formula, range of values, and possible notes of explanation. For both known, and unknown values, the following descriptions apply.

**VALIDATED FIELDS**

- Given a descriptive name
- Datatype will give full details how the data is formulated and decoded on the CAN bus
- Decoding formula in the form of "Y = mX + b"
- Range of possible values using standard math set notation with "[ ]" and "( )"
- Applicable notes where necessary

**PARTIALLY UNKNOWN FIELDS**

- Usually given the names in the form TBD_REGNUM_FIELDNUM. For example: TBD_077_01 or TBD_077_02 where '077' is the CAN bus address associated with this register, and '01' and '02' are the enumerated counts of the unknown fields.
- Usually I've figured out the datatype and will give a datatype definition.
- Sometimes I've figured out the decoding formula, but don't know what the data represents.
- Sometimes I'll make an educated or wild guess what I think is in this field.

**COMPLETELY UNKNOWN FIELDS**

- Will be shown as "?" in the register mappings below.
- Values marked with "?" will constantly be changing, but their contents are unknown.

**HARD CODED FIELDS**

- These values never seem to change; they are fixed values.
- Will be marked either "1" or "0" in the register mappings below.
- Their purpose is completely unknown.

### ADDR: 076 -- GT350_STEERING_ANGLE

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|

Byte-0 | REVERSE_SW | STEERING_ANGLE [b14:b08] | ||||||

Byte-1 | STEERING_ANGLE [b07:b00] | |||||||

Byte-2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |

Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Byte-4 | UNKWN_BIT | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

**REVERSE_SW:**

- Datatype: Boolean, 1-bit
- 1=Reverse engaged; 0=Reverse not engaged

**STEERING_ANGLE:**

- Datatype: Big-Endian, Unsigned integer, 15-bits
- Available as degrees or radians
- Y = mX + b: Degrees: m=-0.1, b=1600
- Y = mX + b: Radians: m=-0.00174533, b= 27.92528
- Practical Range: (-450, 450) Degrees, (-7.85, 7.85) Radians
- Theoretical Range: (-1600, 1600) Degrees, (-28, 28) Radians
- Notes: Degrees (radians) increase in clockwise direction of steering wheel

**UNKWN_BIT**

- Unknown bit. Changes value, but purpose is unknown.

**OTHER FIELDS**

- Unknown, or static (don't change)

### ADDR: 077 -- GT350_SPEEDOMETER

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|

Byte-0 | SPEEDOMETER [b15:b08] | |||||||

Byte-1 | SPEEDOMETER [b07:b00] | |||||||

Byte-2 | TBD_077_01 [b15:b08] | |||||||

Byte-3 | TBD_077_01 [b07:b00] | |||||||

Byte-4 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |

Byte-5 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-6 | ? | ? | ? | ? | TBD_077_02 [b12:b08] | |||

Byte-7 | TBD_077_02 [b07:b00] |

**SPEEDOMETER:**

- Datatype: Big-Endian, Unsigned Integer, 16-bits
- Available as: Kilometers per hour (KPH), Miles per hour (MPH)
- Y = mX + b: KPH: m=0.01, b=0
- Y = mX + b: MPH: m=0.00621371, b=0
- Theoretical Range: [0, 656) KPH, [0, 408) MPH

**TBD_077_01:**

- Unknown purpose
- Datatype: Big-Endian, Unsigned Integer, 16-bit
- Notes: Being investigated as possible: longitudinal accelerometer

**TBD_077_02:**

- Unknown purpose
- Datatype: Big-Endian, Unsigned Integer, 12-bit

### ADDR: 07D -- GT350_BRAKE_PRESSURE

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|

Byte-0 | 0 | 0 | BRAKE_PRESSURE [b13:b08] | |||||

Byte-1 | BRAKE_PRESSURE [b07:b00] | |||||||

Byte-2 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-3 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-4 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-5 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-6 | ? | ? | ? | ? | ? | ? | ? | ? |

Byte-7 | ? | ? | ? | ? | ? | ? | ? | ? |

**BRAKE_PRESSURE**

- Datatype: Big-Endian, Unsigned Integer, 14-bits
- Available as: BAR, KPA, or PSI
- Y = mX + b: BAR: m=0.025, b=0
- Y = mX + b: KPA: m=2.5, b=0
- Y = mX + b: PSI: m=0.362595, b=0
- Theoretical Range: [0, 410) BAR, [0, 40960] KPA, [0, 5940) PSI
- Practical Range: [0, 64] BAR, [0, 6400] KPA, [0, 928] PSI

### ADDR: 156 -- GT350_ENGINE_TEMPS_01

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|

Byte-0 | COOLANT_TEMP [b07:b00] | |||||||

Byte-1 | UNKNOWN_TEMP [b07:b00] | |||||||

Byte-2 | ||||||||

Byte-3 | ||||||||

Byte-4 | ||||||||

Byte-5 | ||||||||

Byte-6 | ||||||||

Byte-7 |

### ADDR: TBD -- GT350_

7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|

Byte-0 | ||||||||

Byte-1 | ||||||||

Byte-2 | ||||||||

Byte-3 | ||||||||

Byte-4 | ||||||||

Byte-5 | ||||||||

Byte-6 | ||||||||

Byte-7 |