Multiroom-Audio mit LMS + Squeezelite

Um nicht unnötig Raspberry-Pis bzw. die dazugehörigen SD-Karten für eine einzige Nutzung „opfern“ zu müssen, habe ich nach einer Alternative für meine Volumio-Multiroom-Audio-Lösung gesucht.
Und bin fündig geworden:
LMS (=“Logitech Media Server„, quelloffen, trotz des Namens) + Squeezelite.
Dieses Server / Client-Duo lässt sich ganz einfach auf ein bestehendes Raspian / Rasperry Pi OS installieren. Der Pi bleibt somit immer flexibel und kann noch andere Aufgaben (z.B. RetroPie, NAS, ..) mit einem immer aktuellen Raspbian / Raspberry Pi OS erledigen.

So gehts:

Server installieren (LMS)

Nach einem sudo apt update die benötigten Libraries installieren:
sudo apt-get install -y libsox-fmt-all libflac-dev libfaad2 libmad0

Auf einem frisch aufgesetzten Raspbian Lite fehlten noch weitere Pakete, diese installieren mit:
sudo apt-get install -y perl-openssl-abi-1.1 libnet-ssleay-perl libio-socket-ssl-perl

Nun zur eigentlichen Installation:
cd
mkdir lms
cd lms

Jetzt wird die neueste Version von Logitech Media Server heruntergeladen. Die verschiedenen Versionen liegen hier: http://downloads.slimdevices.com/
und werden regelmäßig aktualisiert. Der Befehl zum Herunterladen und Installieren der Version 8.1.1 für Raspberry Pi (=“armhf“) lautet:

wget http://downloads.slimdevices.com/LogitechMediaServer_v8.1.1/logitechmediaserver_8.1.1_arm.deb
sudo dpkg -i logitechmediaserver_8.1.1_arm.deb

Falls es beim Installieren Abhängigkeitsprobleme gibt, diese mit:

sudo apt --fix-broken install

reparieren.

Das Server Webinterface kann über den browser aufgerufen werden, in meinem Fall z.B. http://192.168.0.17:9000 oder http://pi4:9000
Hier kann dann auch alles konfiguriert werden. Das Browser-Interface sieht etwas oldschool aus, ist aber im Vergleich zu Volumio recht „snappy“:

Player / Client installieren (Squeezelite)

cd
mkdir squeezelite
cd squeezelite

Jetzt laden wir squeezelite herunter, den Client. Hier liegen die aktuellen Versionen: https://sourceforge.net/projects/lmsclients/files/squeezelite/linux/
Für den Raspberry Pi benötigt man die „armhf“-Version. Die zum Zeitpunkt der Veröffentlichung dieses Posts aktuelle Version, 1.9.9.1386, wird so heruntergeladen und installiert:
wget https://sourceforge.net/projects/lmsclients/files/squeezelite/linux/squeezelite-1.9.9.1386-armhf.tar.gz
tar -xzf squeezelite-1.9.9.1386-armhf.tar.gz
sudo mv squeezelite /usr/bin/squeezelite

Squeezelite konfigurieren

squeezelite -l
Listet alle verfügbaren Audio-Geräte /-Ausgänge des Raspberry Pis auf.
Bei einen Pi4 sieht die Liste z.B. so aus:

Squeezelite starten

Hier als Beispiel, wenn der Player auf dem gleichen Pi wie der Server (ein Pi4) und über den 3,5 mm Klinkenausgang läuft:
squeezelite -o sysdefault:CARD=Headphones -n localplayer -s 127.0.0.1
-n ist der Name des Clients, kann frei vergeben werden. So wird es dann in der Serversoftware angezeigt.
-s ist die Server-Adresse
Das wars! Der Player sollte nach einer Weile in der Geräteliste (oben rechts) im LMS-Webinterface erscheinen. Ihr habt ein funktionierendes Multiroom-Audio-System, auf Raspbian / Raspberry Pi OS installiert.
Spotify funktioniert auch (mit Premiumaccount)!

Update August 2021

Nach einem Software-Update von Raspbian OS auf meinem Pi4 lieferte der squeezeplayer auf dem Headphone Output keinen Ton mehr…

squeezelite -o sysdefault:CARD=Headphones -d output=debug lieferte:

output_thread:759 start error: File descriptor in bad state

Die Lösung ist, squeezelite mit dem Zusatz „-a :::0“ zu starten, also in meinem Beispiel so:

squeezelite -o sysdefault:CARD=Headphones -d output=debug -a :::0

Quelle:
https://sourceforge.net/p/lmsclients/tickets/4/

Android-App / Sonstiges

Als Fernbedienung bietet sich die kostenlose Android-App „Squeezer“ an.

Außerdem gibt es sowohl LMS als auch Squeezelite für etliche Hardware-Plattformen, z.B. für Synology NAS (mit Docker), ESP32-Microcontroller, Windows-PC, OSx, …