22

I'm using Ubuntu 18.04 on a Thinkpad X1C6 to connect to my new Bose Soundlink Revolve speaker. The connection establishes without problems but the sound volume is super low. If I connect with my android phone the volume is way higher so I assume the problem is on the Thinkpad/Ubuntu side and probably more Ubuntu/Software related.

Does anybody have an idea what I can try to fix this issue?

12 Answers12

16

Bumping @Jeff Ward's comment to an answer for those who found this question because they had low volume on Sony WF-1000XM3/Sony WH-1000XM2/Bose NC 700 bluetooth headphones:

Same here on the Bose NC 700 -- a firmware update set the volume super low. The solution was turning the volume up on the headphones themselves (via touch - swipe up on the right-front ear cup.)

In my case, adjusting the volume on the headphones themselves was the only solution - no computer setting was able to increase the volume.

Jacob Stern
  • 291
  • 2
  • 3
11

Installing pavucontrol solved the problem for me on my Thinkpad T420, Ubuntu 18.04, and a Bose Soundlink Revolve+.

Run:

sudo apt install pavucontrol
pavucontrol

Connect your Bluetooth device to your laptop and start feeding it. Then you should be able to adjust the maximum sound level inside pavucontrol. The volume keys on the laptop work as before, except the maximum is now higher. The settings appear to survive application restarts.

7

I have the same problem with Sony WF-1000XM3. They are quite silent on Ubuntu 20.04. Latest Sony firmware update added ability to control volume directly on earphones and it helps. Unfortunately you lose possibility to use other functions on one of earphones.

ipeacocks
  • 690
6

Not sure that this is applicable (don't have the same hardware) but sounds similar to what has already been suggested by jathin-badam and this fixed a similar problem for me with AirPods:

In /lib/systemd/system/bluetooth.service (requires sudo to save changes)

Change this line:

ExecStart=/usr/lib/bluetooth/bluetoothd

To this:

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

Restart the daemon and the Bluetooth service:

sudo systemctl daemon-reload  
sudo systemctl restart bluetooth  

Source

2

The volume can be increased at the speaker to bypass over-amplification and avoid the associated loss of audio quality. Install the bluez package (sudo apt-get install bluez) and start mpris-proxy (/usr/lib/bluetooth/mpris-proxy) to activate the volume buttons of the Bluetooth speaker. Afterwards, the volume can be increased directly via the Bose Soundlink Revolve speaker.

dgaiss
  • 21
2

What just worked for me was Carolus solution under "Control it via dbus" and i am running Ubuntu LTS 20.04 with a minor tweak:

on step 3 i believe the commands have typos where they should be

dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/<device id> --type=method_call org.bluez.MediaControl1.VolumeUp

and

dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/<device id> --type=method_call org.bluez.MediaControl1.VolumeDown

respectively. Where is dev_C8_B2_58_35_64_6F in Carolus example.

Thank you @Carolus

PS. I can't comment nor add a vote as i am a new stackoverflow user

1
  1. Install pavucontrol by running:

    sudo apt install pavucontrol
    
  2. Run:

    pavucontrol
    
  3. Go to Configuration and search for your Bluetooth device and change the profile to High Fidelity Playback(A2DP Sink).

1

I have a Sony-WH1000XM3. I fixed this problem by using the gesture of the headset itself to increase the volume.

This is different from the situation in Windows. Adjusting volume by headset won't affect the volume settings in Ubuntu, so maybe all you need to do is adjust the volume from your Bluetooth device side.

Zanna
  • 72,312
Linloir
  • 11
1

For many users, the issue is simply that Bluetooth audio devices have a software and hardware volume. Turning up the software volume makes the sound quality worse. Linux doesn't support changing Bluetooth hardware volume*.

Workarounds

As @BassGod and others also mentioned there are two workarounds to this:

  • Have a physical method for adjusting the hardware volume on your Bluetooth audio device.
  • Adjust the hardware volume while the device is connected to Android/iOS/Windows/macOS. Then connect the device to your Linux.

Solutions

Just update

The best option is probably to update your OS (or more specifically pulseaudio), since according to some people this issue got resolved in pulseaudio version 15.

Control it via dbus

(Modified from @LiamDennehy and @Sean Normandy)

  1. Find the DBus object that allows control of the headset's internal volume:
$ dbus-send --system --print-reply --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects | less
  1. While it is piped to less, search for the interface org.bluez.MediaTransport1 (press slash /, type MediaControl1, press Enter) and record the value of the object path of the parent of the search result:
dict entry(
   object path "/org/bluez/hci0/dev_C8_B2_58_35_64_6F"
   array [
      dict entry(
         string "org.freedesktop.DBus.Introspectable"
         array [
         ]
      )
  1. Send volume up or volume down requests to it with these commands:
dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/dev_C8_B2_58_35_64_6F org.bluez.Control.VolumeUp
dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/dev_C8_B2_58_35_64_6F org.bluez.Control.VolumeDown
  1. Now you can map these commands to hotkeys via your desktop environment or make them accessible some other way.

Use some script

(Modified from @Sam Mason)

It works for any connected Bluetooth audio device - you don't need to manually find the mac address like in the previous example.

#!/usr/bin/python3

from pulsectl import Pulse import subprocess import sys

Prerequisite tasks on ubuntu machine:

sudo apt install python3-pip

pip install pulsectl

method = 'org.bluez.MediaControl1.Volume{}'.format( 'Down' if sys.argv[1] == 'down' else 'Up')

with Pulse() as pulse: for sink in pulse.sink_list(): bluez_path = sink.proplist.get('bluez.path') if bluez_path: args = [ 'dbus-send', '--system', '--print-reply', '--dest=org.bluez', bluez_path, method, ] subprocess.run(args, check=True)

Then I made the file executable and mapped some hotkeys to run this script:

/home/me/scripts/bt_volume.py up
/home/me/scripts/bt_volume.py down
Carolus
  • 600
0

For my Sennheiser CX 400BT True Wireless earbuds, the solution was to increase the volume on the earbuds (by default this is touch holding the right earbud). This is adjustable with the Sennheiser Smart Control phone app.

qwr
  • 2,969
0

The solution for my Smart Bluetooth Glasses (which didn't had inbuilt audio controls) were to connect it to another device (in my case it was a Mac M1) that allowed you to set speaker and mic volume of the bluetooth device.

Then disconnect it by turning of bluetooth in the other device (in my case mac), then connect it to the linux machine.

This fixed the problem for me, I'm using pipewire on Raspberry Pi OS (32 Bit) on a raspberry pi zero 2W

Akshat
  • 9
0

Reconnecting via bluetoothctl commands work for me to reset or recalibrate the volume (replace with your appropriate device id):

sudo bluetoothctl disconnect "AC:BF:71:AF:C7:43"
sudo bluetoothctl connect "AC:BF:71:AF:C7:43"

Simply switching off the device and reconnecting does not work.