快轉到主要內容

Linux如何配對高音質藍牙耳機 (LDAC/aptX/LC3),安裝PipeWire解碼器

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux使用技巧
標籤   PipeWire
目錄

Install PipeWire bluetooth codecs on Linux desktop.

目前市面上的藍牙耳機,主流的編碼器有SBC與AAC,若要追求更高音質,還有LDAC、aptX、aptX HD、aptX LL、LC3、LC3plus、SSC、LHDC、Faststream、Opus 05 Pro等等。

這主要是看你的藍牙耳機是否支援使用這些編碼器,再看電腦的藍牙晶片是否支援解碼器,最後再看Linux系統能否啟用對應的解碼器來播放。

在Linux上,這些編碼都可以透過PipeWire輕鬆設定。

為什麼你應該切換到PipeWire,不要再用PulseAudio了?它有開箱即用的高音質藍牙編碼器~主流的A2DP編碼器都有人製作,讓我們可以在Linux電腦無縫享受Sennheiser、Sony、Audio-Technica、Marshall、JBL、Philip的高音質藍牙耳機。相較之下PulseAudio的藍牙編碼器缺很大。

PipeWire另外一個好處是,它提供HFP模式下「mSBC」的解碼器,可以改善藍牙耳機當電腦麥克風時候的音質。

1. 安裝PipeWire藍牙解碼器
#

現在的Linux主流發行版應該都是使用PipeWire當音訊伺服器了,並用WirePlumber管理音訊,例如Ubuntu 24.04以上版本。

你或許不需要執行這一段的步驟,因為Linux發行版應該都幫你裝好了才對。

Linux發行版多半會提供藍牙解碼器套件,其中包含專有與開源的解碼器。我們知道,aptX是需要Qualcomm公司授權費的專有編碼,不過一般只有藍牙耳機製造商需要付錢,解碼器是有開源的。在Linux,我們透過社群逆向工程的libfreeaptx提供aptX支援。

至於AAC也是專有編碼,大部分的解碼器實作都是專有軟體。目前是有開源的AAC解碼器FDK-AAC,但授權並非自由軟體,很多發行版的PipeWire沒有把這個編譯進去。且,AAC在這裡就是個蘿莉,我們有SBC-XQ強行將SBC位元率升頻到551kbps的版本,即使是Apple AirPods也會變好聽,不必使用專有編碼器AAC。

  1. 你可以用這個指令確認PipeWire是否啟用:pactl info,應該會顯示PulseAudio (on PipeWire)

  2. 安裝以下PipeWire藍牙解碼器套件,目前Ubuntu支援的包含LDAC、aptX、LC3。

sudo apt install libspa-0.2-bluetooth libldacbt-abr2 libldacbt-enc2 libfreeaptx0 liblc3-dev
  1. 然後重新啟動WirePlumber。
systemctl --user restart wireplumber
  1. 連接到藍牙耳機。

2. 查看藍牙耳機可用的解碼器
#

  1. KDE Plasma與GNOME的桌面應該都會在音訊控制面板,顯示可用的解碼器。

  2. 如果沒有出現該出現的解碼器,編輯WirePlumber設定檔

mkdir -p ~/.config/wireplumber/wireplumber.conf.d/

vim ~/.config/wireplumber/wireplumber.conf.d/51-bluez-config.conf
  1. 填入以下內容,在WirePlumber啟用全部解碼器
   bluez_monitor.properties = {
      ["bluez5.enable-msbc"] = true,
      ["bluez5.enable-sbc-xq"] = true,
      ["bluez5.enable-hw-volume"] = true,
      ["bluez5.headset-roles"] = "[ a2dp_sink a2dp_source bap_sink bap_source hsp_hs hsp_ag hfp_hf hfp_ag ]",
      ["bluez5.codecs"] = "[ sbc sbc_xq aac ldac aptx aptx_hd aptx_ll aptx_ll_duplex faststream faststream_duplex lc3plus_h3 opus_05 opus_05_51, opus_05_71 opus_05_duplex opus_05_pro lc3 ]",
    }
  1. 然後重新啟動WirePlumber。
systemctl --user restart wireplumber

3. 強制提高藍牙LDAC位元率
#

LDAC這種藍牙編碼器,儘管位元率最高可達990kbps,但其實連線的時候會自動調整位元率,減少因為干擾因素導致連線不順暢。如果你想要強制維持在最高位元率,可以強制指定。

注意,因為藍牙先天物理頻寬限制,啟用高位元率模式可能會造成音訊斷斷續續,請在2.4Ghz干擾少的地方測試。

  1. 你可以安裝Blueman-GTK這個程式
sudo apt install blueman
  1. 從Blueman-GTK觀察藍牙耳機的位元率使用狀況。這裡上傳顯示的速度需要換算一下,依照LDAC提供的三檔品質來看,124 KB/s = 990 kbps。82.5 KB/s = 660 kbps。41.25 KB/s = 330 kbps。

  2. 編輯WirePlumber設定檔:

mkdir -p ~/.config/wireplumber/wireplumber.conf.d/

vim ~/.config/wireplumber/wireplumber.conf.d/51-bluez-config.conf
  1. 填寫以下內容。設定處理藍牙裝置的規則。bluez5.a2dp.ldac.quality後面可用的值有hqsqmqauto,設定hq強制讓LDAC鎖定在990kpbs。
monitor.bluez.rules = [
  {
    matches = [
      {
        device.name = "~bluez_card.*"
      }
    ]
    actions = {
      update-props = {
        bluez5.a2dp.ldac.quality = "hq"
      }
    }
  }
]
  1. 然後重新啟動WirePlumber。
systemctl --user restart wireplumber
  1. 看看位元率是否上升。

參考資料
#

相關文章

Ubuntu如何連接Apple AirPods Pro藍牙耳機並查看電量
分類   Linux系統 Linux使用技巧
標籤   AirPods GNOME Ubuntu KDE Plasma PipeWire
用Android手機播放Linux電腦音樂 ~ PulseAudio Wifi串流設定
分類   Linux系統 Linux使用技巧
標籤   PulseAudio PipeWire Android
Linux PipeWire透過AirPlay協定播放音樂
分類   Linux系統 Linux使用技巧
標籤   AirPlay PipeWire

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。