Bluetooth

藍牙揚聲器音量控制不起作用(但靜音起作用)

  • January 14, 2022
$ neofetch
OS: Pop!_OS 21.10 x86_64 
Kernel: 5.15.8-76051508-generic

我有兩個藍牙設備:揚聲器SoundCore Boost和耳機EDIFIER W830BT

當我嘗試使用系統音量設置更改耳機的音量時,它確實有效。耳機上還有用於控制音量的按鈕,這些按鈕也可以工作(它們在 Linux 中改變系統音量)。

但是在 Linux 中更改音量的藍牙揚聲器不會影響實際音量。另一方面,使用揚聲器上的音量按鈕確實會改變 Linux 中的系統音量(當我使用設備的按鈕時,Linux 中的音量條會按預期改變)。

此外,當我在 Linux 中靜音系統音量時,它確實會影響揚聲器(靜音)。

總結 - 藍牙設備工作,聲音播放,我可以使用設備的按鈕改變音量,但只有揚聲器音量不能通過 Linux 系統音量控制(靜音除外)。

我卸下並再次配對揚聲器,但這沒有幫助。

對於這兩種設備,Output Device configuration都設置為Hight Fidelity Playback (A2DP Sink)

相同的揚聲器在 macOS 上執行良好(更改系統音量會影響揚聲器音量)。

$ bluetoothctl devices
Device 00:22:37:59:E0:A5 SoundCore Boost
Device 5C:C6:E9:30:68:EA EDIFIER W830BT
$ bluetoothctl show
Controller 38:DE:AD:1B:85:90 (public)
   Name: xxxx
   Alias: xxxx
   Class: 0x007c010c
   Powered: yes
   Discoverable: no
   DiscoverableTimeout: 0x000000b4
   Pairable: no
   UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb)
   UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
   UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
   UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
   UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
   UUID: IrMC Sync                 (00001104-0000-1000-8000-00805f9b34fb)
   UUID: Vendor specific           (00005005-0000-1000-8000-0002ee000001)
   UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
   UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
   UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
   UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
   UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
   UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
   UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
   UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
   UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
   UUID: OBEX File Transfer        (00001106-0000-1000-8000-00805f9b34fb)
   Modalias: usb:v1D6Bp0246d053C
   Discovering: no
   Roles: central
   Roles: peripheral
Advertising Features:
   ActiveInstances: 0x00 (0)
   SupportedInstances: 0x05 (5)
   SupportedIncludes: tx-power
   SupportedIncludes: appearance
   SupportedIncludes: local-name

關於如何解決問題的任何想法?


編輯1:

我用舊核心啟動了實時 LTS 版本

$ neofetch
OS: Pop!_OS 20.04 LTS x86_64
Kernel: 5.13.0-7620-generic

事實證明,該版本沒有問題 - 系統聲音控制會按預期影響我的藍牙揚聲器的音量。

我還啟動了目前系統的實時版本(以確認我安裝的版本沒有問題)並且存在音量控制問題。

所以我的猜測是核心5.15.8-76051508-generic對藍牙和聲音控制的處理方式與5.13.0-7620-generic.


編輯2:

我將核心版本降級為5.13.0.

https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.13/

我下載了4個文件並安裝了它們

$ ls
linux-headers-xxx_all.deb
linux-headers-xxx-generic_xxx.deb
linux-image-usigned-xxx-generic_xxx.deb
linux-modules-xxx-generic_xxx.deb

$ sudo dpkg -i *.deb

Pop!_OS 沒有 GRUB 並使用kernelstub

https://github.com/isantop/kernelstub/blob/master/README.md

我使用以下命令更改了核心版本(其中 xxx 是所需的核心版本)

$ sudo kernelstub -v -k /boot/vmlinuz-xxx-generic -i /boot/initrd.img-xxx-generic

重新啟動後,我看到我正在使用核心5.13.0-051300-generic,但這並不能解決音量控制問題。

$ uname -r
5.13.0-051300-generic

所以我的猜測是,這Pop!_OS改變了一些東西,20.04 LTS並且21.10破壞了我的藍牙揚聲器中正確的音量控制,這不是核心的錯。

在 Pulseaudio 的配置中禁用絕對音量。

編輯文件

/etc/pulse/default.pa

並換行

load-module module-bluetooth-discover

load-module module-bluetooth-discover avrcp_absolute_volume=false

此解決方案的功勞歸於https://www.reddit.com/user/mmstick/ https://www.reddit.com/r/pop_os/comments/s2y0hf/pop_os_2110_brake_bluetooth_device_volume_control/

引用自:https://unix.stackexchange.com/questions/686200