
AirPods liberados del ecosistema de Apple.
> [!WARNING] > librepods.org no es un sitio web oficial del proyecto LibrePods. Afirma de forma inexacta ser el sitio web oficial del proyecto al reclamar derechos de autor y usar el logotipo de LibrePods en el pie de página. Y al mismo tiempo, indican que el proyecto no está afiliado al proyecto LibrePods ni a sus desarrolladores. > > Por favor, reporta cualquier otro sitio web de este tipo a [[email protected]](mailto:[email protected]) <picture> <source media="(prefers-color-scheme: dark)" srcset="./imgs/banner-dark.png" /> <source media="(prefers-color-scheme: light)" srcset="./imgs/banner.png" /> <img alt="LibrePods" src="https://assets.kitploit.com/production/public/readmes/7308/dd79739201ddda9382b9f24871abdd8b39e75645fe7c341831c76ed98b61f805.png" /> </picture> <div align="center" style="margin: 20px 0px;"> <a href="https://github.com/kavishdevar/librepods/releases/latest"> <img src="https://img.shields.io/github/downloads/kavishdevar/librepods/total?label=GitHub%20Downloads" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/issues"> <img src="https://img.shields.io/github/issues/kavishdevar/librepods" /> </a> <a href="https://discord.gg/HhG4ycVum4"> <img src="https://img.shields.io/discord/1441416992027574375?logoColor=white&color=5865F2&label=Discord" /> </a> </div> # ¿Qué es LibrePods? LibrePods te permite usar funciones de los AirPods que son exclusivas de los dispositivos Apple. Implementa el protocolo propietario utilizado para intercambiar datos entre los AirPods y los dispositivos Apple, habilitando funciones como cambiar los modos de control de ruido, la detección rápida del oído, un estado de batería preciso, gestos con la cabeza, la conciencia conversacional y más en plataformas que no son de Apple. # Disponibilidad de funciones | Característica | Linux | Android | | ----------------------------------------------------------- | ----- | ------- | | Cambiar el modo de escucha | ✅ | ✅ | | Detección de oído | ✅ | ✅ | | Estado de la batería | ✅ | ✅ | | Renombrar los AirPods <details><summary>Nota para Android</summary>En Android, debes volver a emparejar tus AirPods después de renombrarlos, ya que es posible que Android no use el nombre más reciente.</details> | ✅ | ✅ | | Reducción de sonidos fuertes | 🔴 | ⚪ | | Gestos con la cabeza | ⛔ | ✅ | | Conciencia conversacional | ✅ | ✅ | | Conectar automáticamente a los AirPods | ✅ | ✅ | | Audífono | 🔴 | ⚪ | | Personalización del modo Transparencia | 🔴 | ⚪ | | Conectividad multidispositivo (Bluetooth Multipoint; solo 2 dispositivos) | ⚪ | ⚪ | | <details><summary>Otras configuraciones de accesibilidad (clic para expandir)</summary><ul><li>Velocidad de pulsación</li><li>Duración de pulsación y mantenimiento</li><li>Cancelación de ruido con un solo AirPod</li><li>Control de volumen al deslizar</li><li>Velocidad de deslizamiento del volumen</li></ul></details> | 🔴 | ✅ | | <details><summary>Otras configuraciones generales</summary><ul><li>Pulsar y mantener para alternar entre modos de escucha/invocar el asistente digital (invocar el asistente digital requiere un firmware reciente)</li><li>Configurar los controles de llamada</li><li>Volumen personalizado</li><li>Reducción de sonidos fuertes (requiere <a href="#vendorid-spoofing">suplantación de VendorID</a>)</li><li>Lado del micrófono</li><li>Pausar los medios al quedarse dormido (requiere un firmware reciente)</li><li>Habilitar <code>Off listening mode</code> para cambiar a <code>Off</code></li></ul></details> | 🔴 | ✅ | | [Audio espacial con seguimiento de cabeza](#spatial-audio) | ❓ | ❓ | | [Monitorización de la frecuencia cardíaca](#heart-rate-monitoring) | 🔴 | 🟡 | | [Find My](#find-my) | ❓ | ❓ | | [Audio bidireccional de alta calidad](#high-quality-two-way-audio) | 🟡 | 🟡 | | Símbolo | Significado | | ------ | ------------------------------------------------------------------- | | ✅ | Implementado y funciona bien | | ⚪ | Requiere [suplantación de VendorID](#vendorid-spoofing); úsalo bajo tu propio riesgo | | 🟡 | Experimental/En desarrollo | | 🔴 | Aún no implementado; planificado | | ⛔ | No se implementará | | ❓ | Desconocido | ## Find My Las siguientes características relacionadas con Find My están planificadas, pero requieren más ingeniería inversa y podrían necesitar root en Android: - Añadir tus AirPods a la red Find My - Reproducir sonido a través del estuche de carga para encontrarlo - Notificar cuando se dejen atrás - Alternar los sonidos de carga del estuche ## Audio espacial Actualmente, la aplicación no proporciona información de seguimiento de cabeza a Android para que el sistema operativo realice HRTF. Esto no se ha explorado por completo y podría necesitar root. La espacialización del sonido estéreo está fuera del alcance de este proyecto y nunca estará disponible. Muchos fabricantes tienen su propia implementación para esto. ## Monitorización de la frecuencia cardíaca ### Android Disponible en la rama `android/rewrite`. [compilaciones](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Aún no disponible (de todos modos, no parece algo que fuera útil en un ordenador. Si tienes alguna sugerencia, crea una discusión). ## Audio bidireccional de alta calidad En iOS/iPadOS, puedes seguir usando A2DP mientras los AirPods envían el flujo de audio de alta resolución (¿AAC-ELD mono 64kHz?) desde su micrófono a través de AACP. ### Android Graba audio dentro de la app usando el micrófono de los AirPods sin cambiar al perfil Headset/Handsfree, que degrada la calidad de reproducción. Pero hacer esto disponible para otras apps/telefonía podría requerir root, si es que es posible. El grabador está en desarrollo; disponible en la rama `android/rewrite`. [builds](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Consulta el [PR #655](https://github.com/librepods-org/librepods/pull/655). # Instalación - [**Android**](https://github.com/librepods-org/librepods/blob/main/android/README.md) - [**Linux**](https://github.com/librepods-org/librepods/blob/main/linux/README.md) # Suplantación de VendorID Resulta que si cambias el VendorID en el perfil DID al de Apple, ¡obtienes acceso a varias funciones especiales! Puedes hacer esto en Linux editando el DeviceID en `/etc/bluetooth/main.conf`. Añade esta línea al archivo de configuración `DeviceID = bluetooth:004C:0000:0000`. En Android puedes activar la opción `act as Apple device` en los ajustes de la app (se muestra solo cuando Xposed está disponible y el módulo LibrePods está habilitado). ## Conectividad multidispositivo Hasta dos dispositivos pueden estar conectados simultáneamente a los AirPods, tanto para audio como para control. Cambio de conexión fluido. La misma notificación aparece en el dispositivo Apple cuando Android toma el control de los AirPods como si fuera un dispositivo Apple ("Move to iPhone"). Android también muestra una ventana emergente cuando el otro dispositivo toma el control. ## Ajustes de accesibilidad y audífono Se pueden configurar ajustes de accesibilidad como la personalización del modo transparencia (amplificación, balance, tono, refuerzo de conversación y reducción de ruido ambiental), y la reducción de sonidos fuertes. Todas las personalizaciones de audífono se pueden hacer desde Android (Linux pronto), incluida la configuración del resultado del audiograma. La app no ofrece una forma de realizar una prueba de audición porque requiere mucha más precisión. Es mucho mejor usar un resultado de audiograma ya disponible. # Protocolo e ingeniería inversa Consulta el plugin disector de Wireshark de Nojus ([@pabloaul](https://github.com/pabloaul)) para más información sobre los protocolos utilizados: [pabloaul/apple-wireshark](https://github.com/pabloaul/apple-wireshark) El disector no se ha usado en LibrePods para la mayor parte de la implementación; yo mismo hice ingeniería inversa del protocolo antes de que se creara este disector. Pero muchas funciones (futuras), incluido el audio bidireccional de alta calidad y el audio espacial, no habrían sido posibles sin sus esfuerzos de RE. # Uso de IA ## App de Android Estas partes de la app fueron generadas completamente por IA: - Head Gestures: todo, incluida la lógica y la UI - La configuración de offset con r2 + el módulo xposed (ambas versiones) - Troubleshooter y LogCollector Todo lo demás —el servicio en segundo plano, las clases del gestor de Bluetooth (AACP y ATT), toda la UI, incluso los componentes más pequeños— se escribió manualmente. Algunas partes de los componentes de la UI se tomaron de la [app de demostración de Kyant0](https://github.com/Kyant0/AndroidLiquidGlass/tree/master/catalog), que está bajo [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ## Linux (reescritura) Los archivos `aacp.rs` y `att.rs` se tradujeron de Kotlin a Rust con IA. Algunas partes del archivo `media_controller.rs`, principalmente la integración con pulse, también fueron generadas por IA. # Colaboradores ¡Muchísimas gracias a todos los que apoyan el proyecto! <table> <tr> <td align="center"> <a href="https://github.com/davdroman"> <img src="https://assets.kitploit.com/production/public/readmes/7308/776c36c82a7801798fc6ff1a91611d8272c3f21c41f10a808ae6ab459872104a.jpg" width="48" height="48"alt="davdroman"/><br /> @davdroman </a> </td> <td align="center"> <a href="https://github.com/tedsalmon"> <img src="https://assets.kitploit.com/production/public/readmes/7308/29cbb61b4c1f9a9992f644c2592fb4c3a626d580397fb5ff01133039fa9a7441.jpg" width="48" height="48"alt="tedsalmon"/><br /> @tedsalmon </a> </td> <td align="center"> <a href="https://github.com/wiless"> <img src="https://assets.kitploit.com/production/public/readmes/7308/f10d3773c4c1f7ac24dafc11366fd93ae98e40bf3f2252ed17023f6909c280de.jpg" width="48" height="48"alt="wiless"/><br /> @wiless </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/SmartMsg"> <img src="https://assets.kitploit.com/production/public/readmes/7308/8d8b4afb772a2d505ffbd6d895c279126a6140bd8c3c0431e0fecb1d8cc78d4a.jpg" width="48" height="48"alt="SmartMsg"/><br /> @SmartMsg </a> </td> <td align="center"> <a href="https://github.com/lunaroyster"> <img src="https://assets.kitploit.com/production/public/readmes/7308/8ab33c6770165d3fbd14e19766731ada3f0d9cb29f2c7782d142b848e92c1cbd.jpg" width="48" height="48"alt="lunaroyster"/><br /> @lunaroyster </a> </td> <td align="center"> <a href="https://github.com/ressiwage"> <img src="https://assets.kitploit.com/production/public/readmes/7308/06edb9c51fd205aea82e9415bada62fb35394b66a7b65709ea99dc771a308a69.jpg" width="48" height="48"alt="ressiwage"/><br /> @ressiwage </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/kkjdroid"> <img src="https://assets.kitploit.com/production/public/readmes/7308/3156f982f536e6bd7c59d465c9b31d02ab86684b688024396caaba99b184f1ba.jpg" width="48" height="48"alt="kkjdroid"/><br /> @kkjdroid </a> </td> <td align="center"> <a href="https://github.com/CitrusJoules"> <img src="https://assets.kitploit.com/production/public/readmes/7308/251a526465bd512cb24e299e6d5f901dc509bf01a3ceb4308b13cdfcf936d1ae.png" width="48" height="48"alt="CitrusJoules"/><br /> @CitrusJoules </a> </td> <td align="center"> <a href="https://github.com/DanielReyesDev"> <img src="https://assets.kitploit.com/production/public/readmes/7308/d184d9fac60f0c7c719d061c7f13da5ae765fcb06a516db3b6368f5a143b1aa3.jpg" width="48" height="48"alt="DanielReyesDev"/><br /> @DanielReyesDev </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/sumitduster"> <img src="https://assets.kitploit.com/production/public/readmes/7308/dc57745f78d8548393402e301691893b01dc0067a134f7ecf20629d14a81c22b.jpg" width="48" height="48"alt="sumitduster"/><br /> @sumitduster </a> </td> <td align="center"> <a href="https://github.com/GrifTheDev"> <img src="https://assets.kitploit.com/production/public/readmes/7308/3d4decbb6b54d36f8354af483fb767741550b61e163054cddff36d196ea77518.png" width="48" height="48"alt="GrifTheDev"/><br /> @GrifTheDev </a> </td> </tr> </table> # Agradecimientos especiales - @tyalie por crear la primera documentación sobre el protocolo. ([tyalie/AAP-Protocol-Definition](https://github.com/tyalie/AAP-Protocol-Defintion)) - @rithvikvibhu y la gente de lagrangepoint por ayudar con la función de audífono ([gist](https://gist.github.com/rithvikvibhu/45e24bbe5ade30125f152383daf07016)) - @devnoname120 por ayudar con el primer parche de root - @timgromeyer por crear la primera versión de la aplicación para Linux - @hackclub por alojar [High Seas](https://highseas.hackclub.com) y [Low Skies](https://low-skies.hackclub.com). - Por supuesto, ¡todos los que han contribuido al proyecto de cualquier forma, ya sea probándolo, compartiendo comentarios o simplemente mostrando interés! # Alternativas para otras plataformas: - CAPod: una aplicación complementaria para AirPods en Android. ([play store](https://play.google.com/store/apps/details?id=eu.darken.capod) | [código fuente](https://github.com/d4rken-org/capod)). Úsala si tienes la versión de Android 16 QPR3 o inferior y no tienes root. - MagicPods para Steam Deck ([sitio web](https://magicpods.app/steamdeck/)) - MagicPods: si buscas "LibrePods para Windows" ([ms store](https://apps.microsoft.com/store/detail/9P6SKKFKSHKM) [instalador](https://magicpods.app/installer/MagicPods.appinstaller) | [sitio web](https://magicpods.app/)) # Historial de estrellas <a href="https://www.star-history.com/?repos=librepods-org%2Flibrepods&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&theme=dark&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> </picture> </a> # Licencia LibrePods - AirPods liberados del ecosistema de Apple Copyright (C) 2025 LibrePods contributors Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU tal como la publica la Free Software Foundation, ya sea la versión 3 de la Licencia, o cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulta la Licencia Pública General GNU para más detalles. Deberías haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no es así, consulta <https://www.gnu.org/licenses/>. # Aviso de marca registrada La GPL no otorga ningún derecho a usar el nombre, el logotipo ni la imagen de marca de LibrePods. El nombre y el logotipo de LibrePods no pueden utilizarse para software, sitios web, dominios, productos, servicios u otros proyectos de una manera que sugiera afiliación, respaldo o asociación con el proyecto oficial de LibrePods sin permiso previo. Si detectas cualquier uso indebido del nombre o el logotipo de LibrePods, informa de ello a [[email protected]](mailto:[email protected]). La fuente SF Pro utilizada en la aplicación para Android es propiedad de Apple Inc. Se eliminará en futuras versiones de la aplicación y se sustituirá pronto por una alternativa de código abierto. AirPods, AirPods Pro, AirPods Max y el logotipo de AirPods son marcas registradas de Apple Inc. El proyecto LibrePods no está afiliado ni respaldado por Apple Inc. de ninguna manera.