MousePods es una aplicación de Python para Linux que convierte el movimiento de los AirPods en entrada de ratón o seguimiento de cabeza. El proyecto, creado por Matteo Gaudioso, funciona por Bluetooth y no requiere un dispositivo Apple. Su hallazgo más llamativo explica por qué los sensores de movimiento de los AirPods 3 no aparecían con la configuración Bluetooth predeterminada de Linux.

Cómo convierte el movimiento en entrada de ratón

Captura de la interfaz de MousePods en francés, con una representación de un auricular y sus ejes, un punto azul en el panel del cursor y una gráfica de movimiento.

MousePods puede mover el cursor cuando giras la cabeza o cuando mueves un auricular en la mano. La aplicación muestra la orientación del auricular y representa el movimiento en una gráfica; también envía la entrada al sistema mediante un dispositivo virtual de /dev/uinput. El proyecto describe compatibilidad con Wayland y X11.

Para los AirPods 3, el proyecto atribuye la detección de movimiento a Apple RemoteHID sobre AACP, en el canal RTBuddy 0x800. Según sus pruebas, el estuche no sirve como ratón: los sensores de los auriculares se apagan cuando están dentro de la caja.

Qué cambió en la conexión de los AirPods 3

En las pruebas de MousePods con AirPods 3 A2564/A2565, los descriptores de los sensores aparecieron al elevar la MTU de recepción de L2CAP, el tamaño máximo de los datos recibidos por esa conexión Bluetooth. El proyecto registra 672 bytes como valor predeterminado en Linux y 2582 bytes como el valor con el que aparecieron los descriptores. Describe el segundo como el valor usado por iOS. La documentación técnica de MousePods sitúa esa prueba en Ubuntu 24.04, BlueZ 5.72 y Python 3.12, con la versión de firmware indicada como 6296592.

El cambio permitió que los sensores se anunciaran; no se trataba simplemente de una explicación general sobre paquetes Bluetooth. El proyecto identifica para AirPods 3 la ruta RemoteHID, en lugar del protocolo SensorDataWX que emplean modelos más recientes.

MousePods informa de una tasa máxima de unos 210 Hz en sus pruebas con AirPods 3. Aun así, recomienda aproximadamente 100 Hz como ajuste práctico: con el enlace compartido por audio A2DP y un ratón Bluetooth de baja energía, observó interrupciones al acercarse a 180 Hz.

Para valorar la cifra máxima, ten en cuenta también la tasa práctica que recomienda el proyecto: unos 100 Hz.

Modelos y modos: qué declara probado el proyecto

MousePods enumera AirPods 3 y AirPods Pro 2 como probados en hardware. Para AirPods Pro 2, el proyecto indica una tasa de movimiento de unos 100 Hz con el intervalo predeterminado de 10 ms. AirPods 2, AirPods Pro 1 y AirPods Max figuran como no probados. AirPods 4 no aparece entre los modelos que MousePods declara verificados; compartir un protocolo con los Pro no establece por sí solo que la aplicación se haya probado con ellos. La página del proyecto detalla esos estados.

El estado también depende del modo. El modo ratón, que usa el movimiento de la cabeza o de un auricular en la mano, figura como probado en hardware. El modo puntero, que apunta a la pantalla y usa calibración de las esquinas, está probado solo en simulación; el modo de deslizar un auricular sobre una mesa es experimental.

Para simuladores, MousePods distingue dos rutas. La salida a opentrack se probó sin conexión a un juego. Por separado, el repositorio describe una integración directa con Steam/Proton que un colaborador probó en Bazzite con AirPods Pro 2, en Assetto Corsa y Euro Truck Simulator 2. Son pruebas de rutas distintas, no el mismo resultado para todos los modos.

Requisitos para usar MousePods en Linux

El proyecto requiere Linux con BlueZ, los AirPods emparejados con el ordenador y permiso de escritura en /dev/uinput. Indica que no hace falta acceso de administrador ni un iPhone o Mac. La aplicación requiere Python 3.10 o posterior; la prueba documentada con AirPods 3 utilizó Python 3.12.

La instalación descrita en el repositorio consiste en clonar el código, crear un entorno virtual de Python, instalar las dependencias de requirements.txt y ejecutar airpods_mouse_controller.py --ui. El modo de ratón es la opción con estado de prueba en hardware que declara el proyecto; las demás funciones mantienen sus propios límites de prueba.