Wii Balance Board weigh station
This service supports an original Nintendo RVL-WBC-01 as an automatic rover
weigh station. The server installer builds the native bridge, grants only that
bridge CAP_NET_ADMIN, and installs a udev rule limited to the calibrated
Balance Board input device.
Commissioning on the real server
- Run
sudo ./install_server.shfrom theserverdirectory. - Set
balanceBoard.enabled: trueinserver/config.yamland restartmultirover.service. - Open the Activities tab. While it says Pairing setup, press the red Sync button under the board's battery cover.
- Wait for the card to change to Sleeping or Ready. BlueZ retains the
bond and the service also stores the selected board address in
server/data/balance-board.json. - For ordinary use, press only the front power button. The board should connect to the server without another Sync operation.
The bridge intentionally uses short Bluetooth Classic discovery windows only while no board is commissioned. It stops scanning after a successful bond.
Physical station
Recess the board into a platform or place independent approach and departure ramps beside it. A ramp that rests partly on the board and partly on the floor will transfer some rover load to the floor and make the reading incorrect. At the stable capture position, every wheel must be supported by the board itself.
Verification
On the server, useful checks are:
getcap src/services/balanceBoardService/native/balance_board_worker
modinfo hid-wiimote
journalctl -u multirover.service -f
The capability check should report cap_net_admin=ep. When the board connects,
an input device named Nintendo Wii Remote Balance Board should appear under
/dev/input and the Activities card should begin receiving corner loads.
Test at least the following before treating the station as unattended:
- Ten front-button wake, measurement, drive-off, and idle-disconnect cycles.
- A server restart while the board is asleep.
- A server restart while the board is connected.
- A
bluetooth.servicerestart followed by another front-button wake. - Battery removal and replacement without removing the stored BlueZ bond.
Replacing the server Bluetooth adapter, erasing /var/lib/bluetooth, or using
Forget board invalidates the board's remembered host and requires the red
Sync commissioning step again.
Development simulation
The native worker has a cycle simulator that never opens Bluetooth or input devices:
BALANCE_BOARD_SIMULATE=cycle ./native/balance_board_worker
For a full local server/UI exercise, use a development config containing both
balanceBoard.enabled: true and balanceBoard.simulate: true. The public
example omits simulate because it is not a production hardware setting.