You are not logged in.

#1 2025-12-06 12:31:05

tester2080
Member
Registered: 2021-08-08
Posts: 13

[SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

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: Timeout

The following commands also hang with no output

$ strace -f -o /tmp/wpctl.strace wpctl status

$ wpctl status

sudo 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 #0

And 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

#2 2025-12-06 16:25:17

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

Re: [SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

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

#3 2025-12-13 19:09:34

tester2080
Member
Registered: 2021-08-08
Posts: 13

Re: [SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

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
^C
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-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 login

In 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_MODULES

Offline

#4 2025-12-15 00:13:57

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 71,585

Re: [SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

systemctl --user list-units
fuser -v /run/user/1000/pulse/native
ps aux | grep -iE '(pulse|wire)'

Offline

#5 2025-12-15 11:03:14

tester2080
Member
Registered: 2021-08-08
Posts: 13

Re: [SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

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

#6 2025-12-16 17:11:44

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

Re: [SOLVED] Sound does not work with PipeWire - pactl and wpctl hang

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

Board footer

Powered by FluxBB