Changes

no edit summary
Line 4: Line 4:     
== VT/VX/VY/VZ Commodores ==
 
== VT/VX/VY/VZ Commodores ==
 +
 +
=== Unlock Procedure ===
 +
 +
Before any configuration data can be read or written, the cluster must be in an "unlocked" state. This is achieved using a challenge-response authentication mechanism (also known as a seed/key pair). A seed can be requested from the cluster by issuing a Mode <code>11</code> request, followed by table number <code>00</code>. The cluster will respond with Mode <code>11</code> and two bytes that form the seed. The key value is calculated and sent as a write to table <code>01</code> in Mode <code>11</code>. For details on calculating key values, see [[GM:Seed/Key|GM Seed/Key]]. The tables below illustrate the unlocking procedure.
 +
 +
Seed request
 +
 +
{|class="wikitable"
 +
! Length (bytes) !! Field !! Value !! Notes
 +
|-
 +
| align="center" | 1 || ID || align="center" | <code>F2</code> ||
 +
|-
 +
| align="center" | 1 || Length || align="center" | <code>57</code> ||
 +
|-
 +
| align="center" | 1 || Mode || align="center" | <code>11</code> ||
 +
|-
 +
| align="center" | 1 || Table || align="center" | <code>00</code> ||
 +
|-
 +
| align="center" | 1 || Checksum || align="center" | <code>A6</code> ||
 +
|}
 +
 +
Seed response
 +
 +
{|class="wikitable"
 +
! Length (bytes) !! Field !! Value !! Notes
 +
|-
 +
| align="center" | 1 || ID || align="center" | <code>F2</code> ||
 +
|-
 +
| align="center" | 1 || Length || align="center" | <code>59</code> ||
 +
|-
 +
| align="center" | 1 || Mode || align="center" | <code>11</code> ||
 +
|-
 +
| align="center" | 2 || Seed || align="center" | ''S'' || 16-bit Seed Value
 +
|-
 +
| align="center" | 1 || Checksum || align="center" | ''c'' ||
 +
|}
 +
 +
Key transmission
 +
 +
{|class="wikitable"
 +
! Length (bytes) !! Field !! Value !! Notes
 +
|-
 +
| align="center" | 1 || ID || align="center" | <code>F2</code> ||
 +
|-
 +
| align="center" | 1 || Length || align="center" | <code>59</code> ||
 +
|-
 +
| align="center" | 1 || Mode || align="center" | <code>11</code> ||
 +
|-
 +
| align="center" | 1 || Table || align="center" | <code>01</code> ||
 +
|-
 +
| align="center" | 2 || Key || align="center" | ''K'' || 16-bit Key Value
 +
|-
 +
| align="center" | 1 || Checksum || align="center" | ''c'' ||
 +
|}
 +
 +
Key response
 +
 +
{|class="wikitable"
 +
! Length (bytes) !! Field !! Value !! Notes
 +
|-
 +
| align="center" | 1 || ID || align="center" | <code>F2</code> ||
 +
|-
 +
| align="center" | 1 || Length || align="center" | <code>58</code> ||
 +
|-
 +
| align="center" | 1 || Mode || align="center" | <code>11</code> ||
 +
|-
 +
| align="center" | 2 || Status || || Equals key ''K'' on successful unlock, <code>FFFF</code> on failure.
 +
|-
 +
| align="center" | 1 || Checksum || align="center" | <code>F8</code> ||
 +
|}
 +
 +
=== Configuration Tables ===
 +
 +
{|class="wikitable"
 +
! Table !! Length !! Type !! Description
 +
|-
 +
| style="text-align:center;" | <code>01</code> || style="text-align:center;" | <code>2</code> || style="text-align:center;" | <code>u16</code> || Speedometer Pulses
 +
|-
 +
| style="text-align:center;" | <code>50</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | Boolean || Police Mode
 +
|-
 +
| style="text-align:center;" | <code>55</code> || style="text-align:center;" | <code>4</code> || style="text-align:center;" | <code>u32</code> || Odometer reading at the time of programming (set by scan tool)
 +
|-
 +
| style="text-align:center;" | <code>66</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | <code>u8</code> || SRS Configuration (see [[#SRS Configuration|SRS Configuration]] section)
 +
|-
 +
| style="text-align:center;" | <code>67</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | Boolean || Show Distance To Go
 +
|-
 +
| style="text-align:center;" | <code>69</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | Boolean || Show radio status
 +
|-
 +
| style="text-align:center;" | <code>6D</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | Boolean || Stopwatch
 +
|-
 +
| style="text-align:center;" | <code>7E</code> || style="text-align:center;" | <code>1</code> || style="text-align:center;" | Boolean || Automatic Transmission
 +
|}
 +
 +
==== SRS Configuration ====
 +
 +
The instrument cluster's SRS configuration must match the configuration of the SRS module installed in the vehicle. A mismatched configuration will set a DTC in the SRS module itself (and trigger a warning on the cluster). The SRS DTC will need to be cleared separately after the cluster is properly configured. The table below lists the various SRS configurations, and their corresponding values.
 +
 +
{|class="wikitable"
 +
! Value !! Configuration
 +
|-
 +
| style="text-align:center;" | <code>00</code> || None
 +
|-
 +
| style="text-align:center;" | <code>01</code> || 2 Loop
 +
|-
 +
| style="text-align:center;" | <code>02</code> || 3 Loop
 +
|-
 +
| style="text-align:center;" | <code>03</code> || 4 Loop
 +
|-
 +
| style="text-align:center;" | <code>04</code> || 6 Loop
 +
|}