Dies ist eine alte Version des Dokuments!


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

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.

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.

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.

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.