Modification de la pile Bluetooth pour améliorer la qualité audio des casques sans AA (2019)
(habr.com)Amélioration de la qualité audio via une modification de la pile Bluetooth
- Les utilisateurs de casques sans fil constatent une qualité sonore médiocre et un manque d’aigus lorsqu’ils utilisent le codec Bluetooth SBC standard.
- Acheter un appareil compatible avec les codecs aptX ou LDAC est la solution habituelle, mais ces codecs impliquent des coûts de licence, ce qui rend les appareils plus chers.
- La faible qualité du SBC provient actuellement de limitations artificielles de la pile Bluetooth et des casques, et il est possible de les contourner sur tous les appareils par de simples modifications logicielles.
Codec SBC
- Le SBC dispose de plusieurs paramètres négociés lors de la phase d’établissement de la connexion : type et nombre de canaux audio, nombre de sous-bandes de fréquence, nombre de blocs audio par paquet, algorithme d’allocation des bits de quantification, ainsi que valeurs maximale et minimale du bitpool utilisées pendant la quantification.
- Les piles Bluetooth actuelles négocient généralement l’ensemble d’options suivant : Joint Stereo, 8 bandes, 16 blocs, Loudness, bitpool 2..53.
- La valeur du bitpool est le paramètre qui modifie le bitrate d’encodage ; plus elle est élevée, plus le bitrate et la qualité augmentent.
Modification de la pile Bluetooth
- Toutes les piles Bluetooth compatibles A2DP doivent prendre en charge le mode Dual Channel, mais il n’existe aucun moyen de forcer l’utilisation de ce mode.
- Des correctifs ont été créés pour Android 8.1 et 9 afin d’ajouter le mode Dual Channel au menu développeur, où il apparaît comme codec « HD Audio » dans les paramètres des appareils Bluetooth.
- Ce correctif a été intégré dans des firmwares alternatifs comme LineageOS, Resurrection Remix et crDroid.
Origine des 551 et 452 kbps
- La technologie Bluetooth à répartition temporelle a été conçue pour transmettre efficacement de gros paquets de taille fixe.
- Le transfert de données s’effectue par slots, et 5 slots constituent le nombre maximal pouvant être transmis en une seule fois.
- Sur 5 slots, il est possible de transmettre jusqu’à 679 octets à 2 Mbps et jusqu’à 1021 octets à 3 Mbps.
Pourquoi tout cela est-il nécessaire ?
- Contrairement à la croyance répandue sur la qualité audio de l’aptX, le SBC peut dans certains cas produire une qualité audio inférieure au bitrate standard de 328k.
- Le SBC alloue dynamiquement les bits de quantification aux bandes de fréquence, tandis que l’aptX quantifie les bandes de fréquence avec un nombre constant de bits.
- En utilisant un SBC à haut bitrate, on peut obtenir dans la plupart des cas une qualité sonore supérieure à l’aptX, et sur des casques prenant en charge l’EDR 3 Mb/s, une qualité très proche de l’aptX HD.
Peut-on aller plus loin ?
- Le patchset Android fournit une option supplémentaire permettant d’augmenter encore le bitrate des appareils EDR 2 mbps, de 452 kbps à 595 kbps.
- Il est possible d’activer ce bitrate plus élevé en définissant la variable
persist.bluetooth.sbc_hd_higher_bitratesur 1.
Compatibilité avec les appareils
- Le SBC Dual Channel est pris en charge par presque tous les casques, enceintes et autoradios.
- Les appareils posant des problèmes avec ce mode sont très rares, mais des informations détaillées sur la compatibilité sont disponibles sur 4pda et xda-developers.
Comparaison de la qualité audio
- Un service web a été créé pour encoder l’audio en temps réel dans le navigateur en SBC (ainsi qu’en aptX et aptX HD), afin de comparer la qualité sonore de différents profils SBC et codecs.
Contacter les développeurs Android
- Une demande a été adressée aux développeurs de la pile Bluetooth de Google pour inclure le correctif dans l’AOSP, mais aucune réponse n’a encore été reçue.
- Aucun commentaire n’a non plus été obtenu de la part des personnes impliquées dans le développement sur le système de revue de code Gerrit.
Conclusion
- Les utilisateurs des firmwares LineageOS, Resurrection Remix et crDroid peuvent améliorer la qualité audio Bluetooth en cochant une case dans les paramètres des appareils Bluetooth.
- Les utilisateurs Linux peuvent également installer le correctif de Pali Rohár pour obtenir un bitrate SBC plus élevé.
Avis de GN⁺
Le point le plus important de cet article est qu’il est possible d’améliorer la qualité de l’audio Bluetooth existant uniquement par des modifications logicielles. C’est une solution séduisante, car elle permet de profiter d’un son de meilleure qualité sur des appareils déjà possédés, sans acheter du matériel compatible avec de nouveaux codecs coûteux. En particulier, le fait que ces modifications soient possibles pour les utilisateurs de firmwares open source est une avancée intéressante, car elle améliore l’accessibilité technique et permet aux utilisateurs d’avoir davantage de contrôle sur leurs appareils.
1 commentaires
Avis Hacker News
Évaluation positive du large support de SBC et de sa capacité d’évolution naturelle
Analyse approfondie d’un bug dans la pile Bluetooth d’Android et remarque sur la variabilité du matériel
Partage d’expérience sur le réglage des paramètres SBC avec « Alternative A2DP Driver » sous Windows, ainsi que sur l’usage de AAC, aptX et LDAC
Mention de la possibilité d’améliorer l’audio à plus haut débit sous Linux avec SBC XQ et la qualité audio des casques avec mSBC
Mise en avant de la nécessité d’une fonction permettant une mise en tampon longue à l’avance dans les profils audio Bluetooth
Retour d’expérience sur l’utilisation de cette fonction dans LineageOS et mention de la nécessité d’améliorer l’expérience utilisateur
Mention de la nécessité d’ajouter l’année (2019) au titre et rappel que c’est déjà implémenté dans PulseAudio et PipeWire
Point de vue sceptique sur l’effet réel sur la qualité audio de la différence de débit entre Dual Channel et Joint Stereo
Question sur une méthode pour améliorer la qualité de HFP sous macOS et partage d’expérience avec mSBC sous Linux
Expérience d’un utilisateur qui ne savait pas qu’il utilisait SBC et remerciement pour le billet