Difference between revisions of "Hardware/NAND"

From WiiBrew
Jump to navigation Jump to search
(samsung links)
Line 7: Line 7:
  
 
*Blocks 0x40 - 0x89: boot2  (first copy)
 
*Blocks 0x40 - 0x89: boot2  (first copy)
*Blocks 0x1C0 - ?    : boot2  (second copy)
+
*Blocks 0x140 - 0x189  : boot2  (second copy)
 
** boot2 is the third-stage bootloader; it is stored in a modified WAD format, including a [[ticket]] that is encrypted with the common key and signed.
 
** boot2 is the third-stage bootloader; it is stored in a modified WAD format, including a [[ticket]] that is encrypted with the common key and signed.
  
 +
*Blocks 0x2BC0:  Encrypted filesystem data.  Data is encrypted with a per-console AES key, and then signed with a (separate, per-console) HMAC key.
 +
 +
*Blocks 0x3F800 - 0x40000: Filesystem metadata (SFFS, unencrypted).  There are 16 superblocks contained therein -- one every 0x80 blocks.
  
 
The NAND flash driver inside boot2 and IOS supports the following chip IDs:
 
The NAND flash driver inside boot2 and IOS supports the following chip IDs:

Revision as of 15:27, 12 April 2008

The Wii contains 512MiBi of NAND flash storage, which is used to store "system software", channels (including Virtual Console titles), game saves, and system settings.

The NAND flash device is divided into 2048-byte blocks.

  • Blocks 0-0x3F: boot1
    • boot1 is the second-stage bootloader; it is decrypted by boot0, which resides on a mask rom inside the Starlet coprocessor. Its primary function is to load and decrypt boot2.
  • Blocks 0x40 - 0x89: boot2 (first copy)
  • Blocks 0x140 - 0x189 : boot2 (second copy)
    • boot2 is the third-stage bootloader; it is stored in a modified WAD format, including a ticket that is encrypted with the common key and signed.
  • Blocks 0x2BC0: Encrypted filesystem data. Data is encrypted with a per-console AES key, and then signed with a (separate, per-console) HMAC key.
  • Blocks 0x3F800 - 0x40000: Filesystem metadata (SFFS, unencrypted). There are 16 superblocks contained therein -- one every 0x80 blocks.

The NAND flash driver inside boot2 and IOS supports the following chip IDs:

Hynix: ad 76 / ad f1 / ad dc  (64MB = HY27US0812(1/2)B, 128MB = HY27UF081G2A, 512MB = HY27UF084G2M)
Samsung: ec 76 / ec f1 / ec da / ec dc (64M K9F1208U0C /128 K9F1G08U0B/256 K9F2G08U0A/512 = K9F4G08U0A)
Toshiba: 98 76 / 98 f1 / 98 da (64/128/512)