Debian: PulseAudio mit PipeWire ersetzen

Debian Swirl
PipeWire Debian
Bild: Fedora

In den nächsten Monaten und Jahren wird unter Linux PipeWire, das neue Low-Level-Multimedia-Framework bei Audio und Video das Ruder übernehmen. Es soll Aufnahme und Wiedergabe sowohl von Audio als auch von Video mit minimaler Latenz und Unterstützung für PulseAudio-, JACK-, ALSA- und GStreamer-basierte Anwendungen bieten. Gerade hat Fedora 34 offiziell den Anfang gemacht und PipeWire als Standard bei Audio gesetzt. In einigen Bereichen wie Screen-Sharing und Remote Desktop unter Wayland war das bereits vorher der Fall.

Anwendungsszenarien

Ich habe PipeWire in Debian Sid (siduction) seit geraumer Zeit die Kontrolle übergeben und für meine Anwendungsszenarien funktioniert das recht gut. Unter Ubuntu habe ich einen kurzen Test mit ebenfalls zufriedenstellendem Ergebnis durchgeführt. Dabei starte ich in siduction KDE Plasma üblicherweise in eine Wayland-Sitzung, aber es funktioniert genauso gut unter X.org.

PipeWire kommt bei mir zum Hören von Musik über eine angeschlossene Stereo-Anlage als auch über Bluetooth-Kopfhörer, bei Videokonferenzen und am Rande auch bei Audio-Editing mit Audacious zum Einsatz. Der jetzige Stand von PipeWire erlaubt dies ohne größere Schmerzen und aus meiner Sicht nicht schlechter als PulseAudio.

Buster außen vor

In Debian Stable (Buster) hängt PipeWire mit Version 0.2.5-1 reichlich zurück, während in Testing und Unstable (sid) 0.3.19-4 und in Experimental 0.3.25-1 verfügbar sind. Fedora 34 nutzt die auch im Git vor einer Woche veröffentlichte aktuelle Version 0.3.26-1. Damit scheidet Stable wegen der zu alten Version zum aussagekräftigen Testen vermutlich aus, das habe ich aber nicht getestet. Zunächst habe ich 0.3.19-4 aus Unstable und anschließend 0.3.25-1 installiert, beide zeigten keine groben Fehler.

Pipewire selbst sollte bereits installiert sein. Falls nicht:

sudo apt update && sudo apt install pipewire

Seit PipeWire 0.3.5 sind einige Bibliotheken in dem Paket pipewire-audio-client-libraries zusammengefasst. Die Paketbeschreibung sagt darüber:

Dieses Paket enthält Client-Bibliotheken, die es Programmen, die für ALSA-, JACK- und PulseAudio-APIs entwickelt wurden erlauben, einen PipeWire-Server für die Wiedergabe und Aufnahme verwenden zu können. Sie werden standardmäßig nicht verwendet und sind derzeit als experimentell angesehen.

apt show pipewire-audio-client-libraries

Ich habe alle Warnungen in den Wind geschlagen und konnte bisher keine Probleme feststellen.

 sudo apt install pipewire-audio-client-libraries

Um Bluetooth-Funktionalität mit PipeWire zu erhalten, wird ein weiteres Paket benötigt:

sudo apt install libspa-0.2-bluetooth

Wenn Unterstützung für den Sound-Server JACK benötigt wird, dann fehlt noch:

sudo apt install libspa-0.2-jack

Soweit die benötigten Pakete, nun geht es an die Konfiguration. Folgende Schritte sind nötig, um PulseAudio durch PipeWire zu ersetzen:

# touch /etc/pipewire/media-session.d/with-pulseaudio
# cp /usr/share/doc/pipewire/examples/systemd/user/pipewire-pulse.* /etc/systemd/user/

Die folgenden drei Befehle werden als User, nicht als Root ausgeführt. Damit deaktiviert ihr PulseAudio und setzt PipeWire an seine Stelle:

systemctl --user daemon-reload
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user --now enable pipewire pipewire-pulse

Den Erfolg könnt ihr folgendermaßen überprüfen:

pactl info | grep '^Name des Servers'

Der Befehl sollte eine Zeile mit PulseAudio (on PipeWire 0.3.19) zurückgeben. Sollte dies nach einem Reboot keinen Bestand haben, muss der PulseAudio-Service maskiert werden:

systemctl --user mask pulseaudio

Darauf sollte ein weiterer Reboot folgen. Auch ALSA-Clients können für die Nutzung von PipeWire konfiguriert werden:

# touch /etc/pipewire/media-session.d/with-alsa
# cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/

Bei JACK sieht es ähnlich aus:

# touch /etc/pipewire/media-session.d/with-jack
# cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/
# ldconfig

Danach lassen sich Multimedia-Dateien über die entsprechenden Anwendungen abspielen. PipeWire wäre aber nicht Linux, wenn nicht auch die Nutzung per Terminal möglich wäre. Hierzu stehen Befehle wie pw-cat, pw-play und pw-record zur Verfügung.

Wenn etwas nicht läuft, hilft oft ein Blick auf:

systemctl --user status pipewire.service
und wenn nötig
systemctl --user restart pipewire-pulse.service

Ich habe dort einige Fehler bezüglich ALSA, die mich nicht stören und denen ich noch nicht nachgegangen bin. Bitte bedenkt: Jeder Soundchip kann unterschiedliche Ergebnisse hervorbringen, immerhin ist PipeWire noch nicht bei einer stabilen 1.0 angekommen.

Bluetooth, Flatpaks und PulseEffects

Mehr brauchte ich nicht zu tun. Meine Marshall Bluetooth-Kopfhörer waren schneller verbunden als früher. Nach der Installation des Pakets xdg-desktop-portal-kde funktioniert PipeWire auch mit Flatpaks. Bei GTK-basierten Distributionen nimmt man entsprechend xdg-desktop-portal-gtk.

Das einzige, was derzeit bei mir nicht funktioniert, ist PulseEffects, das in Version 4.8.4-1 installiert ist und eigentlich mit gstreamer1.0-pipewire laufen sollte. Ich erhalte aber ständig einen Speicherzugriffsfehler. Mittlerweile wurde für die Verwendung mit PipeWire EasyEffects als Ersatz für PulseEffects veröffentlicht.

Kommentare

11 Antworten zu „Debian: PulseAudio mit PipeWire ersetzen“

  1. Avatar von Gerrit

    Bei openSUSE TW kann man sogar PulseAudio komplett deistallieren und muss keine Kunststücke auf der Konsole machen.

    Aber Achtung: VirtualBox kommt mit PipeWire noch nicht klar. Virtuelle Maschinen haben also keinen Ton.

    1. Avatar von Stefan

      Schon ein Grund das stand heute nicht zu machen, Danke!

    2. Avatar von no one
      no one

      Das hat mir unter Fedora/Vmware geholfen: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/469#note_768518

      Konfiguriert habe ich das in /etc/pipewire/media-session.d/alsa-monitor.conf

      Zickig ist das dann zwar immer noch, aber es gibt grundsätzlich mal Audio.

  2. Avatar von Stefan

    Ich habe nur noch eine Debian Installation und bei der bin ich ziemlich konservativ (bis auf Flatpak). dennoch habe ich selbst mit Wayland noch Probleme (z.B. bei Telegram Desktop).

  3. Avatar von André
    André

    Für den allgemeinen Einsatz funktioniert pipewire bei mir schon ganz gut.

    Jedoch mein Szenario habe ich bis jetzt nicht zum Laufen bekommen.

    Mit Audacity etwaige Web-Schulungen mitzuschneiden zum Lernen usw.

    Aktuell ist wieder Pulse im Einsatz.

    Damit kann ich per pavcontrol dann Audacity entsprechend das Aufzeichnen vom Output zuweisen.

    An etwas Entsprechendes scheint in pipewire aktuell noch nicht vorgesehen zu sein oder gedacht zu werden. Denn ich finde nicht mal issues bei github dazu. 🙂

    Oder weiß einer hier wie ich das mit pipewire lösen könnte?

  4. Avatar von Moritz
    Moritz

    Verwende PipeWire schon lange. Hat sich voll gelohnt, weil ich so super einfach per Jack ein Virtuelles Audio Kabel habe

  5. Avatar von John
    John

    Auch PulseEffects 5 läuft bei mir noch nicht richtig rund mit PipeWire. Ich hatte das vor ein paar Wochen wieder durch PulseEffects 4 und PulseAudio ersetzt, weil es mich zunehmend genervt hat.

    Vor allem im Firefox hatte ich oft das Problem, dass der Ton asynchron zum Bild war (deutlich zu sehen). Manchmal fiel der Ton auch ganz aus und nach ein paar Sekunden Pause kam er dann wieder.

    1. Avatar von Ferdinand

      Naja, early days.

  6. Avatar von Markus
    Markus

    Kleine Korrektur zur Installation von Pipewire.

    Das Paket gst-device-monitor-1.0 gibt es nicht. Die Datei ist aber im Paket gstreamer1.0-plugins-base-apps enthalten.

    Also wäre der richtige Befehl zum Installieren dieser hier:

    sudo apt update && sudo apt install pipewire gstreamer1.0-plugins-base-apps
    
  7. Avatar von Ferdinand

    Bei Fedora 34 gibt es anscheinend Probleme, Aufnahmen per Mikrofon zu machen.

  8. Avatar von pit
    pit

    Pulseffects (4.8.4-1) macht bei mir im Zusammenspiel mit Pipewire (0.3.51-1) keine Probleme mehr.
    Frage zur Anleitung: Fehlt da nicht noch der Hinweis darauf, dass auch das Paket pipewire-pulse installiert werden muss? Ohne lief das Enablen bei mir ins Leere:
    systemctl –user –now enable pipewire pipewire-pulse

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert