Settings EEPROM structure

Structure

Offset

Size

Description

0x100

0x03

board info + CRC16

0x103

0x03

drc area + CRC16

0x106

0x03

device info

0x11E

0x0E

Factory Acc Calibration

0x1AC

0x15

Factory Gyro Calibration

0x12C

0x15

Gyro Calibration

0x153

0x12

Factory TP Calibration

0x19E

0x0E

2nd Factory Acc Calibration

0x1D3

0x12

2nd Factory TP Calibration

0x200

0x03

language bank + CRC16

0x203

0x03

0x206

0x03

Connection mode related? + CRC16

0x20D

0x06

Mic Config + CRC16

0x213

0x0E

Acc Calibration

0x244

0x12

TP Calibration

0x256

0x06

Unknown + ExtId 0 (Language) + CRC16

0x25C

0x06

ExtId 1 (RC Database) + CRC16

0x262

0x06

ExtId 2 + CRC16

0x268

0x06

ExtId 3 + CRC16

0x26E

0x06

ExtId 4 + CRC16

0x274

0x03

InitBootFlag + CRC16

0x277

0x0F

0x286

0x03

LCD Mode + CRC16

0x289

0x0c

TV Control Id + CRC16

0x295

0x03

0x298

0x03

Caffeine Enable Flag + CRC16

0x29B

0x03

Caffeine Initial Boot Flag + CRC16

0x29E

0x03

Caffeine Slot + CRC16

0x2A1

0x03

NotificationSoundMode + CRC16

0x2A4

0x03

NotificationInfo + CRC16

0x2A7

0x04

NotificationReadCount + CRC16

Device Info

This is a 8 bit value shown below followed by a CRC16.

Bits

Description

6 - 7

Unused/Unset

4 - 5

Supported connection types:

0b00: Wired
0b01: Wireless
0b10: Both

0b01 on retail.

2 - 3

Production type

0b00: Development
0b01: Mass

Enables the “DK Menu”, if both bits are 0. 0b01 on retail.

0 - 1

Shipment status

0b00: Unshipped
0b01: Shipped

Shows the service menu, if unshipped. 0b01 on retail.

Touchpad Calibration

The touchpad calibration scales the x and y values based on the provided max and min values. The input values are in the range of 0-4096 and get scaled down to 0-854 and 0-480.

Offset

Size

Description

0x00

0x02

newMinX

0x02

0x02

newMinY

0x04

0x02

newMaxX

0x06

0x02

newMaxY

0x08

0x02

oldMinX

0x0A

0x02

oldMinY

0x0C

0x02

oldMaxX

0x0E

0x02

oldMaxY

0x10

0x02

CRC16

Accelerometer Calibration

Each accelerometer value is converted to floating point values on the Wii U using the following logic.

float accelX = (float)rawAccelX / (float)(scaleX - offsetX);
float accelY = (float)rawAccelY / (float)(scaleY - offsetY);
float accelZ = (float)rawAccelZ / (float)(scaleZ - offsetZ);

Offset

Size

Description

0x00

0x02

offsetX

0x02

0x02

offsetY

0x04

0x02

offsetZ

0x06

0x02

scaleX

0x08

0x02

scaleY

0x0A

0x02

scaleZ

0x0C

0x02

CRC16

Gyroscope Calibration

Each gyroscope value is converted to floating point values on the Wii U using the following logic.

float gyroX = ((float)rawGyroX + offsetX) * ((scaleMult * 6.0f) / (float)scaleX / 360.0f)
float gyroY = ((float)rawGyroY + offsetY) * ((scaleMult * 6.0f) / (float)scaleY / 360.0f)
float gyroZ = ((float)rawGyroZ + offsetZ) * ((scaleMult * 6.0f) / (float)scaleZ / 360.0f)

Offset

Size

Description

0x00

0x03

offsetX

0x03

0x03

offsetY

0x06

0x03

offsetZ

0x09

0x03

scaleX

0x0C

0x03

scaleY

0x0F

0x03

scaleZ

0x12

0x01

scaleMult

0x13

0x02

CRC16