PulseAudio ist ein mächtiger Soundserver und Sonos bietet tolle WLAN Boxen. Mit ein paar Tricks kann man über PulseAudio auch die Sonos Boxen ansteuern.
Die Linux-Community ist manchmal einfach toll. Da klage ich ein wenig über Grenzen und Schwierigkeiten bei der Migration und sofort bekomme ich E-Mails mit hilfreichen Tipps. Die Lösung liegt manchmal so nahe.
Kleiner Hinweis vorweg. Man kann Sonos Boxen auch mit Noson ansteuern, aber ich mag diese dezidierten Apps nicht, sondern möchte die von mir präferierten Programme für das Abspielen nutzen.
Das kann man mit PulseAudio erreichen. Ein kleines Kommentar kann ich mir nicht verkneifen: Was haben damals die Ewiggestrigen gegen PulseAudio gegiftet. Braucht niemand, nicht ausgereift. Aus heutiger Sicht war das ein Vorgeschmack auf jenes, was danach mit systemd & Co kam. Heute gehört es zum festen Bestandteil jeder ernst zu nehmenden Distribution und wird sukzessive durch die weiter entwickelte Lösung pipewire abgelöst. Mal gucken, wann sich da der Hass der “Unix-Wutbürger” entlädt.
Zurück zum Thema. Es gibt grundsätzlich wohl die Möglichkeit, mit PulseAudio auch Airplay 2 anzusteuern, ich konnte diese Lösung aber nicht zum Laufen bekommen. Die Boxen waren zwar sichtbar, aber blieben stumm. Eine weitere Möglichkeit besteht in der Nutzung von DLNA. Sonos unterstützt diesen Standard nicht offiziell, aber die Boxen können darüber angesteuert werden.
PulseAudio-DLNA installieren und einrichten
PulseAudio-DLNA ist eine Erweiterung, die leider nicht bei allen Distributionen zum Standardbaukasten gehört. Bei Ubuntu ist es für 18.04 noch in den Paketquellen, bei Debian steht es für alle Ausgaben zur Verfügung. Arch-Nutzer müssen leider zum AUR greifen und openSUSE-Anwender zum OBS.
Ist das entsprechende Paket installiert, ist es mit Benutzerrechten in der Konsole zu starten. Sollte eine Firewall wie ufw oder firewalld aktiviert sein, so muss man diese vorher deaktivieren. Ich konnte keine Portfreigabe ermitteln, die über die Session hinaus gültig und funktionsfähig bleibt.
$ pulseaudio-dlna
Danach läuft eine lange Ausgabe durch, in der man sieht, wann die Boxen erkannt werden.
<strong>[gerrit@GH-Elite ~]$</strong> pulseaudio-dlna
02-17 19:42:42 pulseaudio_dlna.application INFO Using version: 0.6.0
02-17 19:42:42 pulseaudio_dlna.application INFO Binding to *:8080
02-17 19:42:42 pulseaudio_dlna.application INFO Encoder settings:
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvAacEncoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvFlacEncoder available="False">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvL16Encoder available="False" sample-rate="44100" channels="2">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvMp3Encoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvOggEncoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvOpusEncoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <AVConvWavEncoder available="False">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegAacEncoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegFlacEncoder available="True">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegL16Encoder available="True" sample-rate="44100" channels="2">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegMp3Encoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegOggEncoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegOpusEncoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <FFMpegWavEncoder available="True">
02-17 19:42:42 pulseaudio_dlna.application INFO <FaacAacEncoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <FlacFlacEncoder available="True">
02-17 19:42:42 pulseaudio_dlna.application INFO <LameMp3Encoder available="True" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <NullEncoder available="True">
02-17 19:42:42 pulseaudio_dlna.application INFO <OggencOggEncoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <OpusencOpusEncoder available="False" bit-rate="192">
02-17 19:42:42 pulseaudio_dlna.application INFO <SoxL16Encoder available="False" sample-rate="44100" channels="2">
02-17 19:42:42 pulseaudio_dlna.application INFO <SoxWavEncoder available="False">
02-17 19:42:42 pulseaudio_dlna.application INFO Codec settings:
02-17 19:42:42 pulseaudio_dlna.application INFO <AacCodec enabled="True" priority="12" mime_type="audio/aac" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <FlacCodec enabled="True" priority="9" mime_type="audio/flac" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <L16Codec enabled="True" priority="1" mime_type="audio/L16" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <Mp3Codec enabled="True" priority="18" mime_type="audio/mp3" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <OggCodec enabled="True" priority="6" mime_type="audio/ogg" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <OpusCodec enabled="True" priority="3" mime_type="audio/opus" backend="generic">
02-17 19:42:42 pulseaudio_dlna.application INFO <WavCodec enabled="True" priority="15" mime_type="audio/wav" backend="generic">
02-17 19:42:42 pulseaudio_dlna.plugins.chromecast INFO ChromecastPlugin.discover()
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Module "module-dbus-protocol" already loaded.
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Probing for $PULSE_DBUS_SERVER unsuccessful.
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Probing for /run/pulse/dbus-socket unsuccessful.
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Probing for $XDG_RUNTIME_DIR successful (unix:path=/run/user/1000/pulse/dbus-socket).
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Probing for org.PulseAudio.ServerLookup1 successful (unix:path=/run/user/1000/pulse/dbus-soc
ket).
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Found the following pulseaudio server addresses: unix:path=/run/user/1000/pulse/dbus-socket
02-17 19:42:42 pulseaudio_dlna.pulseaudio INFO Connecting to pulseaudio on "unix:path=/run/user/1000/pulse/dbus-socket" ...
02-17 19:42:43 pulseaudio_dlna.pulseaudio INFO Added the device "Küche - Sonos One SL Media Renderer (DLNA)".
Code-Sprache: HTML, XML (xml)
Ganz unten sieht man wie mein Sonos ONE SL in der Küche erkannt wird. Diesen kann ich nun im Plasma Audioapplet als Ziel auswählen.
Danach kann ich mit einem beliebigen Programm wie Elisa Musik abspielen. Zu beachten ist die erhebliche Latenz, weshalb die Methode nur für Musik oder Podcasts funktioniert.
Das ist kein gleichwertiger Ersatz für Airplay aber definitiv viel besser als alle anderen getesten Lösungen.
Wirklich toll!
Ich habe sowas mal gesucht. aber für 20.10 nichts gefunden. Ich muss dem gleich nochmal auf den Grund gehen, ich denke aber, dass dieses pulsaudio-DLNA wohl das Projekt ist, das ich entdeckt habe aber seit ewigkeiten nichtmehr weiterentwickelt wurde.
Das Projekt scheint nicht aktiv entwickelt zu werden aber EA funktioniert bei mir. Das ist doch die Hauptsache. 🙂
@Gerrit, Ich verwende nicht gerne Tools die so lange keine Updates mehr erlebt haben. Besonders nicht wenn sie auch noch am Netzwerk hängen.
So gern ich das selber umsetzen würde, ich verzichteaber wohl drauf.
Die Software ist bei Debian in den Paketquellen. Wenn das den dortigen Standards entspricht habe ich keine Problem damit es zu nutzen. Ich kann und möchte ja nicht bei jeder Software gucken, wann die das letzte Mal aktiv entwickelt wurde. Das könnte in weiten Teilen des Systems erschreckend sein.