1

I have a Thinkpad T530 and the max volume on Linux (Xubuntu 16.04) is quite low compared to Windows on the same macine.

You can push the volume above 100% with the volume control UI, but it resets to 100% whenever I change volume with the keyboard keys, so I'm looking for a better solution. I'd also rather not use external speakers (its a laptop), so I'm trying to do this with software.

Here's what I've tried so far:

  1. pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150% - also resets volume when I touch the keyboard controls. No dice.

  2. Checked mixer levels in alsamixer. Everything relevant (Master/Speakers/PCM) is already at 100%.

  3. Created an ALSA softvol control in /etc/asound.conf, as described here and here. I got the control to appear in alsamixer, but it has no effect on volume. However, it does work if I kill the pulseaudio daemon and just use ALSA.

Right now I'm attempting to modify my asound.conf to work with PulseAudio, but think that I may be out of my depth here.

It doesn't seem like I can use a pulse type PCM device as a slave in ALSA to get the softvol amp to work, and I have no idea how to route the default audio device to it when PulseAudio is running anyways.

Any help is appreciated, thank you.

  • According to your description you did not try pavucontrol to see the volume setting of sources and sinks? – ridgy Jan 02 '18 at 09:47
  • I tried pavucontrol. My sources/sinks are at 100%. It does produce audio, its just quieter than I know the machine is capable of. –  Jan 02 '18 at 13:52
  • What are your keyboard keys working on? Usually, they only work on the default sink, so you could increase the source volume without being affected by the volume keys. – ridgy Jan 02 '18 at 16:11
  • There is another possibility: Activate simultaneous output in pulseaudio, even if you only have one output device, and set the new sink as default device. The volume keys now only affect the virtual device; you may increase the volume on the physical device which then should be kept.. – ridgy Jan 02 '18 at 16:18
  • Keys are tied to one of my sinks. I tried pacmd set-source-volume 0 100% to set the source volume, but it had no effect. The simultaneous input trick did work though :) I just had to add pacmd set-default-sink combined to my ~/.bash_profile so that applications used the virtual sink.

    I'm still very curious about getting it done with ALSA, but this works for now. Thanks ridgy!

    –  Jan 03 '18 at 03:16
  • Well, your source volume already was at 100%, according to your post. So you would have to increase it to more than that (might try with pavucontrol, but only for the source active). I don't know a way to increase volumes with ALSA to more than 100%; think it is not possible. – ridgy Jan 03 '18 at 12:07
  • Right, I forgot to include that I tried pacmd set-source-volume 0 150% and pacmd set-source-volume 0 10% as well, no effect with either. Changing the source index (though I'm sure it was 0 based on pacmd source-list) also didn't do anything. –  Jan 03 '18 at 12:39

1 Answers1

0

The terms source, sink, and client have to be distinguished clearly. You can best see that in pavucontrol:

  • In the rightmost tab (Configuration), you set the profiles for the hardware (source, sink, both, #channels etc.)
  • in the fourth tab (Input Devices), you define the sources and their volumes, which are hardware sources as well as virtual sources and monitors of sinks
  • in the third tab (Output devices), you define the sinks and their volumes and maybe some other options, which are hardware sinks as well as virtual ones.

The volumes and other properties shown here may be set using pacmd or pactl. Setting source volume means setting the volume of (hardware or virtual) input devices (like microphone or monitors), not the volume of the running applications.

These are called "clients" in the terminology of PA and set in the first tab (Playback), where you are able to set the desired sink and volume for each running application separately. This is application and user specific and thus stored in a database in ~/.config/pulse/<something>-stream-volumes.tdb. You might look at that information with tdbdump, but there is not much to see.

So pavucontrol(which is just another client) remembers this information for the next start of the client. But you cannot modify that with pacmd or pactl, which are clients for the configuration of the server itself. From the command line you may only use paplay to set sink and volume of itself.

As the module for the simultaneous output is sortof a client as well (a virtual stream), which connects an application stream to more than one sink, you may handle that like other streams, and it will be saved in the above mentioned tdb. You might use any module that works similar, but this one is preconfigered and the simplest one I know. You may test the behaviour when logging in as different user; you will have to set the volume again.

isherwood
  • 105
ridgy
  • 2,356