-
Notifications
You must be signed in to change notification settings - Fork 2
PipeWire system mode
To use PipeWire in system mode, rather than user mode, it is required to use custom systemd units and change some default settings in WirePlumber.
- Give the
pipewireuser on your system a home directory!! THIS IS REQUIRED TO STORE DATA!usermod -d /var/lib/pipewire pipewire - Install the relevant PipeWire and WirePlumber systemd units found in the backups/systemd-units directory of this repository.
- Copy
pipewire.conf,pipewire-pulse.confandclient.conffrom/usr/share/pipewire/to/etc/pipewire/and adjust the options to your preferences. - Disable the modules
libpipewire-module-x11-bellandlibpipewire-module-portal. They are not relevant for system mode and don't work anyway. - Make the following changes to these files:
-
/etc/wireplumber/main.lua.d/50-default-access-config.lua=>["enable-flatpak-portal"] = false -
/etc/wireplumber/main.lua.d/50-alsa-config.lua=>["alsa.reserve"] = false -
/etc/wireplumber/bluetooth.lua.d/50-bluez-config.lua=>["with-logind"] = false
-
These settings don't work in system mode, and WirePlumber will complain with cryptic error messages during startup.
- Enable and start the
pipewire.service,pipewire-pulse.serviceandwireplumber.servicesystemd units (as root). Permissions are automatically dropped to thepipewireuser and group. If everything worked correctly, you should see 3 processes running aspipewireuser on your system.
$ ps -u pipewire
PID TTY TIME CMD
1313473 ? 00:01:21 pipewire-pulse
1313492 ? 00:00:03 pipewire
1313493 ? 00:04:48 wireplumber
Change the default-server option in /etc/pulse/client.conf to /var/run/pipewire/native and disable autospawn. If you previously used PulseAudio in system mode, you should already have autospawn disabled. A PulseAudio system mode systemd unit file can be found in the backups/systemd-units directory for reference.
Add all users which should be able to use audio to the pipewire group to give them read/write access to the pipewire-0 socket.
usermod -a -G pipewire your_user
Test if you have access to PipeWire by running pw-dump, wpctl status and pactl list (for PulseAudio compatibility). If you did everything correctly, applications with PipeWire audio output should be able to play audio.