# 藍芽耳機在 Linux 了解


## 背景

BT + AC600 瑞昱（Realtek）晶片 USB 網卡（RTL8821CU）加上 Sony WH-1000XM3 耳機。

一張標準 CD 音質（16bit/44.1kHz）需要約 1.411 Mbps 的頻寬，而傳統藍牙可用頻寬通常只有數百 kbps，無法直接傳送未壓縮音訊，必須進行壓縮。

* SBC（業界公版）：藍牙技術聯盟（Bluetooth SIG）制定的強制標準。所有藍牙音訊裝置都必須支援，但壓縮演算法保守、音質普通
* AAC（Apple 主導）：針對 iOS/macOS 深度最佳化的進階音訊編碼，複雜運算換取高音質，但對非 Apple 晶片的解碼效率差異很大
* aptX 系列（Qualcomm 高通）：主打低延遲與固定演算法（aptX、aptX HD、aptX Adaptive），適合通話、追劇、遊戲，在 Android 與具備高通晶片的裝置上普及
* LDAC（Sony 自研）：為了「Hi-Res 認證」而生，將傳輸碼率暴力拉高到最高 990 kbps，是目前最接近無損音質的藍牙編碼

{{< image
    src="image.png"
    alt="[表格比較](https://blog.csdn.net/danteLiujie/article/details/119797789)"
    caption="[表格比較](https://blog.csdn.net/danteLiujie/article/details/119797789)"
>}}

其中 LDAC 在 Windows 並不原生支援，所以很難用，Sony 在 2017 年將 LDAC 的編碼端原始碼（Encoder）貢獻給了 Android 開源專案 (AOSP)。Linux 社群隨後將開源的 LDAC 函式庫移植到 PipeWire 與 PulseAudio，因此在 Linux（如 Debian）上可以免費且自由地直接啟用 LDAC。

Windows 本身不內建，但可透過第三方開發者付費開發的驅動程式（例如 Alternative A2DP Driver）來讓 Windows 支援 LDAC 與 aptX HD。Windows 系統出於授權考量，預設僅啟用 SBC、AAC 與部分 aptX，若無額外購買第三方驅動則無法直接輸出 LDAC。

## 耳機卡頓原因

原本用了幾個工具來 Deubg:

* `pactl`: （PulseAudio / PipeWire 控制工具），查詢音效伺服器中目前的輸出裝置（Sink）清單，並確認藍牙耳機實際協商套用的編碼（Codec）是哪一種
* `pw-top`: 即時監控音訊引擎的運作狀態，重點觀察是否有 ERR（錯誤/Buffer Underrun/掉封包），以及即時取樣率（RATE）和系統處理延遲（BUSY/WAIT）
* `bluetoothctl`: 檢查底層藍牙連線狀態、配對協議與電量

USB 網卡，這正是造成 LDAC 嚴重卡頓的根本硬體瓶頸。因為藍芽固定走 2.4GHz，當我的 Wi-Fi 也連 2.4GHz 時，這張 USB 網卡的同一根天線必須在「接收 Wi-Fi 封包」與「發射藍牙 LDAC 封包」之間極速切換。只要 Wi-Fi 稍微有封包傳輸，LDAC 就會瞬間掉封包，導致耳機卡頓或爆音。

因此要切到 5GHz，Wi-Fi 移至 5GHz 頻段運作後，2.4GHz 頻率就會完全留給藍牙使用，天線與頻寬干擾會大幅降低，或者我是直接關閉 WiFi 畢竟我用網路線。

## Reference

* https://youtu.be/iylYhzWWgAg?si=nz5UUs1SV55it4fU骁龙畅听？SBC AAC aptX？蓝牙耳机音频编码协议科普，买TWS前必看！

