Extremely low volume with AirPods (Ubuntu 19.10)

Anyone else experienced this? I never had this issue before on Ubuntu 18.04 and would like to know if there is a fix available. FYI everything in Sound setting is maxed.

3 Answers

Andrei Dyomin's answer is subtly wrong; it will technically work, but it will disable all other plugins than a2dp, meaning bluetooth keyboards/mice/gamepads/etc will stop working, when the only plugin causing issues seems to be one called avrcp.

Edit

sudo nano /lib/systemd/system/bluetooth.service

and change

ExecStart=/usr/lib/bluetooth/bluetoothd

to

ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=avrcp

and run

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

Maybe, it is necessary to unpair and re-pair the device.

2

I know next to nothing about Bluetooth stack, so I cannot explain why, but following these steps helped:

Edit the file at /lib/systemd/system/bluetooth.service:

sudo nano /lib/systemd/system/bluetooth.service

Change this line:

ExecStart=/usr/lib/bluetooth/bluetoothd 

To this:

ExecStart=/usr/lib/bluetooth/bluetoothd --plugin=a2dp

Save (CTRL + O) and Exit (CTRL + X)

Restart the daemon and the Bluetooth service:

sudo systemctl daemon-reload
sudo systemctl restart bluetooth 

This answer is adapted from this source.

I have tested this answer with AirPods 1st gen on Ubuntu 18.04.

My AirPods became very quiet recently. I tried --noplugin=avrcp and --plugin=a2dp but neither worked.

This is quite a hack, but it's possible to set the volume level on AirPods in Linux if you patch bluez.

sudo apt install ccache
sudo apt install build-essential devscripts lintian diffutils patch patchutils
apt-get source bluez
apt-get build-dep bluez
cd bluez-5.50

Edit profiles/audio/transport.c:

630 static gboolean volume_exists(const GDBusPropertyTable *property, void *data)
631 {
632 struct media_transport *transport = data;
633 struct a2dp_transport *a2dp = transport->data;
634
635 // return a2dp->volume <= 127;
636 return TRUE; // force true so we can change AirPod volume
637 }

Build and install:

dpkg-buildpackage -rfakeroot -uc -b
sudo dpkg -i ../bluez_5.50-1.2~deb10u1_amd64.deb

Reboot.

I found these scripts on the manjaro forums:

list_airpods.sh

#!/bin/bash
dbus-send --print-reply --system --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects | grep -E '/org/bluez/hci./dev_.._.._.._.._.._../fd[0-9]+' -o

airvol.sh

#!/bin/bash
echo Setting volume to $1
for dev in $(./list_airpods.sh); do dbus-send --print-reply --system --dest=org.bluez "$dev" org.freedesktop.DBus.Properties.Set string:org.bluez.MediaTransport1 string:Volume variant:uint16:$1; done

Now we can adjust the AirPods volume!

$ ./airvol.sh 90
Setting volume to 90
method return time=1621509655.344706 sender=:1.7 -> destination=:1.82 serial=220 reply_serial=2

I have to do this every time I connect my AirPods. I find a volume of 90 or 95 works well. Then in VLC I can have a reasonable level like 65-70 with no distortion.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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

You Might Also Like