LibrePods: AirPods liberados
(github.com/librepods-org)- LibrePods es un proyecto que implementa el protocolo propietario entre los AirPods y los dispositivos Apple, para que funciones de los AirPods exclusivas de equipos Apple puedan usarse en plataformas no Apple como Linux y Android
- Las funciones compatibles varían según la plataforma, y en Linux y Android ya están implementadas y funcionan bien el cambio de modo de escucha, la detección de uso, el estado de batería, la detección de conversación y la conexión automática
- Algunas funciones requieren VendorID spoofing o todavía están en etapa de planificación; Head Gestures solo es compatible con Android y no se implementará en Linux
- Find My, el audio espacial, el monitoreo de frecuencia cardiaca y el audio bidireccional de alta calidad aún están incompletos o en exploración, y en Android algunas funciones podrían requerir root
- La app de Android y parte de la reescritura para Linux incluyen código generado por IA; el proyecto se distribuye bajo GPLv3 o posterior, pero los derechos de uso del nombre, logotipo y marca LibrePods están restringidos por separado
Qué hace LibrePods
- LibrePods implementa el protocolo propietario mediante el cual los AirPods y los dispositivos Apple intercambian datos
- Esta implementación permite usar en plataformas no Apple funciones de los AirPods como las siguientes
- cambiar los modos de control de ruido
- detección rápida de colocación
- estado preciso de batería
- Head Gestures
- Conversational Awareness
- otras funciones de configuración de los AirPods
- La documentación de instalación está separada por plataforma
Compatibilidad de funciones por plataforma
-
Funciones implementadas y que funcionan bien tanto en Linux como en Android
- cambio de modo de escucha
- detección de uso
- estado de batería
- cambio de nombre de los AirPods
- en Android, podría ser necesario volver a emparejarlos después de cambiar el nombre
- Conversational Awareness
- conexión automática de los AirPods
-
Funciones compatibles solo en Android
- Head Gestures
- otras opciones de accesibilidad
- Press speed
- Press and Hold duration
- Noise Cancellation with single AirPod
- Volume control on swipe
- Volume swipe speed
- otras configuraciones generales
- recorrer los modos de escucha con Press and Hold o invocar el asistente digital
- ajustes de control de llamadas
- Personalized volume
- Microphone side
- pausar medios al quedarse dormido
- activar
Off listening mode
- funciones que requieren VendorID spoofing
- Loud Sound Reduction
- Hearing Aid
- personalización de Transparency Mode
- conectividad multidispositivo
- La indicación de estado significa lo siguiente
- ✅: implementado y funciona bien
- ⚪: requiere VendorID spoofing; el usuario asume el riesgo
- 🔴: todavía no implementado, pero planeado
- ⛔: no se implementará
- ❓: se desconoce
VendorID spoofing y funciones adicionales
- VendorID spoofing es una técnica que cambia el VendorID del perfil DID por el valor de Apple para acceder a varias funciones especiales
- En Linux puede usarse modificando el DeviceID en
/etc/bluetooth/main.conf- línea de configuración:
DeviceID = bluetooth:004C:0000:0000
- línea de configuración:
- En Android, si se puede usar Xposed y el módulo de LibrePods está activado, se puede encender
act as Apple deviceen la configuración de la app - Multi-device Connectivity permite conectar hasta 2 dispositivos a los AirPods al mismo tiempo para usar tanto audio como controles
- si Android toma los AirPods, en el dispositivo Apple aparece la notificación
"Move to iPhone"como si fuera un dispositivo Apple - si otro dispositivo los toma, también aparece un popup en Android
- si Android toma los AirPods, en el dispositivo Apple aparece la notificación
- También se pueden configurar opciones relacionadas con accesibilidad y audífonos
- amplification, balance, tone, conversation boost y ambient noise reduction de Transparency Mode
- Loud Sound Reduction
- personalización de Hearing Aid y configuración de resultados de audiograma
- la app no ofrece una función de prueba auditiva porque considera que se necesita mayor precisión
Funciones aún incompletas y límites de alcance
- Las funciones relacionadas con Find My están planeadas, pero requieren ingeniería inversa adicional y en Android podrían necesitar root
- agregar AirPods a la red Find My
- reproducir sonido desde el estuche de carga
- alertas al dejarlos atrás
- alternar el sonido de carga del estuche
- Spatial Audio actualmente no entrega a Android la información de head tracking para que el sistema operativo haga HRTF
- no se ha explorado por completo y podría requerir root
- la función de espacializar sonido estéreo queda fuera del alcance del proyecto y no se ofrecerá
- muchos OEM ya tienen su propia implementación
- Heart Rate Monitoring está en desarrollo para modelos posteriores a AirPods Pro 3
- incluso si se implementa, es muy probable que en Android requiera root
- High quality two-way audio está relacionado con la capacidad en iOS/iPadOS de que los AirPods sigan usando A2DP mientras envían el flujo de audio del micrófono por AACP
- en Android requeriría una integración más profunda con el audio, por lo que es muy probable que necesite root
Protocolo, ingeniería inversa y uso de IA
- Para información del protocolo se puede consultar el plugin dissector de Wireshark de Nojus: pabloaul/apple-wireshark
- En la mayor parte de la implementación de LibrePods no se usó ese dissector; el autor del proyecto hizo ingeniería inversa del protocolo directamente antes de crear el dissector
- Sin embargo, señala que ese trabajo de ingeniería inversa sí fue necesario para futuras funciones como el audio bidireccional de alta calidad y el audio espacial
- Partes de la app de Android completamente generadas por IA
- toda la lógica y la interfaz de Head Gestures
- ambas versiones de offset setup usando el módulo r2 y Xposed
- Troubleshooter y LogCollector
- El resto de las partes principales de la app de Android fueron escritas manualmente
- background service
- clases del administrador Bluetooth de AACP y ATT
- toda la interfaz y pequeños componentes
- En la reescritura para Linux,
aacp.rsyatt.rsfueron traducidos por IA de Kotlin a Rust- parte de
media_controller.rs, principalmente la integración con Pulse, también fue generada por IA
- parte de
- Algunos componentes de interfaz fueron tomados de Kyant0's demo app con licencia Apache License 2.0
Apps alternativas, licencia y aviso de marcas
- Se presentan apps alternativas que pueden usarse en otras plataformas o condiciones
- CAPod: app complementaria para AirPods en Android; se recomienda para Android 16 QPR3 o inferior y sin root
- MagicPods for Steam Deck: website
- MagicPods: alternativa si buscas LibrePods para Windows
- LibrePods se distribuye como software libre bajo los términos de GPLv3 o posterior
- La GPL no otorga derechos de uso sobre el nombre, logotipo ni la marca LibrePods
- El nombre y el logotipo LibrePods no pueden usarse sin autorización de forma que implique afiliación, respaldo o relación con el proyecto oficial
- La fuente SF Pro usada en la app de Android es un activo de Apple Inc. y está previsto reemplazarla por una alternativa abierta en versiones futuras
- AirPods, AirPods Pro, AirPods Max y el logotipo de AirPods son marcas registradas de Apple Inc., y el proyecto LibrePods no está afiliado con Apple Inc. ni cuenta con su respaldo
- Se advierte que
librepods.orgno es el sitio web oficial del proyecto LibrePods y que afirma incorrectamente serlo mediante un aviso de copyright en el pie de página y el uso del logotipo de LibrePods
1 comentarios
Opiniones en Hacker News
Para evitar posibles confusiones: los AirPods ya funcionan como audífonos Bluetooth normales con otros dispositivos.
Este proyecto implementa algunas funciones e interfaces adicionales integradas en los productos de Apple.
Dice: “LibrePods allows you to use AirPods features that are exclusive to Apple devices. It implements the proprietary protocol used to exchange data between AirPods and Apple devices”, y después hay una tabla de funciones.
Hay productos con mejor sonido por menos dinero, pero la calidad de audio es casi la parte más pequeña de la historia de este producto.
También lo hacían para funciones esenciales más allá de conectarse como un dispositivo Bluetooth común de salida/entrada de audio.
Este proyecto es excelente. Ojalá algún día también liberen AirDrop.
https://github.com/seemoo-lab/opendrop parecía prometedor, pero parece estar detenido; espero que algún día sea posible.
https://www.android.com/quick-share/
Si no estuviera seguro de que Apple intentará bloquear al máximo todos los caminos por los que esto pueda funcionar en el futuro, esto quizá me habría motivado a comprar AirPods.
Esto se parece más a que alguien implementó una interfaz para funciones adicionales que ya están integradas en los sistemas operativos de Apple.
Para fijar la versión, habría que asegurarse de que nunca se conecten a un producto de Apple.
Aun así, si ya no eres usuario de computadoras o teléfonos de Apple, recomendaría los Sony WF-1000XM6. Dicen que la experiencia de usuario es peor y algo bugueada, pero es muy probable que suenen mejor.
Aunque quizá sea mejor recompensar a fabricantes que no exijan estos rodeos para usar el hardware que compré.
Discusión anterior: https://news.ycombinator.com/item?id=45941596
Respeto el trabajo y el hacking que hay detrás de esto.
Pero no entiendo por qué habría que apoyar a una empresa tan hostil comprando AirPods. No me sorprendería que saliera un parche para bloquearlo.
Aunque se pueda rodear con hacks, me molesta esa cultura de ver a los usuarios como sujetos que hay que controlar y cuidar.
Lo que no funciona en plataformas que no son de Apple son cosas como la configuración, cambiar acciones de presión o cargar actualizaciones de firmware.
No hay forma de hacer eso solo con Bluetooth estándar, así que se necesita una app dedicada. Apple simplemente no hizo una app dedicada para otras plataformas, y no tiene motivo para preocuparse si alguien invierte recursos en crear una. Al fin y al cabo, los AirPods ya se vendieron y otro pagó el costo de hacer la app, así que Apple gana.
¿No pueden agregar funciones encima de una conexión Bluetooth común, pero decidir ofrecerlas solo en plataformas que pueden controlar y garantizar por completo?
¿Ofrecer funciones de forma exclusiva ya es realmente hostil? ¿Una empresa no puede ofrecer ventajas cuando se usan varios de sus productos juntos?
¿O se dice que es hostil porque se asume que Apple va a parchear esto?
He usado varios pares de AirPods durante años, y algunas funciones las acabo de conocer ahora.
Hasta pensé que debería haber una tercera columna que indicara si Apple las soporta. Es broma, claro.
Para alguien que no tiene AirPods ahora y no sigue mucho lo de Apple, sería útil explicar qué funciones se pierden al emparejar AirPods con dispositivos que no son de Apple.
Me emocioné pensando que esto permitiría usar AirPods en Linux como bocinas y headset al mismo tiempo.
Lo probé y parece funcionar bien. Ojalá no lo bloqueen por temas de patentes.
Solo hay que cambiar el perfil Bluetooth a HFP (Hands-Free Profile) o HSP (Headset Profile).
También hay que tener en cuenta que esto es el valor predeterminado para obtener mejor calidad. Se debe a la especificación de Bluetooth, no a Linux.
La función útil clave que busco es poder usar multipunto ilimitado también en otros dispositivos.
Las 2 conexiones que ofrece la mayoría de los demás dispositivos son muy deficientes. A veces me gustaría poder conectarme rápido al teléfono de escritorio VoIP de la empresa.