Volume range anomalies
The latest version of PulseAudio tries
to control the volume of the sound
card using its mixer controls. Usually
this works just fine, but in some
cases this does not work properly.
(Whether this is PulseAudio's or
ALSA's fault is beyond the scope of
this wiki page. Some more background
information is here.)
Diagnosis
You experience any of the following:
- Jumps in volume, e g if everything below 20% is muted, and 21% is very
loud.
- Overdriven (distorted sound) if the volume is set above a certain
(low) level
- No volume changes in parts of the range, e g if 20% is just as loud as
70%.
Fix / Workaround
There are a few variables which
control how PulseAudio controls the
volume. You can either edit
/etc/pulse/default.pa
(you'll have to
be root to do that) to change the
behavior for all users, or copy that
file to ~/.pulse/default.pa
and then
edit that file, to change behavior for
the current user only.
Open the file mentioned above. Find
the row saying load-module
module-udev-detect
and change it to:
load-module module-udev-detect ignore_dB=1
To try your changes, restart
PulseAudio with the following command:
killall pulseaudio
PulseAudio will then autospawn
(restart itself).
You may find that the above workaround
is insufficient, in which case you may
configure PulseAudio to control only
one mixer control, e.g., PCM (cf.
alsamixer). Find the row saying
#load-module module-alsa-sink
and
change it to:
load-module module-alsa-sink control=PCM
(remember to remove the # in the
beginning of the row!) Optionally
replace PCM with the mixer control you
want PulseAudio to control.
You will then need to killall
pulseaudio
as above and allow the
daemon to autospawn.
Best Answer
I had a similar issue on my Asus UX550VD on Ubuntu 16.04, 17.10 and 18.04. I can only confirm the fix for 18.04.
To build a bit more of an understanding of the various sound control, I recommend you run
in a shell, and play around with the various levels to understand what they do (as well as see how your volume controls change the levels).
On my machine, I found that the master volume did nothing. Only changing the PCM values would adjust the volume on my speakers. My volume control would only change master though. Hence the volume remaining the same regardless of the displayed volume.
I found a fix to adjust PCM instead of master from https://forums.linuxmint.com/viewtopic.php?t=91453
To reiterate the fix:
(Make sure to backup the file before it, just in case something goes wrong)
In this file
I added in
just before this block
This means the master volume is ignored entirely and you will instead configure the PCM volume when using the volume controls.
I rebooted machine and my volume worked as expected. Look at alsamixer to double check the behavior in case it doesn't work (I had a typo in my config the first time I did this).