Extremely low volume with AirPods (Ubuntu 19.10)

6,641

Solution 1

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.

Solution 2

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.

Solution 3

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.

Share:
6,641

Related videos on Youtube

csodesza
Author by

csodesza

Updated on September 18, 2022

Comments

  • csodesza
    csodesza almost 2 years

    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.

  • sscarduzio
    sscarduzio over 3 years
    works for me in Ubuntu 20.10. Thanks!
  • cigien
    cigien about 3 years
    When linking to your own site or content (or content that you are affiliated with), you must disclose your affiliation in the answer in order for it not to be considered spam. Having the same text in your username as the URL or mentioning it in your profile is not considered sufficient disclosure under Stack Exchange policy.
  • Emre
    Emre over 2 years
    For me, this makes it so that it's always low volume. I suppose at least it's consistent now. Pop!_OS 21.10. AirPods 2nd gen.