Mit Linux, MacOS und Raspberry Pi Musik streamen

tl;dr: Sascha will gerne von jedem Musikgerät in der Wohnung Musik an die Anlage streamen können und hat das mit einem Raspberry Pi 3 gemacht. Für die Ungeduldigen: Raspberry Pi 3 mit Runeaudio (Archlinux), Stream vom MacBook über AirPlay, Stream vom Linux-Laptop über DLNA (Pulseaudio + paprefs + pulseaudio-dlna-plugin).

Musik vom Rechner an die Anlage streamen

Seit einiger Zeit gibt es in meinem Haushalt einen Linux-Laptop, ein MacBook, ein iPhone und meine alte analoge Anlage, die nur über Phono- und Cinch-Eingänge verfügt. Weil ich keine Lust auf die ständige Kabeltauscherei und -wechselei hatte – aber von jedem Gerät aus Musik über die Anlage hören will – kam der Gedanke, die Musik von den Geräten einfach zu streamen. Apple iTV und google Chromcast kamen für mich nicht in Frage, da zu teuer, abgekapselt, Datenschutzbedenken (beide Geräte schicken Daten nach Hause, natürlich nur zu Zwecken, den Service zu verbessern. Nee, is klar.). Selber machen hatte für mich weitaus mehr Charme, einmal abgesehen davon, dass es auch unschlagbar günstig ist. Somit blieb als Lösung der Raspberry Pi.

raspi_stream

1. Schritt: Raspberry Pi + Betriebssystem + Medienspieler

Ich habe mir also einen Raspberry Pi 3 besorgt. Mit Netzteil kostet das Ding knapp 40€, abhängig vom Händler bekommt man für ein paar Euro zusätzlich noch ein Gehäuse oder eine SD-Karte. Beides brauchte ich nicht, da unnötig bzw. vorhanden.

Raspberry Pis sind kleine Rechner (die Platine ist kreditkartengroß), in der neuesten Variante mit Quadcore-Prozessor und 1GB RAM, also etwa so leistungsfähig wie ein Mittelklasse-Smartphone. Zudem verbraucht er maximal 3 Watt, also weniger als z.B. das Radio. Eine Festplatte gibt es nicht; das Betriebssystem kommt von der Micro-SD-Karte. Zusätzlichen Speicher kann man über USB anschließen.

Lange Zeit habe ich mit osmc experimentiert, das ist eine Raspbian-Installation mit Kodi als einziger Anwendung. Kodi wurde mal für die xBox entwickelt, ist nun Open Source und ein richtiges Medienzentrum, das quasi alles abspielen kann, was dafür gedacht ist: Musik in allen denkbaren Formaten, Internetradio, Filme, andere Streams wie Netflix, Spotify, etc. Es setzt eigentlich einen Fernseher voraus, man kann aber einen Teil der Einstellungen über eine Weboberfläche machen, bzw. über ssh direkt in den Konfigurationsdateien. Das ging auch einigermaßen gut, aber wirklich sinnvoll ist es nur, wenn man einen Fernseher hat (ich hab keinen).

RuneAudio

Die zweite – nun verwendete Lösung – ist RuneAudio. Das ist eine Anwendung, die nur auf (bestmögliche) Wiedergabe von Musik spezialisiert ist. Dabei sind die Entwickler so weit gegangen, dass sie eine Version von ArchLinux genommen haben, diese so angepasst haben, dass sie auf kleinen Rechnern wie dem Raspi wunderbar läuft, dem Ganzen eine gut nutzbare Anwendung verpasst haben – und diese kann man komplett über die schön und übersichtlich gestaltete Weboberfläche steuern und konfigurieren. Man braucht keinen Bildschirm und kein ssh – die Weboberfläche ist wirklich gut nutzbar.

Ich habe also das Image auf die SD-Karte gepackt (siehe Anleitungen unten); und über die Eingabe von rune.local im Browser kommt man direkt auf die Oberfläche – das ist ähnlich wie beim Router. Und genau wie beim Router muss man im gleichen Netzwerk sein.

2. Schritt: Konfiguration und Abspielen von lokalen Medien

Runeaudio erklärt sich fast von selbst. Unter „Sources“ kann man die lokalen Medien (sprich: USB-Stick oder externe Festplatte) angeben und in die Bibliothek aufnehmen. Das dauert einen Moment, und dann kann man sich durch die Musik klicken. Der Dateibrowser und die Playlist sind ein bisschen gewöhnungsbedürftig, aber funktionieren gut.

Unter „MPD“ wird es schon spannender. MPD steht für „Music Player Daemon„, also ein Dienstprogramm, das bei wenig Ressourcenverbrauch Musik spielen kann und sich über das Netzwerk steuern lässt. Es gibt für jedes Betriebssystem Anwendungen, die MPD steuern können. WICHTIG ist der TCP Port, den man sich merken sollte. Alles andere kann bleiben bzw. nach eigenem Geschmack konfiguriert werden.

„Settings“ ist sehr wichtig, denn hier stellt man nicht nur den Playernamen ein (bei mir raspi statt rune), sondern kann auch AirPlay einschalten. Ebenfalls einschalten kann man UpnP/DLNA, die Linux-Variante von AirPlay (ganz grob verallgemeinert). Alles Weitere ebenfalls nach Geschmack.

raspi_arbeit

Raspi bei der Arbeit.

Bis jetzt läuft unser Raspberry also mit RuneAudio, kann Musik von der Festplatte abspielen und ist im lokalen Netzwerk erreichbar. Nun wird es spannend.

3. Schritt: Streamen von den Laptops

Das MacBook war hier sehr unkompliziert: In iTunes taucht eine Schaltfläche auf, unter der man wählen kann, ob man die Musik lokal (also Lautsprecher/Kopfhörer) oder über AirPlay abspielt – in diesem Fall also „raspi“. Auswählen, fertig. Die Musik streamt sofort über den Raspi. Will man youtube, VLC etc. streamen, dann klickt man mit gedrückter „alt“-Taste auf die Lautstärkeregelung – und siehe da, man hat ein kleines Menü, wo man auswählen kann, obs über die internen Lautsprecher oder über raspi gehen soll. Leider mit einer Verzögerung von etwa einer, zwei Sekunden, also nix für Filme – aber prinzipiell schon mal supidupi.

Linux ist da komplizierter (leider).

Die quasi-Standard-Audio-Architektur unter Linux heißt Pulseaudio. Dieses System ist wie folgt gedacht: Pulseaudio stellt einen Server da, der alle möglichen Audiostreams verwalten kann und an alle möglichen Ziele senden kann. Also: das youtube-Video im Firefox ist ein Stream, der von Pulseaudio an die internen Lautsprecher geschickt wird. Oder automatisch an den Kopfhörerausgang, sobald ich meine Kopfhörer angeschlossen habe. Mein mp3-Programm oder VLC sind genauso Streams, die Pulseaudio verwalten kann.  Ich versuche, Pulseaudio mit ein paar zusätzlichen Plugins auf die Sprünge zu helfen:

paprefs ist ein kleines Programm, mit dem man verschiedene (Netzwerk)einstellungen für Pulseaudio vornehmen kann – unter anderem nach dem Installieren von shairplay, avahi und pulseaudio-module-zeroconf kann ich theoretisch AirPlay nutzen. Wer es selber ausprobieren möchte, hier die Befehle:

Für Fedora-Nutzer:
sudo dnf install paprefs shairplay avahi pulseaudio-module-zeroconf

Für Ubuntu-Nutzer:
sudo apt-get install paprefs shairplay avahi pulseaudio-module-zeroconf

Und theoretisch kann ich ebenfalls auf das Lautsprechersymbol bei mir klicken und raspi auswählen – aber leider hängt dann JEDER Stream sofort. Irgendwas funktioniert hier nicht. Ich habe dann wild in der Konfigurationsdatei herumeditiert und Puffergrößen und -zeiten geändert, alles mit demselben Ergebnis. Alles Konfigurieren, Fluchen, Ausprobieren hat nichts gebracht: Der Stream hängt, sobald ich raspi auswähle. Da hat Pulseaudio – zumindest in dieser Konfiguration – zu viel versprochen.

pulse_1

Die Lösung lautet DLNA.

Doch zum Glück gibt es eine weitere Möglichkeit: DLNA. Das ist ein geräteübergreifender Standard mit dem Ziel, alle Geräte, die Musik abspielen können, irgendwie unkompliziert zu verbinden. Quasi ein offenes AirPlay für alle. RuneAudio kann DLNA (natürlich) auch. PulseAudio braucht da ein bisschen Nachhilfe in Form eines Plugins, passenderweise betitelt mit pulseaudio-dlna. Es ist nicht in den Standard-Repositories enthalten, also müssen wir es hinzufügen und dann installieren:

Für Fedora:
sudo dnf copr enable cygn/pulseaudio-dlna
sudo dnf install pulseaudio-dlna

Für Ubuntu:
sudo apt-add-repository ppa:qos/pulseaudio-dlna
sudo apt-get update
sudo apt-get install pulseaudio-dlna

Dieses Plugin erstellt einen neuen Server, mit dem sich Pulseaudio als Sender(Client) verbindet und über den dann weiter gestreamt wird – dieses Mal an raspi. pulseaudio-DLNA ist ein kleines Kommandozeilentool, dem man verschiedene Parameter mitgeben kann, wie die Qualität des Streams, das Ziel und den TCP-Port. Den kenne ich ja – gebe ihn ein – und das klappt! Zwar auch mit ordentlich Latenz, aber im Grundsatz kann ich schon mal alles streamen. Technisch finde ich diese Lösung ein wenig redundant, das das MacBook über eine Technologie streamt und der Linux-Laptop über eine zweite – und auf meinem Laptop laufen ZWEI Soundserver, die prinzipiell dasselbe machen – aber was solls, es funktioniert ja.

pulse_2

Infos und Anleitungen

Pulseaudio auf wikipedia

Pulseaudio-wiki für Ubuntu (genauso für Fedora nutzbar, nur eben mit anderen Installationsbefehlen) – viele Tips, Feinheiten, Einstellungen

OSMC/Kodi (Anschauen kann man es sich; sehr schickes Mediencenter)

Runeaudio

Schritt-für-Schritt-Anleitung für Rune (englisch)

Readme zum pulseaudio-dlna-plugin

Über sushey

twitter.com/milch_mit_honig
Dieser Beitrag wurde unter ausprobiert, digital life, ich und die welt, musik abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar? Gerne!

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s