This wiki was updated to MediaWiki 1.37. If you notice any issues, please report them to admin[at]opensuse.org

openSUSE:Pipewire

Jump to: navigation, search
PipeWire Is a graph-based audio system developed by Wim Taymans, as part of the GNOME project. It's designed to work with devices from containers and flatpak applications. It aims to work alongside Wayland as audio system on top of ALSA

Usage

PipeWire is a system that works on top of the ALSA kernel infrastructure like PulseAudio or JACK. The daemon also offers compatibility layers for PulseAudio and JACK-based applications.

Installation

PipeWire is available from the main openSUSE repositories as pipewire and can be executed in a local environment as

pipewire -n name

to execute the daemon with the name name (the -n option can be omitted, it will default to pipewire-0) Otherwise, it is possible to enable pipewire via systemd using:

systemctl --user enable --now pipewire.socket # or pipewire.service
systemctl --user enable --now wireplumber.service

The socket activation only starts the service when required, which is usually sufficient. Alternatively the user service can be always started when the user logs in by replacing pipewire.socket with pipewire.service.

Then restart the machine or start the services manually with

systemctl --user start pipewire.service
systemctl --user start wireplumber.service

{{Info|Flatpak includes PipeWire as a recommended package, during an update with recommends on it is possible that pipewire was already installed.

Tools

Additionally, pipewire-tools is available. This package contains many tools to use PipeWire.

pw-cat includes a collection of tools to play and record media using PipeWire natively. pw-play and pw-midiplay to play audio and MIDI files, pw-record and pw-recordmidi to record raw audio and MIDI data.

pw-cli Is a command line interface (CLI), it loads and removes modules, lists objects and devices in the instance, connects to and interacts with a remote instance of PipeWire-managed nodes and links.

pw-dot prompts the PipeWire graph in a .dot-formatted file. It can be read with

pw-dot file.dot
dot -Tpng file.dot -o output.png

pw-dump does the same as pw-dot, but it prompts in the standard output instead of a file.

pw-mon is a monitor for PipeWire, in monitor objects in a pipewire instance.

pw-mon

pw-profiler: with the profiler module loaded, connect and log the data from a local/remote instance. This program can be executed as

pw-profiler -o name

the option -o is optional and by default the program outputs to profiler.log.

When the program is stopped, it uses gnuplot to generate an .svg file alongside an .html to better view the profile from a browser.

PulseAudio and JACK compatibility

Warning: These compatibility packages are in conflict with PulseAudio and JACK, all the packages that have these two as dependencies can be forcefully installed on the system and they will just work but it can create dependencies issues during updates or on the long run if dependencies change

PipeWire can replace PulseAudio and JACK. The packages pipewire-pulseaudio or pipewire-jack will install compatibility libraries in place of the ones used by PulseAudio and JACK.

These programs have to be started as daemons, so execute

pipewire-pulse # or
systemctl --user enable --now pipewire-pulse.{service,socket}

for PulseAudio, and

pipewire-jack

for JACK.

Is possible to install PulseAudio mixers and software with the compatibility library installed, but the installation have to be forced, because these tools require PulseAudio as dependency which is blocked because of a package conflict.

Example: Pavucontrol

Is possible to install and use pavucontrol on top of pipewire instead of pulseaudio. To install the program use

zypper in --force pipewire-pulseaudio

Or

zypper in pipewire-pulseaudio

Select the third option (install anyway breaking the dependency) when zypper prompts the dependency problem.

Then start pipewire and pipewire-pulse if not already started and execute pavucontrol.

The mixer will detect the various sources and devices connected.

How to disable PipeWire?

To use plain ALSA do

systemctl --user disable --now pipewire.{socket,service}
rm /etc/alsa/conf.d/99-pipewire-default.conf /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf

and to get it back later, do

zypper in -f pipewire
systemctl --user enable --now pipewire.{socket,service}