蓝牙扬声器音量控制不起作用(但静音起作用)

蓝牙扬声器音量控制不起作用(但静音起作用)
$ 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 LTS21.10

答案1

在 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/


不幸的是,上述解决方案不再为我工作(内核5.19.0-76051900-generic
,但我找到了另一个目前适合我的解决方案:https://askubuntu.com/a/1350436

相关内容