You are not logged in.
Hi all,
Previously, PulseAudio had been working on my laptop, but I have heard that PipeWire is recommended so wanted to switch to it instead. I uninstalled the PulseAudio packages, removed the services, installed the PipeWire packages (may have already had some as dependencies), and enabled the services. I also restarted my laptop. However, it seems like the sound is not working. Any call to pactl, wpctl, or the audio interface in general (playing music, etc) seems to just entirely freeze. Apologies in advance, as I am not very familiar with the workings of sound cards/firmware. I am not too certain what is causing this, any help would be greatly appreciated!
In case it helps debug: In Alsamixer if I select the default (PipeWire) sound card it says "This sound device does not have any controls.". If I select a HDA Nvidia one I can see that it is unmuted (OO), but there is no volume indication, etc. If I select HD-Audio Generic I can see the usual volume indications. I may have also tried to run the commands pipewire and wireplumber myself at some stage, which I have seen now is not recommended. Unfortunately, it will be difficult to uninstall and reinstall WirePlumber without risking breaking a number of packages that rely on it. I have also ran a system update, and recently installed sof-firmware, as another post recommended it.
$ pactl info
Connection failure: TimeoutThe following commands also hang with no output
$ strace -f -o /tmp/wpctl.strace wpctl status
$ wpctl statussudo fuser -v /dev/snd/* has no output (although it doesn't hang).
$ systemctl --user status wireplumber pipewire{,-pulse,-jack}
Unit pipewire-jack.service could not be found.
● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-06 11:54:22 GMT; 4min 57s ago
Invocation: b1df708d66554ab6aa6a6bbd002447ea
Main PID: 3886 (wireplumber)
Tasks: 6 (limit: 18736)
Memory: 3.8M (peak: 5.4M)
CPU: 24ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─3886 /usr/bin/wireplumber
Dec 06 11:54:22 Arch systemd[3870]: Started Multimedia Service Session Manager.
Dec 06 11:54:22 Arch wireplumber[3886]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3886]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3886]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3886]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-06 11:54:22 GMT; 4min 57s ago
Invocation: 6b8e589ef5a74c1ca0c68328df22899c
TriggeredBy: ● pipewire.socket
Main PID: 3885 (pipewire)
Tasks: 9 (limit: 18736)
Memory: 6.2M (peak: 8.3M)
CPU: 62ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
├─3885 /usr/bin/pipewire
└─3901 /usr/bin/wireplumber
Dec 06 11:54:22 Arch pipewire[3885]: pw.context: vm.overrides in context.properties are deprecated, use context.properties.rules instead
Dec 06 11:54:22 Arch pipewire[3904]: mod.protocol-pulse: server 0x5584e72cef90: socket '/run/user/1000/pulse/native' is in use
Dec 06 11:54:22 Arch pipewire[3904]: mod.protocol-pulse: pulse-server 0x5584e72cf0a0: failed to start server on 'unix:/run/user/1000/pulse/native': Address already in use
Dec 06 11:54:22 Arch pipewire[3904]: mod.protocol-pulse: 0x5584e72cf0a0: no servers could be started: Address already in use
Dec 06 11:54:22 Arch pipewire[3904]: pw.conf: 0x5584e72a3870: could not load mandatory module "libpipewire-module-protocol-pulse": Address already in use
Dec 06 11:54:22 Arch pipewire[3904]: default: failed to create context: Address already in use
Dec 06 11:54:22 Arch wireplumber[3901]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3901]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3901]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 06 11:54:22 Arch wireplumber[3901]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-06 11:54:22 GMT; 4min 57s ago
Invocation: 90d51c87652f4c3b9d1a178c00f46b1b
TriggeredBy: ● pipewire-pulse.socket
Main PID: 3888 (pipewire-pulse)
Tasks: 3 (limit: 18736)
Memory: 2.8M (peak: 3.3M)
CPU: 15ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
└─3888 /usr/bin/pipewire-pulse
Dec 06 11:54:22 Arch systemd[3870]: Started PipeWire PulseAudio.$ pacman -Qs 'wireplumber|pulse|pipewire'
local/lib32-libpipewire 1:1.4.9-1
Low-latency audio/video router and processor - 32-bit - client library
local/lib32-pipewire 1:1.4.9-1
Low-latency audio/video router and processor - 32-bit
local/libcanberra 1:0.30+r2+gc0620e4-6
A small and lightweight implementation of the XDG Sound Theme Specification
local/libcec 7.1.1-1
Pulse-Eight's libcec for the Pulse-Eight USB-CEC adapter
local/libpipewire 1:1.4.9-2
Low-latency audio/video router and processor - client library
local/libpulse 17.0+r93+gbe2efb69b-1
A featureful, general-purpose sound server (client library)
local/libwireplumber 0.5.12-1
Session / policy manager implementation for PipeWire - client library
local/libwireplumber-4.0-compat 0.4.17-2
Compatibility version 4.x of libwireplumber - client library
local/pipewire 1:1.4.9-2
Low-latency audio/video router and processor
local/pipewire-alsa 1:1.4.9-2
Low-latency audio/video router and processor - ALSA configuration
local/pipewire-audio 1:1.4.9-2
Low-latency audio/video router and processor - Audio support
local/pipewire-jack 1:1.4.9-2
Low-latency audio/video router and processor - JACK replacement
local/pipewire-pulse 1:1.4.9-2
Low-latency audio/video router and processor - PulseAudio replacement
local/wireplumber 0.5.12-1
Session / policy manager implementation for PipeWire$ aplay -lL
null
Discard all samples (playback) or generate zero samples (capture)
lavrate
Rate Converter Plugin Using Libav/FFmpeg Library
samplerate
Rate Converter Plugin Using Samplerate Library
speexrate
Rate Converter Plugin Using Speex Resampler
jack
JACK Audio Connection Kit
oss
Open Sound System
pipewire
PipeWire Sound Server
pulse
PulseAudio Sound Server
speex
Plugin using Speex DSP (resample, agc, denoise, echo, dereverb)
upmix
Plugin for channel upmix (4,6,8)
vdownmix
Plugin for channel downmix (stereo) with a simple spacialization
default
Default ALSA Output (currently PipeWire Media Server)
hdmi:CARD=NVidia,DEV=0
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
HDA NVidia, HDMI 1
HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
HDA NVidia, HDMI 2
HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
HDA NVidia, HDMI 3
HDMI Audio Output
usbstream:CARD=NVidia
HDA NVidia
USB Stream Output
sysdefault:CARD=Generic
HD-Audio Generic, ALC257 Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
Front output / input
surround21:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
HD-Audio Generic, ALC257 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
usbstream:CARD=Generic
HD-Audio Generic
USB Stream Output
****List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC257 Analog [ALC257 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0And here is my xprofile file
#!/bin/sh
xrandr --dpi 96
setbg &
xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$! # Uncomment to use Xresources colors/settings on startup
autostart="xcompmgr dunst unclutter pipewire remapd"
for program in $autostart; do
pidof -sx "$program" || "$program" &
done >/dev/null 2>&1
# Ensure that xrdb has finished running before moving on to start the WM/DE.
[ -n "$xrdbpid" ] && wait "$xrdbpid"Last edited by tester2080 (2025-12-15 11:04:09)
Offline
Get rid of trying to start pipewire yourself, that conflicts with the service/socket invocation that the user session will setup, and most likely be on a different DBUS scope, speaking of which, what does your .xinitrc look like and make sure you've seen the second blue note in https://wiki.archlinux.org/title/Xinit#xinitrc -- but seeing that the systemctl --user command works fine I'd assume this is setup correctly.
Last edited by V1del (2025-12-06 16:29:44)
Offline
Hi V1del,
Apologies for the delayed response. I have removed the call to pipewire from my xprofile file now. Previously, my xinitrc was missing the call to source the xinitrc.d scripts. However, I have now added this to my xinitrc as per the second blue note. Unfortunately, despite restarting (and updating again) I am running into the same problem. Below are the results of the calls now, alongside my personal xinit configs.
$ pactl info
Connection failure: Timeout
$ strace -f -o /tmp/wpctl.strace wpctl status
^C
$ wpctl status
^CUnit pipewire-jack.service could not be found.
● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-13 18:41:05 GMT; 20min ago
Invocation: 6ba2b29783dd4c5486233e310d446689
Main PID: 1362 (wireplumber)
Tasks: 6 (limit: 18736)
Memory: 4.6M (peak: 5.6M)
CPU: 44ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─1362 /usr/bin/wireplumber
Dec 13 18:41:05 Arch systemd[1346]: Started Multimedia Service Session Manager.
Dec 13 18:41:05 Arch wireplumber[1362]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1362]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1362]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1362]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-13 18:41:05 GMT; 20min ago
Invocation: 3b88d11d0c3c47e9930232ef53702d4e
TriggeredBy: ● pipewire.socket
Main PID: 1361 (pipewire)
Tasks: 9 (limit: 18736)
Memory: 9M (peak: 9.3M)
CPU: 71ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
├─1361 /usr/bin/pipewire
└─1377 /usr/bin/wireplumber
Dec 13 18:41:05 Arch pipewire[1361]: pw.context: vm.overrides in context.properties are deprecated, use context.properties.rules instead
Dec 13 18:41:05 Arch pipewire[1379]: mod.protocol-pulse: server 0x560c79d75f90: socket '/run/user/1000/pulse/native' is in use
Dec 13 18:41:05 Arch pipewire[1379]: mod.protocol-pulse: pulse-server 0x560c79d760a0: failed to start server on 'unix:/run/user/1000/pulse/native': Address already in use
Dec 13 18:41:05 Arch pipewire[1379]: mod.protocol-pulse: 0x560c79d760a0: no servers could be started: Address already in use
Dec 13 18:41:05 Arch pipewire[1379]: pw.conf: 0x560c79d4a870: could not load mandatory module "libpipewire-module-protocol-pulse": Address already in use
Dec 13 18:41:05 Arch pipewire[1379]: default: failed to create context: Address already in use
Dec 13 18:41:05 Arch wireplumber[1377]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1377]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1377]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
Dec 13 18:41:05 Arch wireplumber[1377]: wp-event-dispatcher: wp_event_dispatcher_unregister_hook: assertion 'already_registered_dispatcher == self' failed
● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-12-13 18:41:05 GMT; 20min ago
Invocation: 8edc1d360c7e4d05af4002235ae15eb0
TriggeredBy: ● pipewire-pulse.socket
Main PID: 1363 (pipewire-pulse)
Tasks: 3 (limit: 18736)
Memory: 2.6M (peak: 3.2M)
CPU: 28ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
└─1363 /usr/bin/pipewire-pulse
Dec 13 18:41:05 Arch systemd[1346]: Started PipeWire PulseAudio.personal xinitrc:
#!/bin/sh
echo "Using ~/.config/x11/xinitrc" > /tmp/which-xinitrc
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" ]; then
. "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile"
else
. "$HOME/.xprofile"
fi
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
ssh-agent dwm/etc/x11/xinit/xinitrc:
#!/bin/sh
userresources=$HOME/.config/x11/xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
xrdb -merge /$HOME/.config/x11/xresources
#if [ -f $userresources ]; then
#xrdb -merge $userresources
#fi
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"
fi
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name loginIn my /etc/x11/xinit/xinitrc.d I just have the following. They don't seem to do anything too fancy.
$ cat /etc/X11/xinit/xinitrc.d/*
#!/bin/sh
case "${DESKTOP_SESSION-}" in
gnome*) # Done by gnome-settings-daemon
;;
*)
# Extra check in case DESKTOP_SESSION is not set correctly
if [ -z "${GNOME_DESKTOP_SESSION_ID-}" ]; then
GTK_MODULES="${GTK_MODULES:+$GTK_MODULES:}canberra-gtk-module"
export GTK_MODULES
fi
;;
esac
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
systemctl --user import-environment DISPLAY XAUTHORITY
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
dbus-update-activation-environment DISPLAY XAUTHORITY
fi
#!/bin/bash
# This file is sourced by xinit(1) or a display manager's Xsession, not executed.
if [ -z "$GTK3_MODULES" ] ; then
GTK3_MODULES="xapp-gtk3-module"
else
GTK3_MODULES="$GTK3_MODULES:xapp-gtk3-module"
fi
export GTK3_MODULESOffline
systemctl --user list-units
fuser -v /run/user/1000/pulse/native
ps aux | grep -iE '(pulse|wire)'Offline
Found the issue. `systemctl --user list-units` did show two instances of pipewire and the socket for it. Grepped my ~/.config dir just to make sure nothing else was manually calling it on startup or anything and discovered the following at the bottom of my pipewire.conf file was uncommented:
context.exec = [
#{ path = <program-name> [ args = "<arguments>" ] }
#
# Execute the given program with arguments.
#
# You can optionally start the session manager here,
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
{ path = "/usr/bin/wireplumber" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
# It can be interesting to start another daemon here that listens
# on another address with the -a option (eg. -a tcp:4713).
#
{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
]Not certain why these lines were uncommented (can't remember if this was done by default or if I had changed it years ago for some reason), but after commenting them and rebooting, sound now works. Thanks very much for the help! Marking as solved.
Offline
Files in .config aren't mandatory to exist and definitely not with these contents assuming you want the user session to manage both of these.
Offline