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 === | | === Configuration Tables === |