PipeWire braucht kein PulseAudio

  Ralf Hersel   Lesezeit: 5 Minuten  🗪 5 Kommentare

Wie funktioniert die Audio-Verarbeitung bei GNU/Linux-Systemen? Der Versuch einer einfachen Erklärung.

pipewire braucht kein pulseaudio

Nach und nach ersetzen die gängigen GNU/Linux-Distribution den alten Sound-Server PulseAudio durch das neuere PipeWire. Da wird es Zeit, diese schwierige Materie zu erklären. Sucht man im Internet nach Videos zum Thema, findet man sehr viele und schwierige Erklärungen, die meist von Audio-Profis für Audio-Profis erstellt wurden. Daher versuche ich in diesem Artikel, die Zusammenhänge möglichst einfach zu erklären.

Die Idee zu diesem Artikel kam mir, als ich feststellte, dass auf meinen Manjaro-Installationen die beiden Sound-Server PulseAudio und PipeWire parallel liefen. Ausserdem hatte ich ab und zu Probleme beim Feststellen der aktuell verfügbaren Audio-Geräte (Mikrofone und Lautsprecher). Meine Hoffnung war, dass ein wenig Aufräumen in der Audio-Konfiguration diese Situation verbessern würde.

Überblick

In grauer Vorzeit gab es das Open Sound System (OSS), welches ab den 90er Jahren durch die Advanced Linux Sound Architecture (ALSA) schrittweise ersetzt wurde. Dieses System stellt die Schnittstelle zwischen den Hardware-Treibern für Audio-Geräte im Linux-Kernel und den Anwendungen dar, die Audio senden oder empfangen möchten.

ALSA hat das Problem, dass es kein Multiplexing unterstützt. Ohne Umstände ist es nicht möglich, zwei Mikrofone an eine Anwendung zu leiten oder eine Audio-Quelle an zwei Lautsprecher zu senden. Ein weiterer Makel ist die zu hohe Latenz für den professionellen Einsatz. An dieser Stelle kommen die Sound-Server ins Spiel.

JACK überzeugt mit niedriger Latenz und ist daher im Profi-Bereich beliebt, ist allerdings schwierig zu konfigurieren. PulseAudio hat eine wesentlich höhere Latenz (ca. 40 mS, was für normale Anwender:innen kaum eine Rolle spielt), überzeugt aber mit einem automatischen Routing zwischen der Ein- und Ausgabe. Die einfache (fast keine) Bedienung hat PulseAudio über viele Jahre hinweg zum Standard bei den Sound-Servern gemacht. Und dann kam PipeWire.

PipeWire ist API-kompatibel mit JACK und PulseAudio, hat eine bessere Latenz als PulseAudio und bietet sich damit als universeller Sound-Server an. Der grösste Vorteil ist die API-Kompatibilität, weil damit gegenüber ALSA das Vorhandensein von JACK und PulseAudio vorgegaukelt wird. Tatsächlich kümmert sich PipeWire vollständig um das Routing zwischen ALSA und den Anwendungen.

Video

Wie erwähnt, gibt es viele schwierige Erklär-Videos zu diesem Thema. Ich habe eines herausgesucht, dass die Zusammenhänge möglichst einfach erläutert. Es kommt von Kaitos Linuxwelt.

Eigene Erfahrungen

Um festzustellen, welche Sound-Server bei euch laufen, könnt ihr dieses Kommando im Terminal ausführen:

inxi -A

Audio:
  Device-1: Intel Tiger Lake-LP Smart Sound Audio driver: snd_hda_intel
  Device-2: Logitech Logitech Stereo H650e type: USB
    driver: hid-generic,snd-usb-audio,usbhid
  Sound API: ALSA v: k5.15.76-1-MANJARO running: yes
  Sound Server-1: PipeWire v: 0.3.59 running: yes

Damit seht ihr, welche Audio-Geräte am Start sind und wer sich um die Verarbeitung kümmert. In meinem Beispiel seht ihr die interne Intel-Audiokarte und ein per USB angeschlossenes USB-Headset. Zwischen den Kernel-Treibern verhandelt ALSA mit allem, was danach kommt. Dann kümmert sich PipeWire um die Feinverteilung.

Wer nicht weiss, was Inxi ist, lernt es hier.

Bevor ich diesen Artikel geschrieben und Massnahmen ergriffen habe, zeigte Inxi mir zwei Sound-Server an, nämlich PulseAudio und PipeWire. Nach einiger Recherche habe ich dieses Kommando (Manjaro) ausgeführt:

pamac install manjaro-pipewire

Das Kommando mag etwas verwirrend erscheinen, weil PipeWire bereits installiert ist. Dieses Metapaket installiert jedoch nicht nur PipeWire, sondern entfernt auch PulseAudio. Für eure Distribution gibt es bestimmt ein ähnliches Kommando, um PulseAudio zu entfernen und durch PipeWire zu ersetzen. Falls inxi -A bei euch nur PipeWire als Sound-Server anzeigt, müsst ihr gar nichts machen. Sollte PulseAudio parallel dazu laufen, könnt ihr selbst entscheiden, ob ihr PulseAudio entfernen möchtet. Bei mir hat das zu keinen Problemen geführt. Ach ja, das Entfernen von PulseAudio wird erst nach einem Neustart wirksam.

Quelle: https://pipewire.org/

Tags

PulseAudio, PipeWire, ALSA, Sound, Sound-Server

Michel
Geschrieben von Michel am 7. November 2022 um 11:53

Kennt jemand ein gutes Tool, um Remote den Soundserver einzustellen. Ich nutze ein Raspi als Mediacenter. Nun möchte ich aber gerne z.B. dafür sorgen, dass Audio über HDMI und Bluetooth gleichzeitig ausgesendet wird. Das kann ich unter Kodi nicht konfigurieren. Die PulseAudio CLI entzieht sich leider meinem Verständnis.

Robert
Geschrieben von Robert am 8. November 2022 um 22:14

Du wirst etwas adaptieren müssen, aber so grob könnte Dir das weiterhelfen: https://wiki.archlinux.org/title/WirePlumber#Simultaneous_output_to_multiple_sinks_on_the_same_sound_card

Andreas
Geschrieben von Andreas am 7. November 2022 um 12:24

Auch ich hatte PipeWire simultan zu PulseAudio in Betrieb und hab mich da erst mal nicht ran getraut. Durch den Beitrag angestossen fand ich dann eine passende Anleitung für mein openSUSE Tumbleweed (https://en.opensuse.org/openSUSE:Pipewire). Habe damit gerade komplett auf PipeWire umgestellt und Pulseaudio entfernt. Rennt. Danke!

Koko
Geschrieben von Koko am 7. November 2022 um 14:21

Ich habe unter Linux Mint alle drei soundserver (alsa, pulseaudio, pipewire) gleichzeitig laufen. Was ist denn deine Empfehlung für diesen Fall?

Prof.P
Geschrieben von Prof.P am 14. November 2022 um 10:34

Unter Arch/EndeavourOS kann man ausführen: sudo pacman -S pipewire pipewire-pulse --needed

Das war's. Alle in Konflikt stehenden Pulseaudio-Pakete sollten damit auch entfernt werden. Ich musste allerdings vorher noch manuell die beiden Pakete "pulseaudio-equalizer" und "pulseaudio-zeroconf" entfernen.