Steam auf dem Vormarsch ins Wohnzimmer

steamos_header

Nachdem für den Freitag eine erste Beta von SteamOS angekündigt war hatte ich für das Wochenende eigentlich nur eins geplant: ausprobieren. Nachdem ich am Samstag die .zip-Dateien heruntergeladen hatte und versuchte daraus ein bootbares .iso zu erstellen kam dann recht schnell die Ernüchterung. Die von Valve angegebenen Hardwareanforderungen konnten von der Zotac ZBox ID41, auf der ich es eigentlich installieren wollte, nicht mal ansatzweise erfüllt werden und das Killer-Feature, das ich eigentlich testen wollte, nämlich das In-Home Streaming, scheint dort noch gar nicht implementiert zu sein.

Steam auf dem Vormarsch ins Wohnzimmer weiterlesen

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

Musik in mehrere Räume streamen

Mein Ziel war es, in mehreren Räumen in der Wohnung synchron Musik abspielen zu können, wie es mit dem System von Sonos möglich ist, allerdings wollte ich nicht ganz so viel dafür ausgeben.

Beim Stöbern nach schon existierenden Lösungen für synchrones MP3 Streaming bin ich über die Logitech SqueezeBox und dazu passende alternative Clients gestolpert, die ich hier vorstellen möchte.

P1160401 Musik in mehrere Räume streamen weiterlesen