You are not logged in.

#1 2025-11-23 03:45:39

ermaolaoye
Member
Registered: 2025-11-23
Posts: 3

[SOLVED] PipeWire cannot adjust volume correctly

I recently installed Arch Linux on my ASUS ROG Zephyrus G14 (2025 model). I am using Pipewire with the PulseAudio compatibility layer. While the system detects my audio devices correctly, I am encountering a specific issue with volume control.

When using

wpctl set-volume

or TUI mixers (like wiremix), the volume behavior is incorrect:

  • 0%: Mutes the speaker correctly.

  • 1% - 100%: The volume level remains constant (loud). However, setting the volume lower seems to degrade the audio quality significantly (it sounds like the sampling rate or bit depth is being reduced) rather than actually lowering the volume.

I tried to use alsamixer, and discovered that adjusting the Master or Speaker channels causes the audio quality degradation described above. Only adjusting the PCM channel changes the volume perfectly without affecting audio quality.

Heres the output of pactl info

Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 93
Tile Size: 65472
Server Name: PulseAudio (on PipeWire 1.4.9)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_65_00.6.analog-stereo
Default Source: alsa_input.pci-0000_65_00.6.analog-stereo

It appears Pipewire is controlling the "Master" or "Speaker" mixer controls by default, which are broken on this specific hardware. Is there a way to configure Pipewire/WirePlumber to use the "PCM" channel for the default volume control instead? Alternatively, is there a known fix for the Master/Speaker controls on this laptop model?

Last edited by ermaolaoye (2025-11-26 07:32:43)

Offline

#2 2025-11-25 20:55:56

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

Re: [SOLVED] PipeWire cannot adjust volume correctly

The simplest way to deal with this is just configuring wireplumber to map a software mixer, which will not touch the HW mixer anymore. https://pipewire.pages.freedesktop.org/ … ft%2Dmixer

So for your case e.g. ~/.config/wireplumber/wireplumber.conf.d/99-alsasoftvol.conf

monitor.alsa.rules = [
  {
    matches = [
      {
        # This matches the value of the 'device.name' property of the ve to device.
        # Might have adjust to the actual device name you see in a pactl list cards, but this "should" match
        device.name = "~alsa_card.pci-0000_65_00.6.*"
      }
    ]
    actions = {
      update-props = {
        api.alsa.soft-mixer = true
      }
    }
  }
]

technically there are ways to try and coerce pipewire/wireplumber to only touch the PCM and not try to aggregate the single mixers according to the internal logic, but this is the much simpler approach with the same ultimate end result.

Last edited by V1del (2025-11-25 20:58:10)

Offline

#3 2025-11-26 05:48:15

ermaolaoye
Member
Registered: 2025-11-23
Posts: 3

Re: [SOLVED] PipeWire cannot adjust volume correctly

V1del wrote:

The simplest way to deal with this is just configuring wireplumber to map a software mixer, which will not touch the HW mixer anymore. https://pipewire.pages.freedesktop.org/ … ft%2Dmixer

So for your case e.g. ~/.config/wireplumber/wireplumber.conf.d/99-alsasoftvol.conf

monitor.alsa.rules = [
  {
    matches = [
      {
        # This matches the value of the 'device.name' property of the ve to device.
        # Might have adjust to the actual device name you see in a pactl list cards, but this "should" match
        device.name = "~alsa_card.pci-0000_65_00.6.*"
      }
    ]
    actions = {
      update-props = {
        api.alsa.soft-mixer = true
      }
    }
  }
]

technically there are ways to try and coerce pipewire/wireplumber to only touch the PCM and not try to aggregate the single mixers according to the internal logic, but this is the much simpler approach with the same ultimate end result.


Thanks! The software mixer works absolutly fine. Have a nice day smile

Offline

Board footer

Powered by FluxBB