Änderung des Bluetooth-Stacks zur Verbesserung der Audioqualität bei Kopfhörern ohne AA(2019)
(habr.com)Verbesserung der Audioqualität durch Änderungen am Bluetooth-Stack
- Nutzer kabelloser Kopfhörer erleben bei Verwendung des standardmäßigen Bluetooth-SBC-Codecs eine niedrige Klangqualität und schwache Höhen.
- Der Kauf von Geräten mit Unterstützung für aptX oder LDAC ist die übliche Lösung, aber diese Codecs verursachen Lizenzkosten, wodurch die Geräte teurer werden.
- Die niedrige Qualität von SBC entsteht derzeit durch künstliche Einschränkungen im Bluetooth-Stack und in den Kopfhörern; dies lässt sich auf allen Geräten allein durch Software-Änderungen umgehen.
SBC-Codec
- SBC hat verschiedene Parameter, die in der Phase des Verbindungsaufbaus ausgehandelt werden: Typ und Anzahl der Audiokanäle, Anzahl der Frequenzbänder, Anzahl der Audioblöcke pro Paket, Algorithmus zur Zuweisung der Quantisierungsbits sowie der maximale und minimale Bitpool, der im Quantisierungsprozess verwendet wird.
- Der aktuelle Bluetooth-Stack handelt normalerweise den Optionssatz Joint Stereo, 8 Bänder, 16 Blöcke, Loudness und Bitpool 2..53 aus.
- Der Bitpool-Wert ist ein Parameter zur Änderung der Encodierungs-Bitrate; je höher er ist, desto höher sind Bitrate und Qualität.
Änderung des Bluetooth-Stacks
- Jeder A2DP-kompatible Bluetooth-Stack muss den Dual-Channel-Modus unterstützen, aber es gibt keine Möglichkeit, diesen Modus zu erzwingen.
- Für Android 8.1 und 9 wurde ein Patch erstellt, der den Dual-Channel-Modus zum Entwicklermenü hinzufügt und ihn in den Bluetooth-Geräteeinstellungen als „HD Audio“-Codec anzeigt.
- Dieser Patch wurde in alternative Firmware wie LineageOS, Resurrection Remix und crDroid integriert.
Woher 551 und 452 kbps kommen
- Die Bluetooth-Zeitmultiplex-Technologie wurde dafür entwickelt, große Pakete fester Größe effizient zu übertragen.
- Die Datenübertragung erfolgt über Slots, wobei 5 Slots die maximale Anzahl sind, die in einer einzelnen Übertragung gesendet werden können.
- In 5 Slots können bei 2 Mbps maximal 679 Byte und bei 3 Mbps maximal 1021 Byte übertragen werden.
Warum ist das alles nötig?
- Entgegen dem verbreiteten Glauben an die Klangqualität von aptX kann SBC in manchen Fällen eine schlechtere Audioqualität liefern als die standardmäßige 328k-Bitrate.
- SBC weist den Frequenzbändern dynamisch Quantisierungsbits zu, während aptX Frequenzbänder mit einer konstanten Bitanzahl quantisiert.
- Mit SBC bei hoher Bitrate lässt sich in den meisten Fällen eine bessere Klangqualität als mit aptX erzielen; bei Kopfhörern mit EDR-3-Mb/s-Unterstützung ist die Klangqualität sehr nah an aptX HD.
Geht es noch weiter?
- Das Android-Patchset bietet eine zusätzliche Option, mit der sich die Bitrate von EDR-2-mbps-Geräten weiter von 452 kbps auf 595 kbps erhöhen lässt.
- Eine höhere Bitrate kann aktiviert werden, indem die Variable
persist.bluetooth.sbc_hd_higher_bitrateauf 1 gesetzt wird.
Kompatibilität mit Geräten
- SBC Dual Channel wird von fast allen Kopfhörern, Lautsprechern und Auto-Headunits unterstützt.
- Geräte, bei denen dieser Modus Probleme verursacht, sind sehr selten; detaillierte Informationen zur Kompatibilität finden sich bei 4pda und xda-developers.
Vergleich der Klangqualität
- Es wurde ein Webdienst erstellt, der Audio in Echtzeit im Browser in SBC (sowie aptX und aptX HD) encodiert, sodass sich die Klangqualität verschiedener SBC-Profile und Codecs vergleichen lässt.
Kontakt zu Android-Entwicklern
- Die Entwickler von Googles Bluetooth-Stack wurden gebeten, den Patch in AOSP aufzunehmen, aber bisher gab es keine Antwort.
- Auch im Gerrit-Code-Review-System gab es keinerlei Kommentare von an der Entwicklung beteiligten Personen.
Fazit
- Nutzer der Firmware LineageOS, Resurrection Remix und crDroid können die Bluetooth-Audioqualität verbessern, indem sie in den Bluetooth-Geräteeinstellungen ein Kontrollkästchen auswählen.
- Auch Linux-Nutzer können durch Installation von Pali Rohárs Patch eine höhere SBC-Bitrate erhalten.
Meinung von GN⁺
Das Wichtigste an diesem Artikel ist, dass sich die bestehende Bluetooth-Audioqualität allein durch Software-Änderungen verbessern lässt. Das ist eine attraktive Lösung, weil Nutzer dadurch hochwertige Audioqualität auf vorhandenen Geräten erleben können, ohne neue Geräte mit Unterstützung für teure neue Codecs kaufen zu müssen. Besonders für Nutzer von Open-Source-Firmware ist die Möglichkeit solcher Anpassungen eine interessante Entwicklung, weil sie den Zugang zur Technik verbessert und den Nutzern mehr Kontrolle über ihre eigenen Geräte gibt.
1 Kommentare
Hacker-News-Kommentare
Positive Einschätzung der breiten Unterstützung von SBC und seiner natürlichen Erweiterbarkeit
Tiefgehende Analyse eines Bugs im Android-Bluetooth-Stack und Hinweis auf die Variabilität der Hardware
Geteilte Erfahrungen mit der Anpassung von SBC-Parametern und der Nutzung von AAC, aptX und LDAC unter Windows mit dem "Alternative A2DP Driver"
Hinweis auf höhere Bitraten mit SBC XQ und bessere Headset-Audioqualität mit mSBC unter Linux
Forderung nach einer Funktion in Bluetooth-Audioprofilen, die langes Vorab-Buffering erlaubt
Erfahrungsbericht zur Nutzung dieser Funktion in LineageOS und Hinweis auf Verbesserungsbedarf bei der UX
Hinweis, dass der Titel um die Jahreszahl (2019) ergänzt werden sollte, sowie Erwähnung der Implementierung in PulseAudio und PipeWire
Skeptische Sicht darauf, ob der Bitratenunterschied zwischen Dual Channel und Joint Stereo die Audioqualität tatsächlich verbessert
Frage nach Möglichkeiten zur Verbesserung der HFP-Qualität unter macOS und Erfahrungsbericht zu mSBC unter Linux
Dank für den Beitrag und Hinweis, dass man gar nicht wusste, SBC bereits zu nutzen