Wii Balance Board PC Drivers

From WiiLi

Jump to: navigation, search

more information: Wii balance board Some more detailed information about for example calibration is found at http://wiibrew.org/wiki/Wii_Balance_Board

Could some one that speaks Japanese help us with the information for this page?

http://www.wiili.org/forum/wiiboard-f72.html

Temporary Google translation:

[edit] Memo #2 on protocol analysis

The Balance Board's access method is the same as the Nunchuk and the Classic Controller, using the expansion port. Writing to the registers with report 16, you need to initialise the expansion device and then information can be acquired.

For example when report number 0x34 was used, the data can take the format below:

34 00 00 AA AA BB BB CC CC DD DD? ? ? ? EE.. 
 AA AA right-top (L)
 BB BB left-top (S) 
 CC CC right-bottom (S)
 DD DD left-bottom (L)

(AA AA... are BigEndian)

It seems that some value is also in EE, but the usage is unclear. There are four sensors. It seems that they are placed at each of the 4 feet of the balance board itself.

+----------------+
| BB (S)  AA (L) |
| DD (L)  CC (S) |
|      POWER     |
+----------------+

***************Correction 2008 April 29: ************* There is mistake in the place of the sensors it should be For example when report number 0x34 was used, the data can take the format below:

34 00 00 AA AA BB BB CC CC DD DD? ? ? ? EE.. 
 AA AA right-top (L)
 BB BB right-bottom (S) 
 CC CC left-top (S)
 DD DD left-bottom (L)

(AA AA... are BigEndian)

It seems that some value is also in EE, but the usage is unclear. There are four sensors. It seems that they are placed at each of the 4 feet of the balance board itself.

+--------------------+
| C0C1 (S)  A0A1 (L) |
| D0D1 (L)  B0B1 (S) |
|        POWER       |
+--------------------+

***************End of Correction 2008 April 29: *************

When I turn it over, and push the foot part, the values of AA-DD are changed individually.


As for type of sensor, I originally considered there were type types of value ranges:
 (L) is around 18000
 (S) is around 2700
Perhaps for these two, the charge range of the respective precision differs. 
Arranging in opposite angle, while supplying precision,
when it is designed to be the structure which direction is recognized It is thought.

[added 2007/12/17] The above sentences are wrong and have came from variation of my sensors.


In addition we don't need decoding with 0x17 unlike the Nunchuk/Classic controller. Actually dumping from 0x04a40000 to 0x04a400ff, it seems to return the normal encoded values from the board. For example, the value from 0x04a400fc is 0xa4 without decoding.

This line seems to be used for the identification:

04a400f0: Ff ff 00 00 ff ff 00 00 00 00 00 00 a4 20 04 02


In addition the followings were analysed.

* Power button is (A) button of Wii Remote
* Power supply indicater is LED1 of Wii Remote
* Nintendo RVL-WBC-01

- Recognition technique of Wii Balance board

(1) When reading the 0x20 report, check whether the expansion port is used,
(2)  If the extended port is not used, it is only the Wii Remote
(3)  If there is a connection to the expansion port, it reads register 0x04a400fc, and checks whether it is 0xa4
(4)  If it is 0xa4 it does not decode with 0x17. If it is not 0xa4, it decodes with 0x17
(5) You can distinguish it with the values at 0x04a400fe and 0x04a400ff
 * 0x00 0x00 Wiimote + Nunchuk
 * 0x01 0x01 Wiimote + classic controller
 * 0x01 0x03 Wiimote + Guitar
 * 0x04 0x02 Wii balance board

More information such as calibration is unclear.

[edit] Memo #3 on protocol analysis

2007/12/16 Wii balance board analysis NOTE 3 Sports / health system Posted by: oga at 01:29 I bought one more WiiFit. The first is the second board and the balance is quite different numbers. "Wii board balanced analysis NOTE 2" and two types of sensors wrote that the difference was just an individual.

HID 0x34 reports are slightly better than 0x32 efficient. IR sensor and acceleration sensor that is not the pressure sampling values , but only enough for eight.

values for calibration are stored after 0x04a40020 .

  • A = Upper Right
  • B = Upper Left -- Maybe lower Right
  • C = Lower Right -- Maybe Top left
  • D = Lower Left

B and C might be in the wrong order here - Feesh!

Code:
 04a40024 - 25: A0
 04a40026 - 27: B0
 04a40028 - 29: C0
 04a4002a - 2b: D0
 04a4002c - 2d: A1
 04a4002e - 2f: B1
 04a40030 - 31: C1
 04a40032 - 33: D1
 04a40034 - 35: A2
 04a40036 - 37: B2
 04a40038 - 39: C2
 04a4003a - 3b: D2
 * 2byte unit BigEndian

probably the 3 points A0 - A1 - A2, are corresponding to the curve of the top right pressure sensor. (speculation). And for B to D as well.

Only part of the leg to try and mechanical degradation of no moving parts is especially metal bar code came out from the center.

Suspension of floating structures, and the body is one end of the rod, floating opposite foot on the ground is.


● register dump of the expansion equipment area (without decoding)

Code:

 First Wii balance board (without decoding)
 04a40000: 49 2b 0c 24 0a 84 4a 89 1d 00 99 00 00 00 00 00
 04a40010: 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff
 04a40020: 41 69 00 00 49 69 0c 67 0a a4 4a b6 50 7c 13 3d
 04a40030: 11 6d 51 a6 57 87 1a 17 18 3f 58 9e d8 94 ce 81
 04a40040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 04a40060: 1b 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 04a40070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400f0: 00 00 ff ff ff ff 00 00 00 00 00 00 a4 20 04 02

Code:

 Second Wii balance board (without decoding)
 04a40000: 13 b2 13 ed 0b f5 48 47 0f 00 96 00 00 00 00 00
 04a40010: 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff
 04a40020: 01 69 00 00 13 66 13 f2 0b f6 48 91 1a 5f 1a a3
 04a40030: 12 dd 4f 48 21 5a 21 62 19 ce 56 0f b9 34 f5 28
 04a40040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 04a40060: 11 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 04a40070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a40090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 04a400f0: 00 00 ff ff ff ff 00 00 00 00 00 00 a4 20 04 02

Code:

 Third Wii balance board (without decoding - missing first 32 bytes)
 4A40020: 00 69 00 00 20 36 19 67 10 2B 05 A8 27 0C 20 38 
 4A40030: 17 3A 0C 99 2D F7 27 0B 1E 56 13 93 E4 3A DE A2 
 4A40040: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A40050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 4A40060: 18 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 4A40070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A40080: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A40090: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400C0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400D0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
 4A400F0: FF FF 00 00 FF FF 00 00 00 00 00 00 A4 20 04 02

WiiFit balance board box states that its max is 136kg, so I simply deemed A1/B1/C1/D1 to be the midpoint (68kg) and tried interpolation:

P0a is the raw sampling of the (A) sensor on the top right and P1a is the interpolated value.

if P0a < A1
  P1a = 68 * (P0a - A0) / (A1 - A0)
if P0a> = A1
  P1a = 68 * (P0a - A1) / (A2 - A1) + 68

When I used these four A, B, C, D sensors to take the average value, it just matched my weight.

But the number of tested samples was so small that you need more verification. This PC based on Bluetooth will make history with a total weight. Media:Example.ogg

Personal tools
Online Casino - best online casino reviews.
Facebook Developers - facebook applications, facebook developers, facebook development, social network application development and viral widget social media strategy