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?
510 Answers
Installing pavucontrol solved the problem for me on my Thinkpad T420, Ubuntu 18.04, and a Bose Soundlink Revolve+.
Run:
sudo apt install pavucontrol
pavucontrolConnect 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.
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.
1I 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.
4Not 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/bluetoothdTo this:
ExecStart=/usr/lib/bluetooth/bluetoothd --plugin=a2dpRestart the daemon and the Bluetooth service:
sudo systemctl daemon-reload
sudo systemctl restart bluetooth 2 Install
pavucontrolby running:sudo apt install pavucontrolRun:
pavucontrolGo to Configuration and search for your Bluetooth device and change the profile to High Fidelity Playback(A2DP Sink).
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.
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.
0For 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)
- 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- While it is piped to less, search for the interface
org.bluez.MediaTransport1(press slash /, typeMediaControl1, press Enter) and record the value of theobject pathof 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 [ ] )- 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.VolumeUpdbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/dev_C8_B2_58_35_64_6F org.bluez.Control.VolumeDown- 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 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.
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.VolumeUpand
dbus-send --print-reply --system --dest=org.bluez /org/bluez/hci0/<device id> --type=method_call org.bluez.MediaControl1.VolumeDownrespectively. 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