Android-Steuerung und Fazit

Steuerung über Android-App

Die SqueezeBox-App lässt sich kostenlos aus dem Play Store herunterladen. Nach dem Start muss man sich leider mit einem SqueezeBox-Konto einloggen, aber das ist schnell auf der Website erstellt. Ich nehme mal an als Bonus kann man dann die Musik zuhause auch von unterwegs aus steuern, getestet habe ich das noch nicht.

Fazit

Ich bin begeistert. Eine absolut kostengünstige Lösung, kaum Aufwand beim Einrichten und es lässt sich komfortabel steuern. Der bisher einzige Makel ist: bei Sprache ist ein leichtes Delay zu hören, da merkt man doch dass es nicht absolut synchron ist. Aufgefallen ist mir das allerdings nur bei Beiträgen der Moderatoren im Radiostream, den ich zum Testen genutzt habe während der Media Server die Musik indizierte. Beim Abspielen von Musik (egal ob lokale MP3s oder beim Livestream) ist die Verzögerung nicht zu hören.

LMS_WI_play

Das einzige was mir jetzt noch fehlt ist squeezelite auf dem unter OpenELEC laufenden Pi im Schlafzimmer, dort ließ es sich nicht so ohne Weiteres installieren. Und natürlich noch ein Pi für die Küche…

squeezelite auf dem Raspberry Pi

Hier gibt es vom Squeezeplug-Projekt bereits fertige Images für den Pi, aber ich wollte mein bereits installiertes Raspbian behalten. Also habe ich mir squeezelite von der Google Code-Seite heruntergeladen. Wir brauchen für den Pi die Datei squeezelite-armv6hf.

Die Installation ist ruckzuck erledigt:

# Ein paar Abhängigkeiten installieren
sudo apt-get install libfaad2 libmad0 libmpg123-0
# Das Verzeichnis anlegen wo hinterher squeezelite liegt
sudo mkdir /opt/squeezelite
# squeezelite herunterladen
wget https://squeezelite.googlecode.com/files/squeezelite-armv6hf
# Die Binärdatei ausführbar machen
chmod +x squeezelite-armv6hf
# Die Datei in unser erstelltes Verzeichnis verschieben.
sudo mv squeezelite-armv6hf /opt/squeezelite/

Als nächstes brauchen wir noch die Berechtigung auf die Audio-Devices zugreifen zu können, sonst tauchen sie nicht mal beim Auflisten auf.

sudo adduser gerald audio

Jetzt einmal abmelden und neu anmelden, dann ist man in der neuen Gruppe.

$ /opt/squeezelite/squeezelite-armv6hf -l
Output devices:
null - Discard all samples (playback) or generate zero samples (capture)
default:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device

Die Audio-Devices werden erkannt und wir können ihn starten

/opt/squeezelite/squeezelite-armv6hf -s book -n Mal

Hier steht “book” für den Computer auf dem der Logitech Media Server läuft, “Mal” ist ein frei wählbarer Name für den Pi. Unter diesem Namen wird er später überall aufgeführt. Nicht wundern wenn nach dem starten nichts weiter passiert … wenn keine Fehlermeldung kommt, der Prompt aber einfach stehen bleibt dann läuft die Anwendung. Mit dem zusätzlichen Parameter -z kann man squeezelite als Daemon in den Hintergrund schicken.

Als Letztes richten wir noch für den squeezelite Daemon ein Autostart-Script ein. Ein netter Mensch hat da schonmal was vorbereitet:

# Das Script herunterladen
wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
# Die Einstellungen im Script editieren
vi squeezelitehf.sh

Ich musste anpassen: DAEMON, SL_NAME, SL_SOUNDCARD, SB_SERVER_IP

# Script ausführbar machen
chmod u+x squeezelitehf.sh
# Script nach /etc/init.d/ veschieben
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
# Script starten
sudo /etc/init.d/squeezelite
# Wenn alles richtig ist und läuft das Script zum Autostart hinzufügen
sudo update-rc.d squeezelite defaults

squeezelite unter Windows

Unter Windows ist die Installation ähnlich. Die exe-Datei für Windows herunterladen, yusätzlich brauchen wir noch die PortAudio.dll sowie die libmpg123-0.dll. Beide Dateien können einfach in das Verzeichnis der squeezelite .exe-Datei gelegt werden.

Die Parameter sind die gleichen wie unter Linux, ich musste hier noch mit -o das richtige Audio-Device angeben.

Um herauszufinden welche Bibliotheken noch fehlen kann man das Debug-Log aktivieren:

.\squeezelite-win-1.3dev.exe -d all=debug -f .\squeezelight.log

Dort finden sich dann kurz nach dem Start solche Meldungen:

[10:02:08.449] load_faad:560 dlerror: code: 126
[10:02:08.449] load_vorbis:257 dlerror: code: 126
[10:02:08.450] load_flac:214 dlerror: code: 126
[10:02:08.450] register_pcm:352 using pcm
[10:02:08.450] load_mad:309 dlerror: code: 126
[10:21:28.766] load_mpg:243 loaded libmpg123-0.dll

Hier kann man sehen welche Bibliotheken geladen wurden und für welchen Codec keine passende DLL gefunden wurde.

Natürlich möchte ich auch hier dass squeezelite automatisch startet. Ich könnte es einfach in den Autostart packen, aber dann habe ich die ganze Zeit einen Command Prompt in der Taskleiste mit dem ich nichts anfangen kann. Außerdem finde ich es “sauberer” wenn es im Hintergrund als Dienst läuft. Da das Programm ohnehin keine Grafische Oberfläche hat ist es geradezu prädestiniert dafür mit srvany als Dienst verpackt zu werden.

Wir legen also alle Dateien in ein Verzeichnis, das kann ruhig in C:\Program Files sein. Dort sollten dann mindestens liegen: squeezelite-win-1.3dev.exe, PortAudio.dll und libmpg123-0.dll.

squeezelite_folder

Als nächstes laden wir das Windows Server Resource Kit herunter und installieren es. Das geht auch auf einem Desktop-Windows, es muss kein Server sein. Als nächstes einen Command Prompt mit Administratorrechten starten.

Jetzt installieren wir eine Instanz von srvany als Dienst:

instsrv SqueezeLite 'C:\Program Files\Windows Resource Kits\Tools\srvany.exe'

Danach taucht unter den Diensten ( services.msc ausführen) ein Eintrag SqueezeLite auf. Standardmäßig wird er unter dem Systembenutzer ausgeführt, was mich grundsätzlich schon mal stört. Daher habe ich den Dienst so konfiguriert dass er unter meinem Benutzer läuft.

squeezelite_service

Als letzten Schritt müssen wir srvany noch konfigurieren, damit es die squeezelite .exe-Datei startet. Das muss leider im Registry Editor gemacht werden. Unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services befindet sich ein Schlüssel mit dem Namen SqueezeLite . Dort legen wir einen Unterschlüssel mit dem Namen Parameters an. Unter Parameters legen wir eine Zeichenkette mit dem Namen Application an. Dort wird der Pfad zu squeezelite eingetragen. Hinterher sollte das ganze so aussehen:

squeezelite_service_registry