適用版本:Ubuntu 24.04、Kubuntu 24.04以上
Ubuntu Linux是支援連線至藍牙耳機的,包含AirPods系列耳機,除了沒有炫砲的開盒配對動畫之外,大部分功能都正常,包含AAC編碼音樂、麥克風通話、降噪功能。
本文Ivon解說如何在Ubuntu配對Apple AirPods Pro(第一代)藍牙耳機,並查看耳機電量。
實際測試AirPods Pro麥克風可以使用,Ivon認為收音還算清楚。
其他Airpods型號應該也能用。
1. 確認藍牙裝置狀態#
務必確保電腦的藍牙正常運作。請先嘗試開啟Ubuntu系統設定 → 藍牙,看是否能開啟藍牙。
如果開不起來,請嘗試安裝網路卡的驅動。
除了圖形界面以外,亦可以用指令確認藍牙狀態,使用bluetoothctl指令。確認完成後輸入
quit
退出。
bluetoothctl list
# 範例輸出
Controller 1A:BC:CE:E4:73:7B Lk31cdk
2. 連線至AirPods#
開啟系統設定 → 藍牙。
將AirPods Pro盒子開啟,長按背後按鈕亮白光,Ubuntu應該會看到AirPods Pro耳機,點選配對。
系統提示已連線,現在可以使用AirPods Pro當耳機和麥克風了。日後AirPods Pro從盒子取出來也會自動配對。
長按AirPods Pro的右耳觸控板開關降噪,按一下暫停音樂。點兩下的手勢無效。
如果Airpods音質怪怪的,到系統設定 → 音訊,切換AirPods的模式為
A2DP Sink
,並選取AAC或SBC-XQ解碼器。
3. 安裝AAC解碼器#
AirPods Pro使用SBC和AAC編碼,大多數藍牙晶片應該都支援。
Ubuntu 24.04以上使用的PipeWire音訊系統理應支援SBC與AAC解碼了,不需要像以前PulseAudio得額外安裝套件。
不過因為軟體授權因素,Ubuntu和Debian打包的PipeWire並沒有包含AAC解碼器。用指令ls /usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/ | grep aac
查看AAC解碼器libspa-codec-bluez5-aac.so
是否有出現在函式庫,結果是沒有。
因此,GNOME系統設定 → 音訊面板只會顯示「SBC」和「SBC-XQ」。AAC的音質比SBC高一點點,但SBC-XQ的音質又比AAC高了,我個人認為沒有安裝AAC解碼器之必要。
如果硬要的話,得手動安裝額外解碼器,我使用Anna Glasgall的pipewire-extra-bt-codecs來取得包含AAC解碼器的PipeWire套件,覆蓋掉系統的PipeWire版本(慎用,可能會導致未來更新出現依賴問題)
sudo add-apt-repository ppa:aglasgall/pipewire-extra-bt-codecs
sudo apt update
sudo apt upgrade
重開機,查看AAC解碼器libspa-codec-bluez5-aac
是否有出現在函式庫:
ls /usr/lib/x86_64-linux-gnu/spa-0.2/bluez5/ | grep aac
之後連線應該就有AAC能用了。
4. 啟用mSBC改善麥克風錄音音質#
要使用AirPods麥克風,請在Ubuntu系統設定 → 音訊,將輸入裝置切換到「Handsfree (HSP/HFP)」模式。
關於麥克風音質部份,HSP/HFP協定使用的是「CVSD」編碼器,錄音音質很差。PipeWire尚支援更高音質的「mSBC」編碼器,需要手動開啟。
- Ubuntu的PipeWire是使用WirePlumber作為工作階段管理器,新增WirePlumber設定檔:
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
vim ~/.config/wireplumber/wireplumber.conf.d/51-bluez-config.conf
- 填入以下內容,啟用mSBC
monitor.bluez.properties = {
bluez5.enable-msbc = true
}
- 重新啟動音訊服務,藍牙可能要重新配對。
systemctl --user restart pipewire pipewire-pulse wireplumber
sudo systemctl restart bluetooth
- 在Ubuntu系統設定 → 音訊 → 輸入裝置,選取mSBC模式。
我注意到Ubuntu 24.04即使編輯了以上設定,依然沒有出現mSBC選項,但是Fedora 41與Arch Linux有出現,可能是Ubuntu的PipeWire套件太舊了?
5. 查看AirPod電量的小工具#
Ubuntu使用GNOME桌面,透過Extension Manager安裝Airpods Battery Monitor。
這樣它就會在螢幕正上方的通知欄,或是右上角顯示一個電量面板。
另有AirStatus,是一個Python指令稿,會以json格式輸出AirPods Pro的電量資訊。可以搭配KDE Plasma桌面的Airpods Battery Widget Frontend小工具使用。
需要KDE Plasam 6.0以上版本。
- 安裝AirStatus
sudo apt install git python3-pip
sudo pip install bleak
git clone https://github.com/Abdallah-Abdelazim/AirStatus
sudo mv AirStatus/main.py /usr/bin/airstatus.py
- 新增Systemd Unit:
sudo nano /etc/systemd/system/airstatus.service
- 填入以下內容:
[Unit]
Description=AirPods Battery Monitor
[Service]
ExecStart=/usr/bin/python3 /usr/bin/airstatus.py /tmp/airstatus.out
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
- 設定開機自動啟動:
sudo systemctl start airstatus
sudo systemctl enable airstatus
在KDE Plasma桌面安裝Airpods Battery Widget Frontend小工具
重新開機,試試拿AirPods Pro出來配對,應該就會看到電量了。
6. 使用特定藍牙裝置配對AirPods#
如果您像Ivon的電腦有二個藍牙網路卡,主機板內建Qualcomm網路卡,USB又插一個Realtek網路卡,想要用收訊比較好的那個Realtek藍牙配對的話,那就得手動選取。
KDE Plasma系統設定界面可以指定要用哪一個藍牙配對,至於GNOME的話就得用指令了。
- 使用
hciconfig -a
指令列出所有藍牙裝置:
# 範例輸出
# Qualcomm製造的網路卡
hci1: Type: Primary Bus: USB
BD Address: 40:1F:08:GE:9F:D0 ACL MTU: 1024:8 SCO MTU: 50:8
UP RUNNING
Manufacturer: Qualcomm (29)
# Realtek製造的網路卡
hci0: Type: Primary Bus: USB
BD Address: 1A:BC:CE:E4:73:7B ACL MTU: 1021:8 SCO MTU: 255:16
UP RUNNING PSCAN
Manufacturer: Realtek Semiconductor Corporation (93)
- 用bluetoothctl的select指令切換藍牙裝置
bluetoothctl
list
# 切換至Realtek網路卡
selecct "40:1F:08:GE:9F:D0"
- 再用指令與AirPods Pro配對
scan on
# 開啟AirPods盒子,使其亮白光
# 列出附近的裝置
devices
pair E0:81:4B:00:D6:CA
connect E0:81:4B:00:D6:CA