Running the WirePlumber daemon
Systemd
WirePlumber comes with a systemd unit, wireplumber.service
, which should
be enabled on your user session:
$ systemctl --user --now enable wireplumber
Note
On non-systemd systems, you just need to ensure that wireplumber is started after pipewire.
Run from the PipeWire source tree
PipeWire’s build system comes with an option to build WirePlumber together with PipeWire and allows executing them together without installing either of them.
To make this work, configure PipeWire with the
-Dsession-managers="[ 'wireplumber' ]"
option on the meson command line.
When compiling PipeWire, the build system will now also clone and compile WirePlumber as a subproject.
To execute the whole stack without installing, simply execute make run
after compiling.
Synopsis:
$ meson -Dsession-managers="[ 'wireplumber' ]" build
$ ninja -C build
$ make run
Run independently or without installing
If you wish to debug WirePlumber, it may be useful to run it separately from PipeWire or run it directly from the source tree without installing. To do so:
Ensure that neither WirePlumber nor pipewire-media-session are running or started together with PipeWire
If any of those is started by systemd,
Stop the relevant systemd service,
wireplumber.service
orpipewire-media-session.service
Disable that service as well if you intend to restart PipeWire (so that the session manager is not restarted with it)
If any of those is started from pipewire.conf,
Kill it, in order to stop it temporarily:
killall wireplumber
orkillall pipewire-media-session
Comment out with
#
the relevant{ path = "..." args = "" }
line from thecontext.exec
section inpipewire.conf
, if you intend to restart PipeWireEnsure that PipeWire is running
Without stopping PipeWire, run WirePlumber.
if it is installed, execute
wireplumber
if it is not installed, execute
make run
in the source tree, or use thewp-uninstalled.sh
script:$ ./wp-uninstalled.sh wireplumber
Replacing pipewire-media-session
Older versions of PipeWire used to be distributed with an example session manager (pipewire-media-session) that you needed to disable and replace with WirePlumber.
Warning
These instructions are only relevant to older versions of PipeWire
systemd
In most cases, pipewire-media-session
is started by a systemd service unit,
pipewire-media-session.service
.
To switch to WirePlumber, you will first need to disable that service:
$ systemctl --user --now disable pipewire-media-session
… and then, enable and use wireplumber.service
in its place:
$ systemctl --user --now enable wireplumber
pipewire.conf
On some systems, pipewire-media-session
is not started by systemd, but it
is started by pipewire itself via a configuration option in pipewire.conf
To switch to wireplumber, you will need to edit
/etc/pipewire/pipewire.conf in an existing installation or
src/daemon/pipewire.conf.in in the PipeWire git tree
and change the appropriate line in the exec
section:
--- /etc/pipewire/pipewire.conf.bak
+++ /etc/pipewire/pipewire.conf
@@ -204,7 +204,7 @@ context.exec = [
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
- #{ path = "/usr/bin/pipewire-media-session" args = "" }
+ { path = "wireplumber" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
index bbafa134..16ef687b 100644
--- a/src/daemon/pipewire.conf.in
+++ b/src/daemon/pipewire.conf.in
@@ -220,7 +220,7 @@ context.exec = [
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
- @comment@{ path = "@media_session_path@" args = "" }
+ { path = "wireplumber" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
This setup assumes that WirePlumber is installed on the target system.