Line 10:
Line 10:
! Description
! Description
|-
|-
−
| 0x000 (0x00 * 2) || 0x12 bytes || Empty.
+
| 0x000 (0x00 * 2) || 0x12 bytes || Empty
|-
|-
−
| 0x012 (0x09 * 2) || 0x08 bytes || SEEPROM PRNG seed.
+
| 0x012 (0x09 * 2) || 0x08 bytes || SEEPROM RNG seed
−
Incremented every time IOS-CRYPTO starts.
+
This seed is incremented every time IOS-CRYPTO starts.
−
Used with the OTP's RNG key and the OTP's RNG seed to setup IOSU's PRNG.
+
It is also combined with the OTP's RNG key and the OTP's RNG seed to setup the IOS-CRYPTO RNG functions.
|-
|-
−
| 0x01A (0x0D * 2) || 0x06 bytes || Empty.
+
| 0x01A (0x0D * 2) || 0x06 bytes || Empty
|-
|-
−
| 0x020 (0x10 * 2) || 0x04 bytes || PPC PVR (0x70010201).
+
| 0x020 (0x10 * 2) || 0x04 bytes || PPC PVR
+
Should always be 0x70010201.
|-
|-
−
| 0x024 (0x12 * 2) || 0x06 bytes || ASCII tag.
+
| 0x024 (0x12 * 2) || 0x06 bytes || SEEPROM version name string
|-
|-
−
| 0x02A (0x15 * 2) || 0x06 bytes || Unknown.
+
| 0x02A (0x15 * 2) || 0x02 bytes || SEEPROM version code
|-
|-
−
| 0x030 (0x18 * 2) || 0x08 bytes || OTP tag.
+
| 0x02C (0x16 * 2) || 0x02 bytes || OTP version code
|-
|-
−
| 0x038 (0x1C * 2) || 0x04 bytes || BC struct's CRC32.
+
| 0x02E (0x17 * 2) || 0x02 bytes || OTP revision code
|-
|-
−
| 0x03C (0x1E * 2) || 0x02 bytes || BC struct's size.
+
| 0x030 (0x18 * 2) || 0x08 bytes || OTP version name string
|-
|-
−
| 0x03E (0x1F * 2) || 0x02 bytes || BC library version.
+
| 0x038 (0x1C * 2) || 0x04 bytes || BC struct's CRC32
|-
|-
−
| 0x040 (0x20 * 2) || 0x02 bytes || BC author.
+
| 0x03C (0x1E * 2) || 0x02 bytes || BC struct's size
|-
|-
−
| 0x042 (0x21 * 2) || 0x02 bytes || BC boardType.
+
| 0x03E (0x1F * 2) || 0x02 bytes || BC library version
|-
|-
−
| 0x044 (0x22 * 2) || 0x02 bytes || BC boardRevision.
+
| 0x040 (0x20 * 2) || 0x02 bytes || BC author
|-
|-
−
| 0x046 (0x23 * 2) || 0x02 bytes || BC bootSource.
+
| 0x042 (0x21 * 2) || 0x02 bytes || BC boardType
|-
|-
−
| 0x048 (0x24 * 2) || 0x02 bytes || BC ddr3Size.
+
| 0x044 (0x22 * 2) || 0x02 bytes || BC boardRevision
|-
|-
−
| 0x04A (0x25 * 2) || 0x02 bytes || BC ddr3Speed.
+
| 0x046 (0x23 * 2) || 0x02 bytes || BC bootSource
|-
|-
−
| 0x04C (0x26 * 2) || 0x02 bytes || BC ppcClockMultiplier.
+
| 0x048 (0x24 * 2) || 0x02 bytes || BC ddr3Size
|-
|-
−
| 0x04E (0x27 * 2) || 0x02 bytes || BC iopClockMultiplier.
+
| 0x04A (0x25 * 2) || 0x02 bytes || BC ddr3Speed
|-
|-
−
| 0x050 (0x28 * 2) || 0x02 bytes || BC video1080p.
+
| 0x04C (0x26 * 2) || 0x02 bytes || BC ppcClockMultiplier
|-
|-
−
| 0x052 (0x29 * 2) || 0x02 bytes || BC ddr3Vendor.
+
| 0x04E (0x27 * 2) || 0x02 bytes || BC iopClockMultiplier
|-
|-
−
| 0x054 (0x2A * 2) || 0x02 bytes || BC movPassiveReset.
+
| 0x050 (0x28 * 2) || 0x02 bytes || BC video1080p
|-
|-
−
| 0x056 (0x2B * 2) || 0x02 bytes || BC sysPllSpeed.
+
| 0x052 (0x29 * 2) || 0x02 bytes || BC ddr3Vendor
|-
|-
−
| 0x058 (0x2C * 2) || 0x02 bytes || BC sataDevice.
+
| 0x054 (0x2A * 2) || 0x02 bytes || BC movPassiveReset
|-
|-
−
| 0x05A (0x2D * 2) || 0x02 bytes || BC consoleType.
+
| 0x056 (0x2B * 2) || 0x02 bytes || BC sysPllSpeed
|-
|-
−
| 0x05C (0x2E * 2) || 0x04 bytes || BC devicePresence.
+
| 0x058 (0x2C * 2) || 0x02 bytes || BC sataDevice
|-
|-
−
| 0x060 (0x30 * 2) || 0x20 bytes || Reserved for BC ("BoardConfig") library.
+
| 0x05A (0x2D * 2) || 0x02 bytes || BC consoleType
|-
|-
−
| 0x080 (0x40 * 2) || 0x10 bytes || Wii U drive key.
+
| 0x05C (0x2E * 2) || 0x04 bytes || BC devicePresence
|-
|-
−
| 0x090 (0x48 * 2) || 0x10 bytes || Wii U factory key (cleared by IOS-MCP).
+
| 0x060 (0x30 * 2) || 0x20 bytes || Reserved for BC ("BoardConfig") library
|-
|-
−
| 0x0A0 (0x50 * 2) || 0x10 bytes || Wii U devkit key (?).
+
| 0x080 (0x40 * 2) || 0x10 bytes || Wii U drive key
|-
|-
−
| 0x0B0 (0x58 * 2) || 0x10 bytes || Wii U USB key seed.
+
| 0x090 (0x48 * 2) || 0x10 bytes || Wii U factory key
+
This key is cleared by IOS-MCP at factory.
+
|-
+
| 0x0A0 (0x50 * 2) || 0x10 bytes || Wii U SHDD key
+
|-
+
| 0x0B0 (0x58 * 2) || 0x10 bytes || Wii U USB key seed
This seed is encrypted with a key from OTP then used to set the /dev/crypto USB key.
This seed is encrypted with a key from OTP then used to set the /dev/crypto USB key.
−
The first 4 bytes of this key must match the last 4 bytes of a 0x10 seed stored in the OTP.
+
The first 0x04 bytes of this key must match the Wii U NG ID.
|-
|-
−
| 0x0C0 (0x60 * 2) || 0x02 bytes || Drive key's status flag.
+
| 0x0C0 (0x60 * 2) || 0x02 bytes || Drive key's status flag
If the flag is 0xFFFF, the drive key is set and encrypted with the Wii U SEEPROM key.
If the flag is 0xFFFF, the drive key is set and encrypted with the Wii U SEEPROM key.
If the flag is 0x0000, the drive key is set and in plain form.
If the flag is 0x0000, the drive key is set and in plain form.
|-
|-
−
| 0x0C2 (0x61 * 2) || 0x02 bytes || USB key seed's status flag.
+
| 0x0C2 (0x61 * 2) || 0x02 bytes || USB key seed's status flag
|-
|-
−
| 0x0C4 (0x62 * 2) || 0x02 bytes || Devkit key's status flag.
+
| 0x0C4 (0x62 * 2) || 0x02 bytes || SHDD key's status flag
−
If the flag is 0xFFFF, the devkit key is set and encrypted with a key from OTP.
+
If the flag is 0xFFFF, the SHDD key is set and encrypted with a key from OTP.
−
If the flag is 0x0000, the devkit key is not set.
+
If the flag is 0x0000, the SHDD key is not set.
|-
|-
−
| 0x0C6 (0x63 * 2) || 0x6A bytes || Empty.
+
| 0x0C6 (0x63 * 2) || 0x6A bytes || Empty
|-
|-
−
| 0x130 (0x98 * 2) || 0x04 bytes || Unknown.
+
| 0x130 (0x98 * 2) || 0x04 bytes || Unknown
|-
|-
−
| 0x134 (0x9A * 2) || 0x04 bytes || Unknown.
+
| 0x134 (0x9A * 2) || 0x02 bytes || Unknown
|-
|-
−
| 0x138 (0x9C * 2) || 0x08 bytes || Unknown.
+
| 0x136 (0x9B * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x138 (0x9C * 2) || 0x08 bytes || Empty
|-
|-
| 0x140 (0xA0 * 2) || 0x04 bytes || slc:sys_prod.version
| 0x140 (0xA0 * 2) || 0x04 bytes || slc:sys_prod.version
Line 112:
Line 120:
| 0x170 (0xB8 * 2) || 0x10 bytes || slc:sys_prod.model_number
| 0x170 (0xB8 * 2) || 0x10 bytes || slc:sys_prod.model_number
|-
|-
−
| 0x180 (0xC0 * 2) || 0x04 bytes || Unknown.
+
| 0x180 (0xC0 * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x182 (0xC1 * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x184 (0xC2 * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x186 (0xC3 * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x188 (0xC4 * 2) || 0x02 bytes || Production date (year)
+
|-
+
| 0x18A (0xC5 * 2) || 0x02 bytes || Production date (month and day)
+
|-
+
| 0x18C (0xC6 * 2) || 0x02 bytes || Production date (hour and minute)
+
|-
+
| 0x18E (0xC7 * 2) || 0x04 bytes || CRC32 of the last 0x0E bytes
+
|-
+
| 0x192 (0xC9 * 2) || 0x02 bytes || 0xAA55 marker
+
|-
+
| 0x194 (0xCA * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x196 (0xCB * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x198 (0xCC * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x19A (0xCD * 2) || 0x04 bytes || Empty
+
|-
+
| 0x19E (0xCF * 2) || 0x04 bytes || Unknown
+
|-
+
| 0x1A2 (0xD1 * 2) || 0x02 bytes || 0xBB66 marker
+
|-
+
| 0x1A4 (0xD2 * 2) || 0x02 bytes || Unknown
+
|-
+
| 0x1A6 (0xD3 * 2) || 0x02 bytes || Unknown
|-
|-
−
| 0x184 (0xC2 * 2) || 0x0C bytes || Unknown.
+
| 0x1A8 (0xD4 * 2) || 0x08 bytes || Unknown string
|-
|-
−
| 0x190 (0xC8 * 2) || 0x10 bytes || Unknown.
+
| 0x1B0 (0xD8 * 2) || 0x02 bytes || Unknown
|-
|-
−
| 0x1A0 (0xD0 * 2) || 0x08 bytes || Unknown.
+
| 0x1B2 (0xD9 * 2) || 0x02 bytes || Unknown
|-
|-
−
| 0x1A8 (0xD4 * 2) || 0x08 bytes || ASCII tag.
+
| 0x1B4 (0xDA * 2) || 0x08 bytes || Empty
|-
|-
−
| 0x1B0 (0xD8 * 2) || 0x10 bytes || Unknown.
+
| 0x1BC (0xDE * 2) || 0x04 bytes || Unknown
|-
|-
−
| 0x1C0 (0xE0 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key).
+
| 0x1C0 (0xE0 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key)
Structure containing parameters for boot0:
Structure containing parameters for boot0:
−
- 0x1C0 to 0x1C2 (0x02 bytes): Control flags (clock config + SMC delay?):
+
- 0x1C0 to 0x1C2 (0x02 bytes): CPU control flags.
−
-> bits 0-9 set the cpu speed in MHz used for various IO delay calculations.
+
-> Bits 0-9 set the CPU speed in MHz used for various IO delay calculations.
−
-> bits 10-14 set an io delay length before asking SMC if an SD boot has been requested.
+
-> Bits 10-14 set a delay before asking SMC if the SD boot combo has been pressed.
−
-> bit 15, if set, causes 0x3 to be written to LT_IOP2X and waits for interrupt (presumably after clock increased)
+
-> Bit 15, if set, causes 0x3 to be written to LT_IOP2X (increasing the ARM CPU clock multiplier) and waits for an interrupt.
−
+
- 0x1C2 to 0x1C4 (0x02 bytes): NAND and SD control flags.
−
- 0x1C2 to 0x1C4 (0x02 bytes): Control flags (NAND config):
+
-> Bit 13 tells boot0 to overwrite NAND_BANK with the supplied value.
−
-> bit 13 tells boot0 to overwrite NAND_BANK with the supplied value.
+
-> Bit 14 tells boot0 to overwrite NAND_CONFIG with the supplied value.
−
-> bit 14 tells boot0 to overwrite NAND_CONFIG with the supplied value.
+
-> Bit 15 tells boot0 to ignore NAND errors.
- 0x1C4 to 0x1C8 (0x04 bytes): Value to overwrite NAND_CONFIG (optional).
- 0x1C4 to 0x1C8 (0x04 bytes): Value to overwrite NAND_CONFIG (optional).
- 0x1C8 to 0x1CC (0x04 bytes): Value to overwrite NAND_BANK (optional).
- 0x1C8 to 0x1CC (0x04 bytes): Value to overwrite NAND_BANK (optional).
- 0x1CC to 0x1D0 (0x04 bytes): CRC32 of data from 0x1C0 to 0x1CC.
- 0x1CC to 0x1D0 (0x04 bytes): CRC32 of data from 0x1C0 to 0x1CC.
|-
|-
−
| 0x1D0 (0xE8 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key).
+
| 0x1D0 (0xE8 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key)
Structure containing parameters for boot0:
Structure containing parameters for boot0:
- 0x1D0 to 0x1D2 (0x02 bytes): boot1 version.
- 0x1D0 to 0x1D2 (0x02 bytes): boot1 version.
Line 145:
Line 185:
- 0x1DC to 0x1E0 (0x04 bytes): CRC32 of data from 0x1D0 to 0x1DC.
- 0x1DC to 0x1E0 (0x04 bytes): CRC32 of data from 0x1D0 to 0x1DC.
|-
|-
−
| 0x1E0 (0xF0 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key).
+
| 0x1E0 (0xF0 * 2) || 0x10 bytes || Boot parameters (encrypted with Wii U SEEPROM key)
Structure containing parameters for boot0:
Structure containing parameters for boot0:
- 0x1E0 to 0x1E2 (0x02 bytes): boot1 copy version.
- 0x1E0 to 0x1E2 (0x02 bytes): boot1 copy version.
Line 152:
Line 192:
- 0x1EC to 0x1F0 (0x04 bytes): CRC32 of data from 0x1E0 to 0x1EC.
- 0x1EC to 0x1F0 (0x04 bytes): CRC32 of data from 0x1E0 to 0x1EC.
|-
|-
−
| 0x1F0 (0xF8 * 2) || 0x10 bytes || Empty.
+
| 0x1F0 (0xF8 * 2) || 0x10 bytes || Empty
|-
|-
|}
|}