1
$ neofetch
OS: Pop!_OS 21.10 x86_64 
Kernel: 5.15.8-76051508-generic

I have two Bluetooth devices: a speaker SoundCore Boost and headphones EDIFIER W830BT.

When I'm trying to change the volume on headphones using system volume settings it does work. Headphones also have buttons on them for controlling volume and those buttons also work (they change system volume in Linux).

But on a Bluetooth speaker changing volume in Linux doesn't affect the actual volume. On the other hand, using volume buttons on the speaker does change the system volume in Linux (and the volume level bar in Linux changes as expected when I use the device's buttons).

Also, when I mute system volume in Linux it does affect the speaker (sound mutes).

Summarizing - Bluetooth devices work, sound plays, I can change volumes using devices' buttons but only the speaker volume can't be controlled via Linux system volume (except muting).

I removed and paired again the speaker but that didn't help.

For both devices, Output Device configuration is set to Hight Fidelity Playback (A2DP Sink).

The same speaker works well on macOS (changing system volume affects the speaker volume).

$ 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

Any ideas on how to solve the problem?


Edit 1:

I booted live LTS version with an older kernel

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

And it turned out that there's no issue with that version - system sound control affects the volume of my Bluetooth speaker as expected.

I also booted the live version of my current system (to confirm that there's no issue with my installed version) and the issue with volume control was present.

So my guess is that kernel 5.15.8-76051508-generic does something with Bluetooth and sound control differently than 5.13.0-7620-generic.


Edit 2:

I downgraded the kernel version to 5.13.0.
https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.13/

I downloaded 4 files and installed them

$ 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 doesn't have GRUB and uses kernelstub
https://github.com/isantop/kernelstub/blob/master/README.md

I changed the kernel version using the following command (where xxx is the desired kernel version)

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

After the reboot, I see that I'm using kernel 5.13.0-051300-generic but that doesn't solve the problem with volume control.

$ uname -r
5.13.0-051300-generic

So my guess is that Pop!_OS changed something between 20.04 LTS and 21.10 that broke proper volume control in my Bluetooth speaker and it's not the kernel's fault.

1 Answer 1

4

Disable absolute volume in Pulseaudio's config.

Edit the file

/etc/pulse/default.pa

And change the line

load-module module-bluetooth-discover

to

load-module module-bluetooth-discover avrcp_absolute_volume=false

Credit for this solution goes to https://www.reddit.com/user/mmstick/ https://www.reddit.com/r/pop_os/comments/s2y0hf/pop_os_2110_brake_bluetooth_device_volume_control/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.