Bluetooth sound way too loud

Hello all,
I have problems with my headset when connected to my laptop using Ublue Aurora Linux: the sound is very loud even when I set the system volume slider to 2%. I am a bit hard of hearing but this is even way too loud for me. I need to lower the volume as well in the audio program I am using to a level of around 20-30%.

I have placed another thread here in March of this year when I used Fedora Kinoite:
problem-with-volumecontrol-when-using-bluetooth-earplugs where I received a solution which worked for a while, but now has stopped working.

This is some info about my laptop:

Operating System: Aurora 42
KDE Plasma Version: 6.4.4
KDE Frameworks Version: 6.17.0
Qt Version: 6.9.1
Kernel Version: 6.15.9-201.fc42.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 6800H with Radeon Graphics
Memory: 16 GiB of RAM (14,8 GiB usable)
Graphics Processor 1: AMD Radeon 680M
Graphics Processor 2: NVIDIA GeForce RTX 3060 Laptop GPU
Manufacturer: LENOVO
Product Name: 82RG
System Version: Legion 5 Pro 16ARH7H

In the audio section of the KDE system-settings I also found this:

Card #108
	Name: bluez_card.00_00_AB_CD_2D_D8
	Driver: module-bluez5-device.c
	Owner Module: n/a
	Properties:
		api.bluez5.address = "00:00:AB:CD:2D:D8"
		api.bluez5.class = "0x240404"
		api.bluez5.connection = "connected"
		api.bluez5.device = ""
		api.bluez5.icon = "audio-headset"
		api.bluez5.path = "/org/bluez/hci0/dev_00_00_AB_CD_2D_D8"
		bluez5.profile = "off"
		device.alias = "ENV-1666"
		device.api = "bluez5"
		device.bus = "bluetooth"
		device.description = "ENV-1666"
		device.form_factor = "headset"
		device.icon_name = "audio-headset-bluetooth"
		device.name = "bluez_card.00_00_AB_CD_2D_D8"
		device.product.id = "0x0123"
		device.string = "00:00:AB:CD:2D:D8"
		device.vendor.id = "bluetooth:0094"
		media.class = "Audio/Device"
		spa.object.id = "0"
		factory.id = "15"
		client.id = "48"
		object.id = "36"
		object.serial = "108"
	Profiles:
		off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
		a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC) (sinks: 1, sources: 0, priority: 18, available: yes)
		a2dp-sink-sbc_xq: High Fidelity Playback (A2DP Sink, codec SBC-XQ) (sinks: 1, sources: 0, priority: 17, available: yes)
		a2dp-sink: High Fidelity Playback (A2DP Sink, codec AAC) (sinks: 1, sources: 0, priority: 19, available: yes)
		headset-head-unit-cvsd: Headset Head Unit (HSP/HFP, codec CVSD) (sinks: 1, sources: 1, priority: 2, available: yes)
		headset-head-unit: Headset Head Unit (HSP/HFP, codec mSBC) (sinks: 1, sources: 1, priority: 3, available: yes)
	Active Profile: a2dp-sink
	Ports:
		headset-input: Handsfree (type: Headset, priority: 0, latency offset: 0 usec, available)
			Properties:
				port.type = "headset"
			Part of profile(s): headset-head-unit-cvsd, headset-head-unit
		headset-output: Headset (type: Headset, priority: 0, latency offset: 0 usec, available)
			Properties:
				port.type = "headset"
			Part of profile(s): a2dp-sink-sbc, a2dp-sink-sbc_xq, a2dp-sink
		headset-hf-output: Handsfree (type: Headset, priority: 0, latency offset: 0 usec, available)
			Properties:
				port.type = "headset"
			Part of profile(s): headset-head-unit-cvsd, headset-head-unit

I use the a2dp-sink: High Fidelity Playback (A2DP Sink, codec AAC) profile, but changing it to another does not help.

As said I got this solution, which worked for a while but later it stopped working:

mkdir -p ~/.config/wireplumber/wireplumber.confd && echo "monitor.bluez.properties = { bluez5.enable-hw-volume = false }" > ~/.config/wireplumber/wireplumber.conf.d/btvolume.conf

Now I am on Ublue Aurora (related to Fedora Kinoite). I did the same but that didn’t work. I found a similar setting for pipewire instead of wireplumber:

mkdir -p ~/.config/pipewire/media-session.d && echo "monitor.bluez.properties = { bluez5.enable-hw-volume = false }" > ~/.config/pipewire/media-session.d/bluez-monitor.conf

What is the way to solve this so I can set the volume slider in the audio player to 100% and control the volume with the master volume slider as I also do when listening to my loudspeakers? Does anybody else have this problem as well?

try going thru you audio devices using alsamixer and setting the PCM volume to sane levels.

Thank you for your answer. I installed alsamixer but whatever I do in there does not change the volume at all.
I then opened the audio module in KDE system settings and found another slider for the Clementine mediaplayer (which was playing at he time). I now set this slider to 30%, the slider in Clementine to 100% and the output to my earphones (the master volume setting in KDE) to 20%. I can now control the volume with the last one. Because I use the env-1666 earphones now, hat is the main volume slider at the moment.
It is not ideal but it works.
Thanks.

The fix you had originally, create the config file which disables hardware volume control for that headset,

is the correct one. Kinda.

There is a typo in that quote - spot the missing ‘.’ (confd should be conf.d)

If it’s not that, it is likely that it is not working because you are using kinoite and it does not use the config files from the standard location (common among immutable distros, I’m unsure if it applies there). If you ask about this on a kinoite forum they will tell you where you can put the config file.

If you use other BT headsets, you will want to improve on that fix. The config you have there, disables hardware volume control on all of your bluetooth headsets. Hardware volume control is nice to have with wireless devices because it saves battery.

Sometimes, there will be a bug (you should report it, it might be fixable!) or the device may simply not support it, and the headset might need hardware volume control disabled, like yours maybe does… but generally, it is better to keep it enabled. You can create a rule which applies only to that device, and disable hardware volume control specifically for that one (or only for certain profiles, depending on what your device needs).

And the best part - this should all be handled automatically and is done so based on a hardware database maintained by the wireplumber team. If your headset needs special treatment, if they have your headset on their list, it’s taken care of by magic. If you file this as a bug they can fix it so it just works.

Hope that helps.

Edit: LOL and I just realised that I was the guy in the other link :smiley:

1 Like

How did you see that so fast? I have checked the whole line when I started using it in a different distro and I did not see it.
This is indeed the solution, now it works again in the same way as it did you first gave me this solution.
Thank you so very much for your help.

1 Like