You are not logged in.

#1 2025-02-23 15:24:56

wkd
Member
Registered: 2016-04-04
Posts: 30

Any way to stop pipewire from messing with alsamixer levels?

Alsa stores and restores my mixer levels as expected and after a reboot they're at the proper levels. However whenever any client tries to play a sound via pipewire the levels in alsamixer are reset to values that don't make any sense. Running alsactl restore once more brings them back to the desired levels and pipewire leaves them alone until I play another sound after the next reboot.
I assume alsactl and pipewire are competing somehow. Is there a way to disable this behavior?

Offline

#2 2025-02-23 15:50:39

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 24,960

Re: Any way to stop pipewire from messing with alsamixer levels?

Set them within pipewire/pulseaudio/pactl/pavolume and pipewire (actually wireplumber) will remember and set them to the remembered values. That should be the preferred option as that will also work for logical inferences, like headphone vs speaker setups and the like. you should not use alsamixer when dealing with pipewire/pulseaudio as that will lead to this discrepancy

If that doesn't stick and you really want to not do that configure wireplumber to apply a soft mixer to all ALSA devices with e.g. /etc/wireplumber/wireplumber.conf.d/10-softvol.conf

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "~alsa_card.*"
      }
    ]
    actions = {
      update-props = {
         api.alsa.soft-mixer = true
      }
    }
  }

Offline

#3 2025-02-23 16:10:38

wkd
Member
Registered: 2016-04-04
Posts: 30

Re: Any way to stop pipewire from messing with alsamixer levels?

How would I set the mixer levels within pipewire/pulseaudio/pactl/pavolume or wireplumber? I'm looking into wpctl but I can only adjust the master channel of my card.
To be clear pipewire will drop the volume of all other channels to inaudible levels so adjusting the master channel doesn't really do much. I want those to be at a reasonable level.

Edit: I feel like I've tried everything and can't find any tool for either pipewire/wireplumber or pulse that lets me adjust the volume for a channel other than master. I created the /etc/wireplumber/wireplumber.conf.d/10-softvol.conf as shown but this does nothing to change the behavior. Wireplumber still hijacks my mixer levels after each reboot. If I knew where these nonsensical mixer values were stored I could just delete that file.

So i tried to delete "corrupt settings"
https://wiki.archlinux.org/title/WirePl … t_settings
As soon as wireplumber is restarted it again hijacks my mixers and sets them to inaudible values.

Last edited by wkd (2025-02-23 17:16:00)

Offline

Board footer

Powered by FluxBB