Wii Balance Board: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
CarlKenner (talk | contribs)
Calibration Data: sample data for unknown calibration values
CarlKenner (talk | contribs)
Line 215: Line 215:
The (Australian) Balance Board belonging to Carl Kenner returns the following data for that range:
The (Australian) Balance Board belonging to Carl Kenner returns the following data for that range:


(4)A40020:  10 69 00 00  
(4)A40020:  10 69 00 00  


(4)A40024:  07C3  3CF8  048C  296B (bigendian calibrations for 0 kg, TR BR TL BL)     
(4)A40024:  07C3  3CF8  048C  296B (bigendian calibrations for 0 kg, TR BR TL BL)     
(4)A4002C:  0ED2  4384  0B3A  3069 (bigendian calibrations for 17 kg)
(4)A4002C:  0ED2  4384  0B3A  3069 (bigendian calibrations for 17 kg)
(4)A40034:  15E9  4A10  11EF  376E (bigendian calibrations for 34 kg)     
(4)A40034:  15E9  4A10  11EF  376E (bigendian calibrations for 34 kg)     


(4)A4003C:  5E 40 E9 B6
(4)A4003C:  5E 40 E9 B6


= Status Information =
= Status Information =

Revision as of 03:49, 5 January 2009

This page is intended to be a technical guide to the Wii Balance Board..
For an excellent high-level overview of the Wii Balance Board, see the Wikipedia entry.

The Wii Balance Board is the bundled input device with the Wii game Wii Fit. It is a wireless device, using standard Bluetooth technology to communicate with the Wii. It implements the same protocol as the Wiimote for host communications, and exposes most of its functionality via an extension controller. It is recommended this page be read in conjunction with the Wiimote page.

Summary

Enough information is available to be able to get calibrated readings from the four pressure sensors, and receive events from the single button and drive the single led. There is other information available in the extension controller registers, but with no identified purpose.

Bluetooth Communication

The Wii Balance Board exposes the sames services over the Bluetooth Service Discovery Protocol (SDP) as a Wiimote.

HID Interface

The Wii Balance Board operates similarly to a Wiimote as a HID device, however the friendly name exposed to HID is Nintendo RVL-WBC-01

Specifically, it will generate reports for the various features of a Wiimote, even though the hardware is absent.

Data Reporting

All Data reporting modes of the Wiimote are supported. Since only eight bytes of the extension report are currently understood, report 0x32 "Core Buttons with 8 Extension bytes" is most appropriate.

Memory and Registers

EEPROM Memory

Undocumented at this point whether the Wii Balance Board exposes any EEPROM storage space.

Control Registers

The control registers for the extension controllers are the only ones currently validated, as there is no IR or speaker hardware in the Wii Balance Board. Access to the extension controller registers is identical to that of the Wiimote.

Input Features

The Wii Balance Board has only a single physical button, accessible as core button "A", bit 3 of the second byte of button status.

Note that the Wii Balance Board will generate input reports for hardware it does not have, but that a Wiimote does.

Feedback Features

The Wii Balance Board has only a single LED, controlled by the same reports as the Wiimote uses to control the player 1 LED. There is no rumble or speaker feature.

Extension Controllers

The Wii Balance Board appears as a Wiimote with a Balance Board extension controller permanently connected. The Balance Board extension is accessed similarly to a normal extension controller on a Wiimote

Registers / Initialization

The Balance Board extension is initialized similarly to a normal extension controller, however no encryption or decryption needs to be undertaken on data either read from the registers, or streamed through the output reports.

Identification

The last two bytes of the register block identify the connected Extension Controller. A two-byte read of register 0xa400fe will return these bytes. The Extension Controller must have been initialized prior to this (by writing 0x00 to the key register).

Value Decrypted Meaning
0x0402 0x2A2C Wii Balance Board

Note that the decrypted value is here as a convenience for those dealing with libraries that automatically decrypt this identifier before presenting it to the code that identifies the extension controller. The unencrypted value is more consistent with existing extension controller identifiers.

Extension Controller Documentation

The Wii Balance Board exposes four 16-bit pressure sensors through its extension controller interface, along with the necessary calibration data to allow conversions to mass measurements.

Data Format

The Balance Board reports its information as at least 8 bytes of data, readable at 0xa40008 and streamable using Data Reporting Modes that include Extension bytes (unused bytes are filled with 0x00). The data in the first 8 bytes is as follows:

  Bit
Byte 7 6 5 4 3 2 1 0
0 Top Right<15:8>
1 Top Right<7:0>
2 Bottom Right<15:8>
3 Bottom Right<7:0>
4 Top Left<15:8>
5 Top Left<7:0>
6 Bottom Left<15:8>
7 Bottom Left<7:0>

The next byte and the byte after the byte after that also appear to have values, although of unknown utility.

Calibration Data

Calibration Data for the Balance Board sensors is found unencrypted in the 24 bytes from 0xa40024 to 0xa4003a, as follows:

  Bit
Byte 7 6 5 4 3 2 1 0
0 Top Right 0kg value<15:8>
1 Top Right 0kg value<7:0>
2 Bottom Right 0kg value<15:8>
3 Bottom Right 0kg value<7:0>
4 Top Left 0kg value<15:8>
5 Top Left 0kg value<7:0>
6 Bottom Left 0kg value<15:8>
7 Bottom Left 0kg value<7:0>
8 Top Right 17kg value<15:8>
9 Top Right 17kg value<7:0>
10 Bottom Right 17kg value<15:8>
11 Bottom Right 17kg value<7:0>
12 Top Left 17kg value<15:8>
13 Top Left 17kg value<7:0>
14 Bottom Left 17kg value<15:8>
15 Bottom Left 17kg value<7:0>
16 Top Right 34kg value<15:8>
17 Top Right 34kg value<7:0>
18 Bottom Right 34kg value<15:8>
19 Bottom Right 34kg value<7:0>
20 Top Left 34kg value<15:8>
21 Top Left 34kg value<7:0>
22 Bottom Left 34kg value<15:8>
23 Bottom Left 34kg value<7:0>

Calculating the weight on each sensor simply involves interpolating between the two calibration values your reading falls between (or using the higher two values if your reading exceeds the highest calibration value), and the total weight on the board is the sum of these values.

There's still a few more bytes unknown (four following, and four preceding) in the range 0xa40020 to 0xa4003f.

The (Australian) Balance Board belonging to Carl Kenner returns the following data for that range:

(4)A40020:   10 69 00 00 
(4)A40024:   07C3  3CF8  048C  296B (bigendian calibrations for 0 kg, TR BR TL BL)     
(4)A4002C:   0ED2  4384  0B3A  3069 (bigendian calibrations for 17 kg)
(4)A40034:   15E9  4A10  11EF  376E (bigendian calibrations for 34 kg)     
(4)A4003C:   5E 40 E9 B6

Status Information

The Wii Balance Board presents the same status information as the Wiimote

Acknowledgments

Much of the information here that differs from a Wiimote is based on the research of Hiroyuki Ogasawara documented in the Sports category of his blog (in Japanese), and the partial translation available at Wiili.