User Tools

Site Tools


uic_eeprom_structure

UIC EEPROM structure

The UIC's EEPROM occupies address range 0x1000..0x17FF. (TODO: maybe it occupies more?)

The first 256 bytes are used internally, while the rest is used for user data storage.

https://bitbucket.org/memahaxx/libdrc/src/master/src/device-config.cpp for more info.

Address Length Description
0x1010 2 Firmware install status – set to A5 5A when a firmware is installed
0x1012 1 ??
0x1013 1 LED status when no firmware installed – 1=red 2=amber 0/x=none
 –
0x1101 32 Wifi SSID (WiiUxxxx…)
0x1121 1 Wifi SSID length
0x1122 1 Wifi auth type
0 = open
1 = shared key (?) 
0x1123 1 Wifi auth mode
0x00 = disabled
0x01 = none
0x04 = WPA
0x80 = WPA2 
0x1124 1 Wifi encryption
0 = none
1 = WEP
2 = TKIP
3 = AES
0x1125 64 Wifi passphrase
0x1165 1 Wifi passphrase length
0x1166 2 Wifi country code
0x116B 2 CRC16 over 0x1101..0x116A
0x116D 16 WoWL key
0x117F 6 WoWL MAC
0x1187 1 WoWL setting (?)
0x118A 1 Last wifi channel
 –
0x11FD 1 Layout of page 1 (should be 3)
0x11FE 2 CRC16 over 0x11FD
 –
0x1200 1 Board info 1
0x1201 2 CRC16 over 0x1200
0x1203 1 Region info 1
0x1204 2 CRC16 over 0x1203
0x1206 1 Board config 1
0x1207 2 CRC16 over 0x1206
0x121A 2 Volume calibration 1
0x121C 2 CRC16 over 0x121A..0x121B
0x121E 12 Accelerometer calibration 2
0x122A 2 CRC16 over 0x121E..0x1229
0x122C 19 Gyroscope calibration 1
0x123F 2 CRC16 over 0x122C..0x123E
0x1253 16 Touchscreen calibration 2
0x1263 2 CRC16 over 0x1253..0x1262
0x1265 4 Service version 2
0x1269 2 CRC16 over 0x1265..0x1268
 –
0x1280 1 Board info 2
0x1281 2 CRC16 over 0x1280
0x1283 1 Region info 2
0x1284 2 CRC16 over 0x1283
0x1286 1 Board config 2
0x1287 2 CRC16 over 0x1286
0x129A 2 Volume calibration 2
0x129C 2 CRC16 over 0x129A..0x129B
0x129E 12 Accelerometer calibration 3
0x12AA 2 CRC16 over 0x129E..0x12A9
0x12AC 19 Gyroscope calibration 1
0x12BF 2 CRC16 over 0x12AC..0x12BE
0x12D3 16 Touchscreen calibration 3
0x12E3 2 CRC16 over 0x12D3..0x12E2
0x12E5 4 Service version 3
0x12E9 2 CRC16 over 0x12E5..0x12E8
 –
0x12FD 1 Layout of page 2 (should be 5)
0x12FE 2 CRC16 over 0x12FD
 –
0x1300 1 Language
0x1301 2 CRC16 over 0x1300
0x1303 1 Opening screen index
0x1304 2 CRC16 over 0x1303
0x1306 1 Development mode setting
0x1307 2 CRC16 over 0x1306
0x1313 12 Accelerometer calibration 1
0x131F 2 CRC16 over 0x1313..0x131E
0x1344 16 Touchscreen calibration 1
0x1354 2 CRC16 over 0x1344..0x1353
0x1356 1 Language bank index
0x1357 2 CRC16 over 0x1356
0x1359 1 Language version (together with CRC16 bytes)
0x135C 4 Remote control data version
0x1360 2 CRC16 over 0x135C
0x1362 4 Service version 1
0x1366 2 CRC16 over 0x1362..0x1365
0x1368  4 Opening screen 1 version
0x136C 2 CRC16 over 0x1368..0x136B
0x136E  4 Opening screen 2 version
0x1372 2 CRC16 over 0x136E..0x1371
0x1374 1 Initial boot flag (?)
0x1375 2 CRC16 over 0x1374
0x1377 13 LCD brightness levels
0x1384 2 CRC16 over 0x1377..0x1383
0x1386 1 LCD brightness setting
0x1387 2 CRC16 over 0x1386
0x1389 5 Remote control ID 1
0x138E 5 Remote control ID 2
0x1393 2 CRC16 over 0x1389..0x1392
0x1396 1 Airwave setting
0x1397 2 CRC16 over 0x1396
 –
0x13FD 1 Layout of page 3 (should be 4)
0x13FE 2 CRC16 over 0x13FD
 –
0x1400 256 ???
0x1500 2 CRC16 over 0x1400-0x14FF
 –
0x1580 256 ???
0x1680 2 CRC16 over 0x1580-0x167F

Data is stored in little-endian order.

When multiple regions exist for a given information (for example, board info), the first region with a correct CRC16 is selected.

Board info

Bit 0-3 of the board info value are the main version, while bit 4-7 are the sub version.

Main version:

  • 0 = DK1
  • 1 = EP_DK2
  • 2 = DP1
  • 3 = DP2
  • 4 = DK3
  • 5 = DK4
  • 6 = DP3
  • 7 = DK5
  • 8 = DP4
  • 9 = DKMP
  • 10 = DP5
  • 11 = MASS
  • 12 = DKMP2
  • 13 = DRC_I

Sub version:

  • 0 = DK1_EP_DK2
  • 1 = DP1_DK3
  • 2 = DK4
  • 3 = DP3
  • 4 = DK5
  • 5 = DP4
  • 6 = DKMP
  • 7 = DP5
  • 8 = MASS
  • 9 = DKMP2
  • 10 = DRC_I

Region info

  • 0 = Japan
  • 1 = North America
  • 2 = Europe
  • 3 = China
  • 4 = South Korea
  • 5 = Taiwan
  • 6 = Australia

Board config

Value is 0x15 for retail boards.

If bit0-1 are any value other than 1, the gamepad will enter service mode upon boot.

Language

(0-3 = America, 4-11 = Europe)

  • 0 = English
  • 1 = French
  • 2 = Spanish
  • 3 = Portuguese
  • 4 = English
  • 5 = French
  • 6 = Spanish
  • 7 = Portuguese
  • 8 = Dutch
  • 9 = Italian
  • 10 = German
  • 11 = Russian
  • 12 = Japanese
  • 13 = Chinese (simplified)
  • 14 = Korean
  • 15 = Chinese (traditional)

Volume calibration

Offset Length Description
0x00 1 Minimum volume
0x01 1 Maximum volume

The minimum and maximum values are used to cap the reading from the volume slider within an acceptable range.

TODO: detail how that reading is converted to the final volume setting passed to the audio amplifier

Gyroscope calibration

Offset Length Description
0x00 3 Zero X
0x03 3 Zero Y
0x06 3 Zero Z
0x09 3 Rotation X
0x0C 3 Rotation Y
0x0F 3 Rotation Z
0x12 1 Speed

Accelerometer calibration

Offset Length Description
0x00 2 0G X
0x02 2 0G Y
0x04 2 0G Z
0x06 2 1G X
0x08 2 1G Y
0x0A 2 1G Z

Touchscreen calibration

Offset Length Description
0x00 2 Point 1 screen X
0x02 2 Point 1 screen Y
0x04 2 Point 2 screen X
0x06 2 Point 2 screen Y
0x08 2 Point 1 raw X
0x0A 2 Point 1 raw Y
0x0C 2 Point 2 raw X
0x0E 2 Point 2 raw Y

Raw coordinates are 12-bit TSC readings, while screen coordinates are their corresponding values in pixels.

Observed screen coordinates are: 53,30 802,451

LCD brightness levels

Offset Length Description
0x00 1 Level 0 brightness level (setting A)
0x01 1 Level 0 frequency (setting B)
0x02 1 Level 1 brightness level
0x03 1 Level 1 frequency
0x04 1 Level 2 brightness level
0x05 1 Level 2 frequency
0x06 1 Level 3 brightness level
0x07 1 Level 3 frequency
0x08 1 Level 4 brightness level
0x09 1 Level 4 frequency
0x0A 1 Level 5 brightness level
0x0B 1 Level 5 frequency
0x0C 1 Threshold level

This table maps 6 predefined brightness levels to their adequate LCD parameters. See the LCD page for information as to how these settings are used.

uic_eeprom_structure.txt · Last modified: 2025/04/18 09:54 by arisotura

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki