You are not logged in.
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-volumeor 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-stereoIt 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
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
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 ![]()
Offline