Hier findest du eine kurz & knackige Anleitung und Erklärung, wie du das Realtime Modul von Pipewire für deine Audio/Video Anwendungen einrichtest.
Für die Musikproduktion mit einer DAW z.B. Bitwig unter Linux kann dieses Thema für dich sehr wichtig sein.
Eventuell interessiert dich noch der Artikel über pw-metadata, mit dem du temporär und permanent deine Pipewire Konfigurationen verändern kannst
Benutzer in Gruppen aufnehmen
Der Benutzer unter dem die Applikation laufen soll, muss in die entsprechenden Gruppen (wenn vorhanden) aufgenommen werden mit einem Editor (z.B. nano oder vim) und Superuser Rechten die Datei /etc/group
editieren
sudo vim /etc/group
und in den Zeilen, in denen rtkit und pipewire steht den Benutzernamen anhängen
rtkit:x:117:BENUTZERNAMEN
pipewire:x:136:BENUTZERNAMEN
Damit das wirksam (aktiv) wird, muss die Session neu gestartet werden. Entweder einfach ausloggen und wieder einloggen, oder den Computer neu starten.
Module-rt konfigurieren
Falls noch gar keine Pipewire Konfiguration vorhanden ist, muss diese erst angelegt werden. Das kann Systemweit in /etc/pipewire
gemacht werden. Zu empfehlen ist es aber bei den meisten Systemen, da es sich meist um Eine-Person-Computer handelt im Heimverzeichnis des Benutzers z.B. /home/BENUTZERNAME/.config/pipewire/pipewire.conf.d
.
Warum im Heimverzeichnis? Weil bei einem Backup des Benutzerverzeichnisses gleich die Pipewirekonfiguration der BernutzerIn mit gesichert wird. Gibt es auf dem Computer mehrere BenutzerInnen mit unterschiedlichen Konfigurationen, werden alle entsprechenden Konfigurationen mitgesichert und werden beim Zurückspielen einer Sicherung wieder “aktiviert”.
Info: Im Verzeichnis /usr/share/pipewire/
liegen bereits einige Beispiele von Konfigurationsdateien. Diese brauchen wir aber für unsere Aufgabe nicht. Und diese sind auch so generisch, dass sie nicht unbedingt auf unsere Konfiguration passen, ohne dass wir größere Änderungen an den gesamten Konfigurationsdateien vornehmen.
Konfiguration erstellen
Wir erstellen uns einfach die Datei pipewire.conf
im Verzeichnis /home/Benutzername/.config/pipewire/pipewire.conf.d/
ganz einfach mit dem Aufruf eines Editors wie nano
oder auch vim
vim /home/BENUTZERNAME/.config/pipewire/pipewire.conf.d/pipewire.conf
Und tragen folgende Zeilen ein. Das RTKit Modul libpipewire-module-rtkit
ist hier deaktiviert und greift je nach Konfiguration nicht immer. Probiert es einfach aus, ob es bei euch funktioniert.
Darunter befindet sich dann das Pipewire Modul libpipewire-module-rt
. DAS braucht ihr!
# Reload Configuration File
# systemctl --user daemon-reload
#
# Restart Pipewire Daemon
# systemctl --user restart pipewire.service pipewire-pulse.socket
context.modules = [
# Uses RTKit to boost the data thread priority.
#{ name = libpipewire-module-rtkit
# args = {
# nice.level = -11
# rt.prio = 88
# rt.time.soft = 2000000
# rt.time.hard = 2000000
# }
# flags = [ ifexists nofail ]
#}
# Set thread priorities without using RTKit.
{ name = libpipewire-module-rt
args = {
nice.level = -11
rt.prio = 88
rt.time.soft = 2000000
rt.time.hard = 2000000
rlimits.enabled = true
rtportal.enabled = true
rtkit.enabled = true
}
flags = [ ifexists nofail ]
}
]
Pipewire als Benutzer neu starten
Da sich die Konfiguration auf der Festplatte geändert hat, müssen zwei Befehle mit ganz normalen Benutzerrechten eingegeben werden.
Neuladen der Konfiguration
systemctl --user daemon-reload
Pipewire neu starten
systemctl --user restart pipewire.service pipewire-pulse.socket
Check rt Prio Prozess
Mit dem folgenden Befehl kannst du im Systemjournal sehen ob eine Anwendung mit dem rtkit gestartet wurde.
journalctl --no-hostname -b 0 -e -u rtkit-daemon
Erklärung zu Xruns
Zur Vollständigkeit, weil das Thema Xruns in diesem Zusammenhang manchmal kommt.
Es gibt 2 Ursachen für Xruns
- Die Anwendungen können den Zyklus nicht rechtzeitig abschließen. Das kann daran liegen, dass der Kernel sie nicht rechtzeitig aufgeweckt hat oder dass sie nicht genügend Zeit zugewiesen bekommen haben.
- Das Timing des Treibers ist zu eng. Der Treiber wird nicht schnell genug aufgeweckt, um den Puffer gefüllt zu halten.
- Ursache 1 kann zu Ursache 2 führen.
- Ursache 2 kann durch Hinzufügen von mehr Pufferung (Vergrößerung des Headrooms) verbessert werden.
- Das Hinzufügen von Headroom verbessert Ursache 1 aber nicht.
Mit pw-top kannst du sehen, was die Xruns verursacht.
- Wenn die Xruns der Anwendung zunehmen, ist es Ursache 1
- Wenn nur der Treiber die Xruns erhöht, ist es Ursache 2
- Wenn beide zunehmen, ist es Ursache 1, die Ursache 2 verursacht
Quellen
- Pipewire Module-rt https://docs.pipewire.org/page_module_rt.html
- Pipewire Docs https://docs.pipewire.org/index.html
- Pipewire Configuration https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire
- pw-metadata https://docs.pipewire.org/page_man_pw_metadata_1.html
- pw-top https://docs.pipewire.org/page_man_pw_top_1.html
- Troubleshooting & XRuns https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#xruns
- Pipewire Ubuntuusers https://wiki.ubuntuusers.de/Pipewire/
- Pipewire Home https://pipewire.org/
Weitere hyperblog Artikel zum Thema
pipewire
- Bash mit vi (vim) Befehlen – vi Mode
- Bash history von allen Terminal Sessions speichern – Zum Beispiel tmux
- Eine tmux.conf Konfiguration
- Pipewire modul-rt Konfiguration
- Audio in Video normalisieren mit ffmpeg
- Nützliche Bash Shortcuts
- Kommando zurück – Bash History Tipps
- Beim ssh login tmux aufrufen
- tmux ein Windowmanager für die Konsole
Views: 22