LibrePods: AirPods liberados
(github.com/librepods-org)- LibrePods é um projeto que implementa o protocolo proprietário entre AirPods e dispositivos Apple, permitindo usar em plataformas não Apple, como Linux e Android, recursos dos AirPods exclusivos de dispositivos Apple
- Os recursos compatíveis variam por plataforma; mudança de modo de escuta, detecção de uso, status da bateria, reconhecimento de conversa e conexão automática foram implementados no Linux e Android e funcionam bem
- Alguns recursos exigem VendorID spoofing ou ainda estão em fase de planejamento; Head Gestures é compatível apenas com Android e não será implementado no Linux
- Find My, áudio espacial, monitoramento de frequência cardíaca e áudio bidirecional de alta qualidade ainda estão incompletos ou em investigação; no Android, alguns recursos podem exigir root
- O app Android e partes da reescrita para Linux incluem código gerado por IA; o projeto é distribuído sob GPLv3 ou posterior, mas os direitos de uso do nome, logo e branding LibrePods são restritos separadamente
O que o LibrePods faz
- LibrePods implementa o protocolo proprietário usado para trocar dados entre AirPods e dispositivos Apple
- Com essa implementação, também é possível usar em plataformas não Apple recursos dos AirPods como:
- Alterar modos de controle de ruído
- Detecção rápida de uso
- Status preciso da bateria
- Head Gestures
- Conversational Awareness
- Outros recursos de configuração dos AirPods
- A documentação de instalação é separada por plataforma
Suporte a recursos por plataforma
-
Recursos implementados e funcionando bem tanto no Linux quanto no Android
- Alteração do modo de escuta
- Detecção de uso
- Status da bateria
- Alteração do nome dos AirPods
- No Android, pode ser necessário parear novamente após mudar o nome
- Conversational Awareness
- Conexão automática dos AirPods
-
Recursos compatíveis apenas com Android
- Head Gestures
- Outras configurações de acessibilidade
- Press speed
- Press and Hold duration
- Noise Cancellation with single AirPod
- Volume control on swipe
- Volume swipe speed
- Outras configurações gerais
- Alternar modos de escuta ou chamar o assistente digital com Press and Hold
- Configurações de controle de chamadas
- Personalized volume
- Microphone side
- Pausar mídia ao adormecer
- Ativar
Off listening mode
- Recursos que exigem VendorID spoofing
- Loud Sound Reduction
- Hearing Aid
- Personalização do Transparency Mode
- Multi-device connectivity
- Os critérios de indicação de status são os seguintes
- ✅: implementado e funcionando bem
- ⚪: exige VendorID spoofing; o risco fica por conta do usuário
- 🔴: ainda não implementado, planejado
- ⛔: não será implementado
- ❓: desconhecido
VendorID spoofing e recursos adicionais
- VendorID spoofing é uma forma de acessar vários recursos especiais alterando o VendorID do DID Profile para o valor da Apple
- No Linux, pode ser usado modificando o DeviceID em
/etc/bluetooth/main.conf- Linha de configuração:
DeviceID = bluetooth:004C:0000:0000
- Linha de configuração:
- No Android, se o Xposed estiver disponível e o módulo LibrePods estiver ativado, é possível habilitar
act as Apple devicenas configurações do app - Multi-device Connectivity permite conectar até 2 dispositivos aos AirPods ao mesmo tempo, com uso de áudio e controles
- Quando o Android assume os AirPods, os dispositivos Apple exibem uma notificação
"Move to iPhone", como se fosse um dispositivo Apple - Quando outro dispositivo assume, um pop-up também é exibido no Android
- Quando o Android assume os AirPods, os dispositivos Apple exibem uma notificação
- Configurações relacionadas a acessibilidade e aparelho auditivo também podem ser configuradas
- Amplification, balance, tone, conversation boost e ambient noise reduction do Transparency Mode
- Loud Sound Reduction
- Personalização de Hearing Aid e configuração de resultados de audiogram
- O app não oferece função de teste auditivo, alegando que ela exige maior precisão
Recursos ainda incompletos e limitações de escopo
- Recursos relacionados ao Find My estão planejados, mas exigem engenharia reversa adicional e podem exigir root no Android
- Adicionar AirPods à rede Find My
- Reproduzir som no estojo de recarga
- Notificações quando forem deixados para trás
- Alternar o som de carregamento do estojo
- Spatial Audio atualmente não fornece ao Android informações de head tracking para que o sistema operacional realize HRTF
- Ainda não foi totalmente explorado e pode exigir root
- O recurso de espacializar som estéreo está fora do escopo do projeto e não será oferecido
- Muitos OEMs têm suas próprias implementações
- Heart Rate Monitoring está em desenvolvimento para modelos a partir do AirPods Pro 3
- Mesmo que seja implementado, é muito provável que exija root no Android
- High quality two-way audio está relacionado a um recurso em que, no iOS/iPadOS, os AirPods continuam usando A2DP enquanto enviam o fluxo de áudio do microfone por AACP
- No Android, provavelmente exigirá root por precisar de uma integração mais profunda com áudio
Protocolo, engenharia reversa e uso de IA
- Informações sobre o protocolo podem ser consultadas no plugin dissector de Wireshark de Nojus, pabloaul/apple-wireshark
- A maior parte da implementação do LibrePods não usou esse dissector; o autor do projeto fez engenharia reversa do protocolo por conta própria antes da criação do dissector
- No entanto, o autor afirma que esse trabalho de engenharia reversa foi necessário para recursos futuros como áudio bidirecional de alta qualidade e áudio espacial
- Partes totalmente geradas por IA no app Android
- Toda a lógica e UI de Head Gestures
- Ambas as versões de offset setup usando r2 e o módulo Xposed
- Troubleshooter e LogCollector
- As demais partes principais do app Android foram escritas manualmente
- background service
- Classes de AACP e ATT Bluetooth manager
- Toda a UI e pequenos componentes
- Na reescrita para Linux,
aacp.rseatt.rsforam traduzidos por IA de Kotlin para Rust- Partes de
media_controller.rs, principalmente a integração com Pulse, também foram geradas por IA
- Partes de
- Alguns componentes de UI foram retirados do app demo de Kyant0, sob Apache License 2.0
Apps alternativos, licença e aviso de marcas
- São apresentados apps alternativos que podem ser usados em outras plataformas ou condições
- CAPod: app companion de AirPods para Android, recomendado para quem usa Android 16 QPR3 ou inferior e não tem root
- MagicPods for Steam Deck: website
- MagicPods: alternativa para quem procura LibrePods para Windows
- LibrePods é distribuído como software livre sob os termos da GPLv3 ou posterior
- A GPL não concede direitos de uso do nome, logo ou branding LibrePods
- O nome e o logo LibrePods não podem ser usados sem autorização de forma que sugira afiliação, endosso ou associação com o projeto oficial
- A fonte SF Pro usada no app Android é propriedade da Apple Inc. e será substituída por uma alternativa aberta em versões futuras
- AirPods, AirPods Pro, AirPods Max e o logo AirPods são marcas comerciais da Apple Inc.; o projeto LibrePods não é afiliado nem endossado pela Apple Inc.
librepods.orgnão é o site oficial do projeto LibrePods, e há um alerta de que ele afirma incorretamente ser o site oficial por meio de uma reivindicação de copyright no rodapé e do uso do logo LibrePods
1 comentários
Comentários no Hacker News
Só para esclarecer algo que pode gerar confusão: os AirPods já funcionam como fones Bluetooth comuns em outros dispositivos
Este projeto implementa alguns recursos e interfaces adicionais integrados aos produtos da Apple
Está escrito: “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”, e em seguida há também uma tabela de recursos
Existem produtos com som melhor por preços menores, mas a qualidade de áudio é quase a menor parte dessa história
O mesmo valia para recursos essenciais além de conectá-los como dispositivo comum de saída/entrada de áudio Bluetooth
Este projeto é excelente. Tomara que um dia o AirDrop também seja libertado
https://github.com/seemoo-lab/opendrop parecia promissor, mas parece ter parado; espero que um dia seja possível
https://www.android.com/quick-share/
Se eu não tivesse certeza de que a Apple vai tentar bloquear ao máximo todos os caminhos que permitam isso funcionar no futuro, talvez isso tivesse me dado um motivo para comprar AirPods
Isto está mais para alguém ter implementado uma interface para recursos extras que já são integrados aos sistemas operacionais da Apple
Para fazer fixação de versão, é preciso garantir que eles nunca sejam conectados a um produto Apple
Mesmo assim, se você ainda não é usuário de computadores ou celulares Apple, eu recomendaria o Sony WF-1000XM6. Dizem que a experiência de uso é pior e um pouco bugada, mas é bem provável que o som seja melhor
Ainda assim, talvez seja melhor recompensar fabricantes que não exigem esse tipo de contorno só para eu usar o hardware que comprei
Discussão anterior: https://news.ycombinator.com/item?id=45941596
Respeito o trabalho e os hacks envolvidos aqui
Mas não sei por que eu deveria apoiar uma empresa tão hostil comprando AirPods. Não me surpreenderia se saísse um patch para impedir isso
Mesmo que dê para contornar e hackear, a cultura de ver o usuário como alguém a ser controlado e cuidado me incomoda
O que não funciona em plataformas que não são da Apple são coisas como configurações, alterar ações de apertar, carregar atualizações de firmware etc.
Não há como fazer isso só com Bluetooth padrão, então é necessário um app dedicado. A Apple simplesmente não fez um app dedicado para outras plataformas, e não há motivo para ela se importar se alguém gastar recursos para criar um. De todo modo, os AirPods foram vendidos e outra pessoa pagou o custo de criar o app, então a Apple saiu ganhando
Não se pode adicionar recursos sobre uma conexão Bluetooth comum e optar por oferecê-los apenas em plataformas que se consegue controlar totalmente e garantir qualidade?
Só oferecer recursos de forma exclusiva já é realmente hostil? Uma empresa não pode oferecer vantagens quando vários de seus produtos são usados juntos?
Ou a ideia é que isso é hostil porque se presume que a Apple vai aplicar um patch contra isso?
Usei vários pares de AirPods ao longo dos anos, e só agora fiquei sabendo de alguns desses recursos
Cheguei até a pensar que deveria haver uma terceira coluna indicando se há suporte da Apple. Claro, é brincadeira
Para alguém que não tem AirPods no momento e não acompanha muito o lado da Apple, seria útil explicar quais recursos se perdem ao parear AirPods com dispositivos que não são da Apple
Fiquei animado achando que isso permitiria usar AirPods no Linux como alto-falante e headset ao mesmo tempo
Testei pessoalmente e parece funcionar bem. Espero que não seja bloqueado por patentes
Mas é preciso mudar o perfil Bluetooth para HFP (Hands-Free Profile) ou HSP (Headset Profile)
Também vale observar que isso é o padrão para obter qualidade melhor. Isso se deve à especificação Bluetooth, não ao Linux
O principal recurso útil que procuro é usar multiponto ilimitado também em outros dispositivos
As duas conexões que a maioria dos outros dispositivos oferece são muito ruins. Às vezes seria bom poder conectar rapidamente ao telefone VoIP de mesa da empresa