Wii Remote
Status: hardware-validated vía el forwarder TCP.
El Wii Remote no se lee por el Bluetooth de la PC. Una pequeña app homebrew corre en la Wii / Wii U, lee hasta cuatro Wiimotes y reenvía su IMU sobre un socket TCP plano. Por lo tanto, el lado de la PC es solo un socket listener sin código de Bluetooth.
Transporte
Sección titulada «Transporte»- El bridge enlaza un TCP listener en
127.0.0.1:9909(configurable). - La consola se conecta como cliente (keep-alive, no-delay).
- Cada frame la consola envía N × 17 bytes (un registro por slot de Wiimote 0-3) como una sola escritura binaria - sin framing HTTP.
- El bridge responde con 5 bytes: 4 flags de rumble por slot + 1 byte de intervalo de frame (ms). Corta la conexión si una lectura no es múltiplo de 17 bytes, lo que provoca una reconexión.
Registro por control (17 bytes, little-endian)
Sección titulada «Registro por control (17 bytes, little-endian)»| Offset | Tamaño | Campo |
|---|---|---|
| 0 | 1 | Slot id (0-3); 0xFF = slot vacío (el registro se envía igual, relleno de ceros) |
| 1 | 2 | Accel core X (i16 LE) |
| 3 | 2 | Accel core Y |
| 5 | 2 | Accel core Z |
| 7 | 2 | data X - gyro MotionPlus o accel de Nunchuk |
| 9 | 2 | data Y |
| 11 | 2 | data Z |
| 13 | 1 | Nunchuk conectado (0/1) |
| 14 | 1 | MotionPlus soportado (0/1) |
| 15 | 1 | Nivel de batería (0-100) |
| 16 | 1 | Flag de botón (1/2 presionado → gesto de reset) |
El triplete data tiene doble propósito: gyro MotionPlus cuando no hay Nunchuk
conectado, si no el acelerómetro del Nunchuk (el Wiimote no puede transmitir ambas
extensiones a la vez de forma limpia).
Escala del IMU
Sección titulada «Escala del IMU»- Acelerómetro core: cero en raw
512, ~200 LSB/g →a = (raw − 512) / 200 × 9.80665m/s². Verifica que‖a‖ ≈ 9.81en reposo. - Gyro MotionPlus: centrado cerca de
8192; resta y aplica ~0.07 dps/LSB → rad/s. El signo y el eje están pendientes de validación en hardware. - Accel de Nunchuk (cuando está conectado): mismo mapeo 512/200.
MotionPlus
Sección titulada «MotionPlus»Un Wii Remote pelado es solo acelerómetro - sin gyro, la fusión recurre a orientación basada solo en gravedad y el yaw deriva sin restricción. El Wiimote Plus o un accesorio MotionPlus expone un gyro de 3 ejes. El companion habilita la extensión, espera a que se estabilice, reenvía sus valores crudos y arbitra contra el Nunchuk (gyro por defecto; accel de Nunchuk si hay un Nunchuk conectado).
Gestos de reset
Sección titulada «Gestos de reset»El flag de botón (byte 16) impulsa el recentrado cuando se presiona 1 o 2.