
AirPods libertados do ecossistema da Apple.
> [!WARNING] > librepods.org não é um site oficial do projeto LibrePods. Ele afirma incorretamente ser o site oficial do projeto ao reivindicar direitos autorais e usar o logotipo do LibrePods no rodapé. E, ao mesmo tempo, afirmam que o projeto não é afiliado ao projeto LibrePods nem aos seus desenvolvedores. > > Por favor, reporte quaisquer outros sites semelhantes para [[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> # O que é o LibrePods? O LibrePods permite que você use recursos dos AirPods que são exclusivos de dispositivos Apple. Ele implementa o protocolo proprietário usado para trocar dados entre AirPods e dispositivos Apple, habilitando recursos como alterar modos de controle de ruído, detecção rápida de ouvido, status preciso da bateria, gestos de cabeça, percepção de conversação e muito mais em plataformas não Apple. # Disponibilidade de recursos | Recurso | Linux | Android | | ----------------------------------------------------------- | ----- | ------- | | Alterar o modo de escuta | ✅ | ✅ | | Deteção no ouvido | ✅ | ✅ | | Estado da bateria | ✅ | ✅ | | Renomear os AirPods <details><summary>Nota para Android</summary>No Android, é necessário voltar a emparelhar os AirPods após renomeá-los, pois o Android pode não usar o nome mais recente.</details> | ✅ | ✅ | | Redução de sons altos | 🔴 | ⚪ | | Gestos com a cabeça | ⛔ | ✅ | | Perceção conversacional | ✅ | ✅ | | Ligar automaticamente aos AirPods | ✅ | ✅ | | Aparelho auditivo | 🔴 | ⚪ | | Personalização do modo Transparência | 🔴 | ⚪ | | Conectividade multi-dispositivo (Bluetooth Multipoint; apenas 2 dispositivos) | ⚪ | ⚪ | | <details><summary>Outras configurações de acessibilidade (clique para expandir)</summary><ul><li>Velocidade de pressão</li><li>Duração de premir e manter</li><li>Cancelamento de ruído com um único AirPod</li><li>Controlo de volume ao deslizar</li><li>Velocidade do deslizar para volume</li></ul></details> | 🔴 | ✅ | | <details><summary>Outras configurações gerais</summary><ul><li>Premir e manter para alternar entre modos de escuta/invocar assistente digital (invocar o assistente digital requer um firmware recente)</li><li>Configurar controlos de chamadas</li><li>Volume personalizado</li><li>Redução de sons altos (requer <a href="#vendorid-spoofing">falsificação de VendorID</a>)</li><li>Lado do microfone</li><li>Pausar multimédia ao adormecer (requer um firmware recente)</li><li>Ativar <code>Off listening mode</code> para mudar para <code>Off</code></li></ul></details> | 🔴 | ✅ | | [Áudio espacial com seguimento da cabeça](#spatial-audio) | ❓ | ❓ | | [Monitorização da frequência cardíaca](#heart-rate-monitoring) | 🔴 | 🟡 | | [Find My](#find-my) | ❓ | ❓ | | [Áudio bidirecional de alta qualidade](#high-quality-two-way-audio) | 🟡 | 🟡 | | Símbolo | Significado | | ------ | ------------------------------------------------------------------- | | ✅ | Implementado e funciona bem | | ⚪ | Requer [falsificação de VendorID](#vendorid-spoofing); use por sua conta e risco | | 🟡 | Experimental/Em desenvolvimento | | 🔴 | Ainda não implementado; planeado | | ⛔ | Não será implementado | | ❓ | Desconhecido | ## Find My As seguintes funcionalidades relacionadas com o Find My estão planeadas, mas requerem mais engenharia reversa e podem necessitar de root no Android: - Adicionar os seus AirPods à rede Find My - Reproduzir som através do estojo de carregamento para o encontrar - Notificar quando deixados para trás - Alternar os sons de carregamento do estojo ## Áudio espacial Atualmente, a aplicação não fornece informações de seguimento da cabeça ao Android para que o sistema operativo realize HRTF. Isto ainda não foi explorado completamente e pode necessitar de root. A espacialização de som estéreo está fora do âmbito deste projeto e nunca estará disponível. Muitos OEMs têm a sua própria implementação para isto. ## Monitorização da frequência cardíaca ### Android Disponível no ramo `android/rewrite`. [builds](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Ainda não disponível (não parece algo que fosse útil num computador de qualquer forma. Se tiver alguma sugestão, crie uma discussão.) ## Áudio bidirecional de alta qualidade No iOS/iPadOS, você pode continuar usando A2DP enquanto os AirPods enviam o stream de áudio de alta resolução (AAC-ELD mono 64kHz?) do seu microfone via AACP. ### Android Grave áudio dentro do app usando o microfone dos AirPods sem alternar para o perfil Headset/Handsfree, o que degradaria a qualidade da reprodução. Mas tornar isso disponível para outros apps/telefonia pode exigir root, se for possível. O gravador está em desenvolvimento; disponível no branch `android/rewrite`. [builds](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Confira o [PR #655](https://github.com/librepods-org/librepods/pull/655). # Instalação - [**Android**](https://github.com/librepods-org/librepods/blob/main/android/README.md) - [**Linux**](https://github.com/librepods-org/librepods/blob/main/linux/README.md) # Falsificação de VendorID Acontece que, se você alterar o VendorID no DID Profile para o da Apple, ganha acesso a vários recursos especiais! Você pode fazer isso no Linux editando o DeviceID em `/etc/bluetooth/main.conf`. Adicione esta linha ao arquivo de configuração `DeviceID = bluetooth:004C:0000:0000`. No Android, você pode ativar a configuração `act as Apple device` nas configurações do app (exibida apenas quando o Xposed está disponível e o módulo LibrePods está ativado). ## Conectividade multi-dispositivo Até dois dispositivos podem estar conectados simultaneamente aos AirPods, tanto para áudio quanto para controle. Troca de conexão contínua. A mesma notificação aparece no dispositivo Apple quando o Android assume os AirPods como se fosse um dispositivo Apple ("Move to iPhone"). O Android também mostra um popup quando o outro dispositivo assume o controle. ## Configurações de Acessibilidade e Aparelho Auditivo Configurações de acessibilidade como personalização do modo transparência (amplificação, balanço, tom, reforço de conversação e redução de ruído ambiente), e redução de sons altos podem ser configuradas. Todas as personalizações do aparelho auditivo podem ser feitas a partir do Android (Linux em breve), incluindo a definição do resultado do audiograma. O app não oferece uma forma de realizar um teste auditivo porque isso exige muito mais precisão. É muito melhor usar um resultado de audiograma já disponível. # Protocolo e Engenharia Reversa Consulte o plugin dissector do Wireshark de Nojus ([@pabloaul](https://github.com/pabloaul)) para mais informações sobre os protocolos utilizados: [pabloaul/apple-wireshark](https://github.com/pabloaul/apple-wireshark) O dissector não foi usado no LibrePods durante a maior parte da implementação; eu fiz engenharia reversa do protocolo por conta própria antes de este dissector ser criado. Mas muitos recursos (futuros), incluindo áudio bidirecional de alta qualidade e áudio espacial, não teriam sido possíveis sem os esforços de engenharia reversa deles! # Uso de IA ## App Android Estas partes do app foram completamente geradas por IA: - Head Gestures - tudo, incluindo a lógica e a UI - A configuração de offset com r2+o módulo xposed (ambas as versões) - Troubleshooter e LogCollector Todo o resto - o serviço em segundo plano, as classes do gerenciador Bluetooth (AACP e ATT), toda a UI, até os menores componentes - foi escrito manualmente. Algumas partes dos componentes de UI foram emprestadas do [app de demonstração do Kyant0](https://github.com/Kyant0/AndroidLiquidGlass/tree/master/catalog), que é licenciado sob a [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ## Linux (reescrita) Os arquivos `aacp.rs` e `att.rs` foram traduzidos de Kotlin para Rust com IA. Algumas partes do arquivo `media_controller.rs`, principalmente a integração com o pulse, também foram geradas por IA. # Apoiadores Um enorme obrigado a todos que apoiam o projeto! <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> # Agradecimentos Especiais - @tyalie por criar a primeira documentação sobre o protocolo! ([tyalie/AAP-Protocol-Definition](https://github.com/tyalie/AAP-Protocol-Defintion)) - @rithvikvibhu e o pessoal do lagrangepoint por ajudar com o recurso de aparelho auditivo ([gist](https://gist.github.com/rithvikvibhu/45e24bbe5ade30125f152383daf07016)) - @devnoname120 por ajudar com o primeiro patch de root - @timgromeyer por criar a primeira versão do aplicativo para linux - @hackclub por hospedar o [High Seas](https://highseas.hackclub.com) e o [Low Skies](https://low-skies.hackclub.com)! - E, claro, todos que contribuíram com o projeto de alguma forma, incluindo por meio de testes, envio de feedback ou apenas demonstrando interesse! # Alternativas para outras plataformas: - CAPod - Um aplicativo complementar para AirPods no Android. ([play store](https://play.google.com/store/apps/details?id=eu.darken.capod) | [código-fonte](https://github.com/d4rken-org/capod)). Use este se você estiver usando a versão 16 QPR3 do Android ou inferior e não tiver root. - MagicPods para Steam Deck ([site](https://magicpods.app/steamdeck/)) - MagicPods - se você procura o "LibrePods para Windows" ([ms store](https://apps.microsoft.com/store/detail/9P6SKKFKSHKM) [instalador](https://magicpods.app/installer/MagicPods.appinstaller) | [site](https://magicpods.app/)) # Histórico de Estrelas <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> # Licença LibrePods - AirPods libertados do ecossistema da Apple Copyright (C) 2025 LibrePods contributors Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da GNU General Public License, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou qualquer versão posterior. Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; sem sequer a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. Consulte a GNU General Public License para mais detalhes. Você deve ter recebido uma cópia da GNU General Public License junto com este programa. Caso contrário, consulte <https://www.gnu.org/licenses/>. # Aviso de Marca Registrada A GPL não concede quaisquer direitos de uso do nome, logotipo ou identidade visual do LibrePods. O nome e o logotipo do LibrePods não podem ser usados para software, sites, domínios, produtos, serviços ou outros projetos de uma forma que sugira afiliação, endosso ou associação com o projeto oficial LibrePods sem permissão prévia. Se você identificar qualquer uso indevido do nome ou logotipo do LibrePods, denuncie para [[email protected]](mailto:[email protected]). A fonte SF Pro usada no aplicativo Android é propriedade da Apple Inc.. Ela será removida em versões futuras do aplicativo e substituída por uma alternativa aberta em breve. AirPods, AirPods Pro, AirPods Max e o logotipo AirPods são marcas registradas da Apple Inc. O projeto LibrePods não é afiliado nem endossado pela Apple Inc. de nenhuma forma.