Difference between revisions of "Hardware/OTP"

From WiiBrew
Jump to navigation Jump to search
(Not really a stub anymore)
m (Removed the general header)
 
(3 intermediate revisions by 2 users not shown)
Line 7: Line 7:
 
}}
 
}}
  
== General ==
+
The '''O'''ne '''T'''ime '''P'''rogrammable memory is used to store 32 4byte words. It is programmed sometime during the factory process and can never be changed afterwards. Next to the Wii's shared and public keys it also contains a random number generation seed and the boot1 hash which basically makes it impossible for us to change boot1.   This memory may or may not be described in claims 141 and 142 in http://www.freepatentsonline.com/y2005/0132217.html
The '''O'''ne '''T'''ime '''P'''rogrammable memory is used to store 32 4byte words. It is programmed sometime during the factory process and can never be changed afterwards. Next to the Wii's shared and public keys it also contains a random number generation seed and the boot1 hash which basically makes it impossible for us to change boot1.
 
  
 
== Register List ==
 
== Register List ==
Line 39: Line 38:
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
 
! Address
 
! Address
 +
! Contents
 
! Description
 
! Description
 
|-
 
|-
| 0-4 || Boot1 hash
+
| 0-4 || [[boot1]] hash || Expected hash checked against actual boot1 hash by [[boot0]]
 
|-
 
|-
| 5-8 || common key
+
| 5-8 || [[ticket|common key]] || Used to encrypt title keys in tickets
 
|-
 
|-
| 9 || NG id
+
| 9 || [[savegame Files|NG id]] || Used to name the NG [[certificate chain|certificate]]
 
|-
 
|-
| a-11 || NG private key
+
| a-11 || NG private key || Per-console key that signs save files
 
|-
 
|-
| 11-15 || NAND HMAC (overlaps with NG private key)
+
| 11-15 ||[[Hardware/NAND|NAND]] HMAC (overlaps with NG private key) || Per-console key that signs NAND blocks
 
|-
 
|-
| 16-19 || NAND key
+
| 16-19 || NAND key || Per-console key that encrypts the NAND
 
|-
 
|-
| 1a-1d || RNG key
+
| 1a-1d || RNG seed || Used for crypto-related random number generation
 
|-
 
|-
| 1e-1f || Unknown
+
| 1e-1f || Unknown || Appears to vary between units
 
|-
 
|-
 
|}
 
|}

Latest revision as of 21:54, 21 July 2021

OTP
Hollywood Registers
Access
BroadwayNone
StarletFull
Registers
Base0x0d8001ec
Length0x8
Access size32 bits
Byte orderBig Endian
This box: view  talk  edit

The One Time Programmable memory is used to store 32 4byte words. It is programmed sometime during the factory process and can never be changed afterwards. Next to the Wii's shared and public keys it also contains a random number generation seed and the boot1 hash which basically makes it impossible for us to change boot1. This memory may or may not be described in claims 141 and 142 in http://www.freepatentsonline.com/y2005/0132217.html

Register List

Hollywood GPIOs
Address Bits Name Description
0x0d8001ec 32 HW_OTP_COMMAND OTP command
0x0d8001f0 32 HW_OTP_DATA OTP data

General Registers

HW_OTP_COMMAND (0x0d8001ec)
  31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Access R/W U
Field RD
  15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Access U R/W
Field ADDR
Field Description
RD Set to one to execute a read command. If clear, then the data in HW_OTP_DATA is unchanged.
ADDR Word address to read

This register contains the command sent to the OTP. It is unknown whether is register is also used during the factory process to program the OTP.


HW_OTP_DATA (0x0d8001f0)
  310
Access R

This register contains the output data for the last issued OTP read command. The execution of a read operation via the HW_OTP_COMMAND register immediately changes this register without any delay.

OTP Contents

The following things are stored inside the OTP:

Address Contents Description
0-4 boot1 hash Expected hash checked against actual boot1 hash by boot0
5-8 common key Used to encrypt title keys in tickets
9 NG id Used to name the NG certificate
a-11 NG private key Per-console key that signs save files
11-15 NAND HMAC (overlaps with NG private key) Per-console key that signs NAND blocks
16-19 NAND key Per-console key that encrypts the NAND
1a-1d RNG seed Used for crypto-related random number generation
1e-1f Unknown Appears to vary between units