Pulse-Audioserver
Ziel ist es einen zentralen Audioserver zu schaffen der Audioverkabelung überflüssig macht. Verteilt wird mittels Multicast (Avahi). Auf jedem modernen Desktopsystem (KDE,Gnome), kann man die Soundkarte mit einem Klick auswählen. In unserem Falls hier wird es eine Netzwerksoundkarte sein. Weiters macht es natürlich auch Sinn das z.B. virtuelle Maschinen auch direkt Sound ausgeben können. Hier beschreiben wir wie Root selbst mit Pulseaudio zu konfigurieren ist.
Die ersten Tests zeigten das der Sound überall hinterher hängt, auch für's Video schauen nicht brauchbar. Getestet wurde mit einem PI und ner fetten Workstation. Auch Low-Latency Kernels wurden verbaut.
System: Debian9 auf Raspberry PI 3
Installation
Wir gehen hier von einem bereits laufenden grundkonfigurierten System aus. Pakte dazu installieren:
apt install mpv paprefs pulseaudio-module-zeroconf pavucontrol synaptic avahi-utils pulseaudio paman gstreamer1.0-pulseaudio
Möchte man sich alle Ausgabemöglichkeiten anzeigen lassen:
pacmd list-sinks | grep -e 'name:' -e 'index:'
Möchte man den Sound über die Klinke ausgeben muss das dem System noch mitteilen.
amixer cset numid=3 1
Nach dem Reboot und einen Ordner mit MP3-Files kann man den Sound schon mal testen:
cd /meine/Musik mpv --no-video *.mp3
Funktioniert das, gehts an die Konfiguration.
Konfiguration Server
Da der PI „nur“ für den Sound zuständig ist, können wir auch deren Priorität erhöhen. Editieren wir die Config /etc/pulse/daemon.conf
und ändern/fügen diesen Schnipsel hinzu.
high-priority = yes # default no rlimit-nice = 31 # default 31, Werte größer als 31 werden auf 31 gesetzt nice-level = -11 # default -11, kleinstmöglicher Wert: (20 - rlimit-nice), kleiner heißt mehr CPU-% realtime-scheduling = yes # default no rlimit-rtprio = 9 # default 9, Werte von 1 bis 99 erlaubt realtime-priority = 9 # default 5, höchstmöglicher Wert: rlimit-rtprio, höher heißt mehr Priorität
Möchte man Pulsaudio auch direkt als Benutzer „pi“ ausführen muss das eintragen, damit auch die höhere Priorität hat. nano /etc/security/limits.conf
pi - nice -11 # Werte von -20 bis 19 erlaubt pi - rtprio 99 # Werte von 1 bis 99 erlaubt
Danach Server neu starten:
pulseaudio -D --system
Nun noch das System mit paprefs
freischalten. Hier sind folgende Dinge zu aktivieren:
- TAB Netzwerkzugriff: PulseAudio Netzwerk-Audio-Geräte im lokalen Netz auffindbar machen
- TAB Netzwerkserver: Netzwerkzugriff auf lokale Audiogeräte erlauben, lokale Audiogeräte für andere Maschinen im LAN auffindbar machen, Authentifizierung nicht erforderlich
Danach kann das Gerät von allen anderen im LAN genutzt werden die in der gleichen Avahidomäne sind. Man kann das Pluseaudiosink natürlich auch ohne Avahi nutzen und direkt in der Config eintragen, das ist dann nötig wenn man keinen Desktoplogin mit einer GUI hat.
Konfiguration Client
Am Client ist auch das Programm paprefs
zu installieren und der „TAB Netzwerkzugriff: PulseAudio Netzwerk-Audio-Geräte im lokalen Netz auffindbar machen zu aktivieren“. Danach ist ein Neustart des Pulsedienstes am Client erforderlich. Danach kann man am Client beque über Systemsettings (KDE) oder gnome-control-center (Unity/Gnome) seine Netzwerksoundkarte auswählen.
Zu beachten
Für Computerspiele und Filme ist das nicht geeignet, da der Sound immer um ein paar Millisekunden hinterher hinkt. Benutzt man KODI kann man die Verzögerung für Filme einstellen. Ist aber ganzeinheitlich so nicht brauchbar.