LibrePods : des AirPods libérés
(github.com/librepods-org)- LibrePods est un projet qui implémente le protocole propriétaire entre les AirPods et les appareils Apple, afin de rendre disponibles sur des plateformes non Apple comme Linux et Android des fonctionnalités des AirPods normalement réservées aux appareils Apple
- Les fonctionnalités prises en charge varient selon la plateforme ; le changement de mode d’écoute, la détection du port, l’état de la batterie, la détection des conversations et la connexion automatique sont implémentés et fonctionnent bien sur Linux et Android
- Certaines fonctionnalités nécessitent du VendorID spoofing ou sont encore au stade de projet ; Head Gestures n’est pris en charge que sur Android et ne sera pas implémenté sur Linux
- Find My, l’audio spatial, le suivi de la fréquence cardiaque et l’audio bidirectionnel de haute qualité sont encore incomplets ou en cours d’exploration ; sur Android, certaines fonctionnalités pourraient nécessiter un accès root
- L’application Android et une partie de la réécriture Linux incluent du code généré par IA ; le projet est distribué sous GPLv3 ou ultérieure, mais les droits d’utilisation du nom, du logo et de la marque LibrePods sont limités séparément
Ce que fait LibrePods
- LibrePods implémente le protocole propriétaire utilisé pour échanger des données entre les AirPods et les appareils Apple
- Cette implémentation permet d’utiliser, sur des plateformes non Apple, des fonctionnalités des AirPods comme :
- le changement de mode de contrôle du bruit
- la détection rapide du port
- l’état précis de la batterie
- Head Gestures
- Conversational Awareness
- d’autres réglages des AirPods
- La documentation d’installation est séparée par plateforme
Prise en charge des fonctionnalités selon la plateforme
-
Fonctionnalités implémentées et fonctionnant bien à la fois sur Linux et Android
- Changement de mode d’écoute
- Détection du port
- État de la batterie
- Changement du nom des AirPods
- Sur Android, il peut être nécessaire de réappairer les AirPods après avoir changé leur nom
- Conversational Awareness
- Connexion automatique des AirPods
-
Fonctionnalités prises en charge uniquement sur Android
- Head Gestures
- Autres réglages d’accessibilité
- Press speed
- Press and Hold duration
- Noise Cancellation with single AirPod
- Volume control on swipe
- Volume swipe speed
- Autres réglages généraux
- Faire défiler les modes d’écoute ou appeler l’assistant numérique via Press and Hold
- Réglages de contrôle des appels
- Personalized volume
- Microphone side
- Mettre les médias en pause lors de l’endormissement
- Activation de
Off listening mode
- Fonctionnalités nécessitant du VendorID spoofing
- Loud Sound Reduction
- Hearing Aid
- Personnalisation du Transparency Mode
- Multi-device connectivity
- Les statuts sont indiqués comme suit
- ✅ : implémenté et fonctionne bien
- ⚪ : VendorID spoofing requis, aux risques et périls de l’utilisateur
- 🔴 : pas encore implémenté, prévu
- ⛔ : ne sera pas implémenté
- ❓ : inconnu
VendorID spoofing et fonctionnalités supplémentaires
- Le VendorID spoofing consiste à remplacer le VendorID du profil DID par la valeur d’Apple afin d’accéder à plusieurs fonctionnalités spéciales
- Sous Linux, il peut être utilisé en modifiant le DeviceID dans
/etc/bluetooth/main.conf- Ligne de configuration :
DeviceID = bluetooth:004C:0000:0000
- Ligne de configuration :
- Sur Android, si Xposed est disponible et que le module LibrePods est activé, l’option
act as Apple devicepeut être activée dans les réglages de l’application - Multi-device Connectivity permet de connecter simultanément jusqu’à 2 appareils aux AirPods, avec l’audio et les contrôles utilisables sur les deux
- Si Android prend le contrôle des AirPods, une notification
"Move to iPhone"apparaît sur les appareils Apple comme s’il s’agissait d’un appareil Apple - Si un autre appareil prend le contrôle, une fenêtre contextuelle s’affiche aussi sur Android
- Si Android prend le contrôle des AirPods, une notification
- Les réglages liés à l’accessibilité et aux aides auditives peuvent également être configurés
- Amplification, balance, tone, conversation boost et ambient noise reduction du Transparency Mode
- Loud Sound Reduction
- Personnalisation de Hearing Aid et réglage des résultats d’audiogramme
- L’application ne propose pas de test auditif, au motif qu’une plus grande précision est nécessaire
Fonctionnalités encore incomplètes et limites de périmètre
- Les fonctionnalités liées à Find My sont prévues, mais nécessitent davantage de rétro-ingénierie et pourraient nécessiter root sur Android
- Ajouter les AirPods au réseau Find My
- Faire jouer un son depuis le boîtier de charge
- Alertes en cas d’oubli
- Basculer le son de charge du boîtier
- Spatial Audio ne fournit actuellement pas d’informations de head tracking à Android pour que l’OS effectue le HRTF
- Cela n’a pas été entièrement exploré et pourrait nécessiter root
- La spatialisation du son stéréo est hors périmètre du projet et ne sera pas proposée
- De nombreux OEM disposent de leur propre implémentation
- Heart Rate Monitoring est en cours de travail pour les modèles à partir des AirPods Pro 3
- Même si l’implémentation aboutit, elle nécessitera très probablement root sur Android
- High quality two-way audio est lié à la fonctionnalité qui permet, sur iOS/iPadOS, de continuer à utiliser A2DP pendant que les AirPods envoient le flux audio du micro via AACP
- Sur Android, cela nécessiterait une intégration plus profonde avec l’audio et donc très probablement root
Protocole, rétro-ingénierie et usage de l’IA
- Pour les informations sur le protocole, on peut consulter le plugin dissecteur Wireshark de Nojus pabloaul/apple-wireshark
- La majeure partie de l’implémentation de LibrePods n’a pas utilisé ce dissecteur ; l’auteur du projet a rétro-ingéniéré directement le protocole avant la création du dissecteur
- Il précise toutefois que ce travail de rétro-ingénierie a été nécessaire pour de futures fonctionnalités comme l’audio bidirectionnel de haute qualité et l’audio spatial
- Parties de l’application Android entièrement générées par IA
- Toute la logique et l’UI de Head Gestures
- Les deux versions de l’offset setup utilisant r2 et le module Xposed
- Troubleshooter et LogCollector
- Les autres parties principales de l’application Android ont été écrites manuellement
- background service
- classes de gestion Bluetooth AACP et ATT
- toute l’UI et les petits composants
- Dans la réécriture Linux,
aacp.rsetatt.rsont été traduits par IA de Kotlin vers Rust- Une partie de
media_controller.rs, principalement l’intégration Pulse, a aussi été générée par IA
- Une partie de
- Certains composants d’UI proviennent de la demo app de Kyant0, sous Apache License 2.0
Applications alternatives, licence et avis de marque
- Des applications alternatives utilisables sur d’autres plateformes ou dans d’autres conditions sont proposées
- CAPod : application compagnon AirPods pour Android, recommandée si l’on utilise Android 16 QPR3 ou antérieur et que l’on n’a pas root
- MagicPods for Steam Deck : website
- MagicPods : alternative si l’on cherche LibrePods pour Windows
- LibrePods est distribué comme logiciel libre sous licence GPLv3 ou ultérieure
- La GPL n’accorde pas le droit d’utiliser le nom, le logo ou la marque LibrePods
- Le nom et le logo LibrePods ne peuvent pas être utilisés sans autorisation d’une manière suggérant une affiliation, une approbation ou un lien avec le projet officiel
- La police SF Pro utilisée dans l’application Android est la propriété d’Apple Inc. et sera remplacée par une alternative open source dans une prochaine version
- AirPods, AirPods Pro, AirPods Max et le logo AirPods sont des marques d’Apple Inc. ; le projet LibrePods n’est ni affilié à Apple Inc., ni approuvé par celle-ci
librepods.orgn’est pas le site officiel du projet LibrePods ; le projet avertit qu’en raison d’une mention de copyright dans le pied de page et de l’utilisation du logo LibrePods, ce site affirme à tort être le site officiel
1 commentaires
Avis sur Hacker News
Pour éviter toute confusion, précisons que les AirPods fonctionnent déjà comme des écouteurs Bluetooth ordinaires avec d’autres appareils.
Ce projet implémente certaines fonctionnalités et interfaces supplémentaires intégrées aux produits Apple.
Il est écrit : « 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 », suivi d’un tableau des fonctionnalités.
Il existe des produits moins chers avec un meilleur son, mais la qualité audio est presque la partie la moins importante de l’histoire de ce produit.
Et c’était aussi le cas pour des fonctions essentielles autres que la simple connexion comme périphérique Bluetooth audio de sortie/entrée.
Ce projet est excellent. J’aimerais qu’un jour AirDrop soit aussi libéré.
https://github.com/seemoo-lab/opendrop avait l’air prometteur, mais semble à l’arrêt ; j’espère que ce sera possible un jour.
https://www.android.com/quick-share/
Si je n’étais pas convaincu qu’Apple va essayer de bloquer au maximum toutes les voies permettant à ça de fonctionner à l’avenir, ça aurait peut-être pu me motiver à acheter des AirPods.
Ici, c’est plutôt quelqu’un qui a implémenté une interface pour des fonctions supplémentaires déjà intégrées aux systèmes d’exploitation d’Apple.
Pour figer la version, il faut donc éviter absolument de les connecter à un produit Apple.
Cela dit, si vous n’êtes pas déjà utilisateur d’un ordinateur ou d’un téléphone Apple, je recommanderais les Sony WF-1000XM6. L’expérience utilisateur est moins bonne et apparemment un peu buggée, mais le son est probablement meilleur.
Cela dit, il vaut peut-être mieux récompenser un fabricant qui ne demande pas ce genre de contournements pour utiliser le matériel que j’ai acheté.
Discussion précédente : https://news.ycombinator.com/item?id=45941596
Je respecte le travail et le hacking réalisés ici.
Mais je ne vois pas pourquoi il faudrait soutenir une entreprise aussi hostile en achetant des AirPods. Je ne serais pas surpris qu’un correctif vienne bloquer ça.
Même si l’on peut contourner et hacker, la culture qui consiste à voir l’utilisateur comme quelqu’un qu’il faut contrôler et prendre en charge me dérange.
Ce qui ne marche pas sur les plateformes non Apple, ce sont des choses comme les réglages, la modification des gestes par pression ou le chargement des mises à jour de firmware.
Il n’existe pas de moyen de faire ça uniquement avec le Bluetooth standard, donc il faut une app dédiée. Apple n’a simplement pas créé d’app dédiée pour les autres plateformes, et n’a aucune raison de se soucier du fait que quelqu’un dépense des ressources pour en créer une. Après tout, les AirPods ont été vendus et quelqu’un d’autre a payé le coût de développement de l’app : Apple gagne.
Est-ce interdit d’ajouter des fonctionnalités par-dessus une connexion Bluetooth classique, mais de choisir de ne les proposer que sur des plateformes qu’on peut entièrement contrôler et garantir en qualité ?
Le simple fait de proposer des fonctionnalités en exclusivité est-il vraiment hostile ? Une entreprise ne peut-elle pas offrir des avantages quand on utilise plusieurs de ses produits ensemble ?
Ou bien est-ce hostile parce que vous partez du principe qu’Apple va corriger ça ?
J’utilise plusieurs paires d’AirPods depuis des années, et je découvre seulement maintenant certaines fonctionnalités.
J’en suis même venu à me dire qu’il faudrait une troisième colonne indiquant si Apple les prend en charge. Évidemment, je plaisante.
Pour quelqu’un qui n’a pas d’AirPods actuellement et ne suit pas vraiment l’écosystème Apple, il serait utile d’expliquer quelles fonctionnalités on perd en associant des AirPods à des appareils non Apple.
J’espérais que cela permettrait d’utiliser les AirPods sous Linux à la fois comme haut-parleurs et comme casque avec micro.
Je l’ai essayée moi-même et elle semble bien fonctionner. J’espère qu’elle ne sera pas bloquée par des brevets.
Il faut toutefois passer le profil Bluetooth en HFP (Hands-Free Profile) ou HSP (Headset Profile).
Il faut aussi noter que c’est le réglage par défaut pour obtenir une meilleure qualité. Cela vient de la spécification Bluetooth, pas de Linux.
La fonctionnalité vraiment utile que je cherche, c’est le multipoint illimité avec d’autres appareils.
Les deux connexions proposées par la plupart des autres appareils sont vraiment insuffisantes. Ce serait pratique de pouvoir se connecter rapidement, de temps en temps, au téléphone de bureau VoIP de l’entreprise.