Pipewire
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
PipeWire 🇬🇧 ist u.a. ein Soundserver, der PulseAudio ersetzt. In Sachen Effizienz, Geschwindigkeit und Routing ist er PulseAudio (das als Ressourcen-Fresser berüchtigt ist) überlegen. PipeWire kümmert sich nicht nur um Audiostreams, sondern auch um (dazugehörige) Videostreams. Vom Datenfluss her sitzt PipeWire zwischen den abspielenden oder aufnehmenden Programmen (Video- und Audioplayer) und der Übergabe der Daten an die Kernelmodule (gerne auch "Treiber" genannt). Dabei ist PipeWire äußerst flexibel einsetzbar und bietet viele Schnittstellen direkt an, zum Beispiel ins Netzwerk, zu Bluetooth (mittels Bibliotheken), aber natürlich auch zu ALSA und jack. Es hat sogar das Potential, jack komplett zu ersetzen, da es ebenfalls mit sehr niedrigen Latenzen arbeiten kann.
Überblick: PipeWire und das Linux Sound System¶
Das Soundsystem in Linux ist aus mehreren Komponenten zusammengesetzt. Zuunterst liegt die Treiberschicht ALSA („Advanced Linux Sound Architecture“), die direkt mit der Hardware interagiert. Auf deren Schnittstellen greift ein Soundserver im Userspace zu, also ehemalig PulseAudio oder jack. Diese Soundserver stellen einheitliche Schnittstellen für Anwendungen zur Kommunikation mit dem Treiber bereit. Allerdings lassen sich diese Soundserver nicht kombinieren, außer durch den Einsatz einer PulseAudio-JACK-Brücke, was je nach JACK-Konfigurationsprogramm unterschiedlichen Erfolg haben kann.
Das Multimedia-Framework PipeWire soll dafür Abhilfe schaffen, da es sowohl für PulseAudio-Applikationen als auch für solche, die jack benötigen, Schnittstellen bereitstellt. Es ersetzt also gewissermaßen jack und PulseAudio. Weiterhin lassen sich vormals konkurrierende Anwendungen nun parallel nutzen und ihre Kanäle verbinden.
Aufbau von PipeWire¶
Grundsätzlich wird der Datenstrom vom PipeWire Daemon 🇬🇧 geregelt, der mit dem Kernel und den Anwendungen kommuniziert. Zu den Anwendungen gehören etwa der Session Manager 🇬🇧, bspw. Wireplumber, aber auch Audio-Software wie Ardour oder Media-Player wie Totem. Siehe dazu auch die nebenstehende Abbildung
Außerdem stellt PipeWire eine Reihe von Werkzeugen 🇬🇧 bereit, mit deren Hilfe man mit dem Dienst interagieren kann. Dazu gehören die Neuimplementationen der PulseAudio- und Jack-Server ebenso wie etwa pw-cat 🇬🇧, das das Mitschneiden von Audiostreams auf dem PipeWire-Server ermöglicht.
Der PipeWire-Dienst stützt sich schließlich auf die Simple Plugin 🇬🇧 API, durch die PipeWire und seine Anwendungen mit den Plugins 🇬🇧 umgehen können. Diese sind Bibliotheken, sog. Shared objects, die während der Laufzeit eingebunden werden können.
Installation¶
Ab Ubuntu 22.10, jedoch nicht in dessen Flavours, wird PipeWire standardmäßig 🇬🇧 als Soundserver eingesetzt, muss also nicht nachinstalliert werden. In Ubuntu 22.04 ist PipeWire bereits enthalten, bleibt jedoch zugunsten von PulseAudio deaktiviert.
Bis einschließlich Ubuntu 20.04 muss eine Fremdquelle hinzugefügt werden.
Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
deb ppa:pipewire-debian/pipewire-upstream
Anschließend kann das Paket pipewire
installiert werden, zusätzlich mit dem PipeWire-Server 🇬🇧 und einigen Bibliotheken zur Benutzung von PipeWire mit Bluetooth, JACK und GStreamer:
pipewire (universe)
pipewire-pulse (universe)
gstreamer1.0-pipewire (universe)
libspa-0.2-bluetooth (universe)
libspa-0.2-jack (universe)
pipewire-audio-client-libraries (universe, JACK-Implementierung)
Befehl zum Installieren der Pakete:
sudo apt-get install pipewire pipewire-pulse gstreamer1.0-pipewire libspa-0.2-bluetooth libspa-0.2-jack pipewire-audio-client-libraries
Oder mit apturl installieren, Link: apt://pipewire,pipewire-pulse,gstreamer1.0-pipewire,libspa-0.2-bluetooth,libspa-0.2-jack,pipewire-audio-client-libraries
Konfiguration¶
PipeWire mit PulseAudio¶
Um PipeWire in Ubuntu-Versionen bis einschließlich 22.04 aktiv zu nutzen, muss PulseAudio im Gegenzug deaktiviert werden. Folgendermaßen ist die Vorgehensweise:
Zuerst muss der Systemctl-Dienst neu geladen werden:
systemctl --user daemon-reload
Anschließend wird PulseAudio deaktiviert:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
Nur für Ubuntu 20.04: PulseAudio muss zusätzlich maskiert werden:
systemctl --user mask pulseaudio
Nun kann PipeWire aktiviert werden:
systemctl --user --now enable pipewire{,-pulse}.{socket,service}
Nun kann mittels pactl
kontrolliert werden, ob PipeWire läuft:
$ pactl info | grep -i "Server Name" Server Name: PulseAudio (on PipeWire 0.3.60)
Bedienung¶
Da PipeWire eine eigene PulseAudio-Implementierung mitbringt, funktionieren die meisten Kommandozeilen-Befehle aus dem Paket pulseaudio-utils für die Bedienung von PulseAudio. Siehe eine Liste 🇬🇧 für die empfohlenen Befehle. Zum Migrieren vorhandener Einstellungen von PulseAudio nach PipeWire siehe diese Anleitung 🇬🇧.
Die Konfigurationsdatei für die PulseAudio-Implementation findet sich systemweit unter /usr/share/pipewire/pipewire-pulse.conf. Alternativ kann die Datei nach ~/.config/pipewire/pipewire-pulse.conf kopiert und dort userspezifisch bearbeitet werden.
Damit lassen sich unter anderem Einstellungen für Audio- und Video-Streams und Autostart-Aktionen treffen. Ab Version 0.3.45 lassen sich auch Abschnitte der Datei nach /usr/share/pipewire/pipewire-pulse.conf.d bzw. den Äquivalent im Homeverzeichnis kopieren.
PipeWire mit JACK¶
PipeWire ist eine vollständige Implementation eines JACK-Servers. Normalerweise läuft es über einen Session Manager und einen PulseAudio-kompatiblen Server, es lässt sich aber auch eine nativer JACK-Server benutzen, auf dem Applikationen wie Ardour laufen können. Details zur Aufsetzung des Servers finden sich in der Dokumentation 🇬🇧.
Für die Konfigurationsdateien gelten die gleichen Pfade wie bei PipeWire, nur dass die Konfigurationsdatei 🇬🇧 jack.conf heißt. Darüber kann etwa die Latenz 🇬🇧 der JACK-Applikationen gesteuert werden.
Zurzeit existiert noch ein Abhängigkeitsproblem, wobei ein zusätzliches Paket installiert werden muss. Details dazu hier 🇬🇧.
Erweiterungen¶
qpwgraph¶
Mithilfe des Werkzeugs qpwgraph 🇬🇧 (="qt-pipewire-graph") lässt sich die Arbeitsweise von PipeWire anschaulich visualisieren und Audiosignale und -kanäle von Anwendungen verdrahten bzw. umleiten. Dazu wird ein GUI mit Drag & Drop Funktion bereitgestellt.
Das Programm ist auch in den offiziellen Paketquellen enthalten:
qpwgraph (main)
Befehl zum Installieren der Pakete:
sudo apt-get install qpwgraph
Oder mit apturl installieren, Link: apt://qpwgraph
WirePlumber¶
WirePlumber 🇬🇧 ist ein Session-Manager für PipeWire, der die Verbindungen zwischen Geräten und Anwendungen verwaltet und die dafür benötigten Komponenten lädt. Konfigurationen werden in der Hauptkonfigurationsdatei und zusätzlichen Lua-Skripten 🇬🇧 vorgenommen. Weiterhin stellt es den Befehl wpctl
zur Verfügung.
WirePlumber ersetzt den Session-Manager pipewire-media-session, der standardmäßig von PipeWire mitinstalliert wird. Es kann aus den Paketquellen installiert werden:
wireplumber (universe ab Ubuntu 22.04)
Befehl zum Installieren der Pakete:
sudo apt-get install wireplumber
Oder mit apturl installieren, Link: apt://wireplumber
Links¶
Intern¶
Soundsystem Die Bestandteile des Linux Soundsystems
Multimedia Audio-Software
Extern¶
PipeWire für Debian 🇬🇧 - Installation und Konfiguration
Debian: PulseAudio mit PipeWire ersetzen auf linuxnews.de 🇩🇪