Print

Logitech Medien Server als Musikzentrale

Installation des Servers und der Clients, Bewertung der verschiedenen Clients.

Server-Programm

Der Server wurde von einer durch Logitech aufgekauften Firma unter dem Namen "SqueezeBox" entwickelt und die Entwicklung 2012 eingestellt. Der Quellcode wurde dankenswerterweise freigegeben so dass er für jedermann verfügbar ist.

Max2PlayWer sich den Aufwand nicht antun möchte alles selbst einzurichten kann mal auf der Seite von max2play vorbeischauen. Diese bieten die gleiche Lösung an, aber mit eigenen Komponenten aufgewertet. Nachteil: die kostenlose Nutzung ist etwas eingeschränkt und man muss eine Jahresgebühr für den "Premium-Service" bezahlen.

Und als Schwabe geht das ja gar nicht, darum habe ich mich selbst schlau gemacht. Aber im Ernst, es sind nur zehn Euro im Jahr, das ist nun wirklich nicht die Welt. Mich stört aber daran dass ich mich damit an diesen Anbieter kette und, sollte dieser aus irgendwelchen Gründen aufhören, die Preise erhöhen oder in Europa keine Dienste mehr anbieten habe ich ein Problem. Darum schaue ich lieber selbst was ich tun kann.

Außerdem hat mich die Preispolitik für die Hardware abgeschreckt. Ein Pi mit Audiokarte kostet dort mal kurz das Doppelte wie im freien Markt.

Installation

Als Server habe ich den Pi auserkoren auf dem auch meine Medien liegen damit die Daten nicht mehrfach über das Netz laufen müssen. Da die externe Platte per USB angeschlossen ist kann es sein dass es bei vielen gleichzeitigen Zugriffen Performanceprobleme gibt (der USB des Pi ist nicht gerade schnell und der Netzwerkverkehr teilt sich die Bandbreite mit dem USB), aber das warte ich erst einmal ab.

Auszuführen war:

Den Pi sicherheitshalber aktualisieren:

sudo apt-get update && sudo apt-get dist-upgrade

Dann ein paar Libraries installieren die der LMS benötigt:

sudo apt-get install -y libsox-fmt-all libflac-dev libfaad2 libmad0

Auf einem neu installierten Raspbian ohne die Standard-Applikationen fehlten noch ein paar andere Pakete, diese mit 

sudo apt-get install -y perl-openssl-abi-1.1 libnet-ssleay-perl libio-socket-ssl-perl

installieren.

Die Server-Software von Logitech herunterladen

wget -O logitechmediaserver_all.deb $(wget -q -O - "http://www.mysqueezebox.com/update/?version=7.9.2&revision=1&geturl=1&os=deb")

Und die Installation ausführen:

sudo dpkg -i logitechmediaserver_all.deb

Danach lief der Server auf Port 9000. Er fand die Musik nicht selbstständig, aber nachdem ich ihm gezeigt habe wo ich sie abgelegt hatte funktionierte es.

Troubleshooting

Nach einer Neuinstallation hatte ich das Problem dass der Server eben NICHT auf Port 9000 zu erreichen war. Ein

ps -Al

zeigte dass der Prozess läuft, aber

sudo lsof -i -P -n

ergab dass der Port nicht belegt war. Ich bin im Moment noch auf der Suche warum das nicht klappt.

Leider sind alle Guides und Hilfen schon sehr alt - ein Nachteil daran ein solch altes Produkt zu verwenden.

Mehr dazu am Schluss.

Die Bedienmöglichkeiten gefallen mir schon recht gut, ich kann alle angemeldeten Player steuern und auch synchronisieren. Dann spielen beide Player die gleichen Stücke auch wenn man einen wechselt. Eine Zeitlang schien es auch so als ob die Lautstärken abgeglichen werden, aber diese kann man individuell regeln.

Leider ist zwischen Playern verschiedener Typen zumindest bei Wiedergabe von Radiostreams ein Versatz zu hören. Nicht viel, aber genau so viel dass es in einem Raum stört. Auf verschiedene Zimmer verteilt geht es hoffentlich besser. Ich bin nicht sicher ob der Versatz an der Übertragungsform liegt oder am Gerät selbst - das eine war mein PC am LAN-Kabel, das andere der Zero via WLAN.

Die Bedienung des Servers ist etwas unschön da alles immer dynamisch aufgebaut wird. Das kann manchmal lästig werden. Wechsele ich zum Beispiel aus einem Album wieder in die Liste der Künstler weiß der Server nicht mehr wo ich war und baut die Seite komplett neu auf. Das bedeutet dass ich ziemlich viel scrollen muss.

Alles ist auch etwas langsam und träge - vielleicht wäre es sinnvoll das Ganze auf einem PC laufen zu lassen. Es ist meines Wissens ein PHP- oder Python-Projekt.


Clients

PC via Kommandozeile und per SqueezePlayer

squeezeplay menu

Der erste Client den ich installierte war SqueezeLite für den PC. Das ist ein Kommandozeilenprogramm ohne jegliche Oberfläche, die gesamte Bedienung muss vom Server oder einem anderen Client aus erfolgen. Das funktioniert aber überraschend gut, ist aber auf Dauer natürlich recht unhandlich.

Besser ist das Programm "SqueezePlayer" das eine übersichtliche Oberfläche bietet und auch die Steuerung anderer Clients zuläßt. Allerdings scheint es speziell für ein winziges Display entwickelt worden zu sein, es läßt sich nämlich nicht vergrößern. Die Bedienung ist auch etwas unfreundlich, aber ich hoffe daran gewöhne ich mich noch.

Angeblich soll es auch gehen dass etablierte Abspielprogramme (entweder direkt oder per Plugin) auf den LMS zugreifen und von diesem Musik erhalten können. Das wäre eine interessante Alternative zu diesem Programm.

Kosten: 0€ da ich schon einen Pi sowie den PC am Laufen habe. Ein Pi 3 B+ kostet im Moment 35€, dazu benötigt man noch ein Netzteil für ca. 5€.

 


Raspberry Pi Zero via HDMI

Der Pi Zero ist klein und handlich und würde in das Gehäuse eines Lautsprechers passen. Leider hat er keinen Audio-Ausgang, so dass ich ein HDMI-auf-VGA-Kabel anschloß das einen 3.5mm-Klinkenausgang hat. Daran einen passiven Lautsprecher anzuschließen war nicht so toll - man hörte auch in der höchsten Einstellung nur ganz leise etwas von der Musik. Mit einer aktiven Box geht es dann.

Die Installation war einfach, ich habe lediglich mit Etcher ein aktuelles Raspbian auf eine Karte gespielt und dann Squeezelite zum Testen installiert. Darum läuft auf dem Zero im Moment ein komplettes Linux auf dem ich manuell die Linux-Variante von "SqueezeLite" aufrufe. Mittelfristig möchte ich hier vielleicht eines der 3.5"-Displays einsetzen.

Hier die Anleitung nach der ich vorgegangen bin:

http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-installing-squeezelite-player-on-raspbian/

Kosten: etwa 25€, 20€ für den Pi Zero und 6€ für den HDMI-Adapter mit Klinkenausgang. 5€ für ein Netzteil wenn noch nicht vorhanden.


Alter Raspberry Pi (Model 1?)

Als nächstes überlegte ich meinen allerersten Raspberry als Abspielgerät zu verwenden. Er ist so alt dass ich nicht einmal mehr weiß welches Modell er ist, ein 1.2?

Dieser wird inzwischen von allen Anwendungen als "zu langsam" abgelehnt, nicht mal die Verwendung als einfacher  "intelligenter Spiegel" funktioniert mehr.

Mini Touchscreen Spielt

Aber einfach einen Audiostream weiter zu reichen würde er ja wohl schaffen, oder?

Leider kam ein aktuelles Raspbian auf dem alten Pi gar nicht erst zum Laufen, es kam nicht einmal bis zum Startdialog.

Daraufhin habe ich ein minimales Linux namens "piCorePlayer" heruntergeladen und installiert. Damit startet der Pi und zeigt die Weboberfläche des Players an. Er taucht auch im Medienserver auf und läßt sich wunderbar steuern. Nach einigen Suchen im Internet war es mir sogar möglich einen der 3.5"-Touchscreens als Display zu nutzen. Details dazu weiter unten.

Damit ist dieser alte Pi noch ehrenvoll beschäftigt.

Als Ausgabe dient die Klinkenbuchse des Pi an die ich ein paar via USB versorgte Brüllwürfel von ebay angeschlossen habe. Der Sound ist nicht grandios, reicht aber für Badezimmer oder Küche locker aus.

Kosten: 30€ Pi (muss man inzwischen gebraucht kaufen, und das lohnt nicht), 6€ Lautsprecher und knapp 10€ für den Touchscreen. Beim chinesichen Direktvertrieb bekommt man ihn bestimmt für die Hälfte wenn man Geduld hat. 5€ für ein Netzteil wenn noch nicht vorhanden.


PI Zero mit pHAt DAC

Eigentlich hatte ich den Pi Zero als Abspielmechanismus auserkoren, denn aufgrund seiner kleinen Bauform würde er wunderbar in eine Lautsprecherbox passen.

Allerdings hat er keinen Lautsprecherausgang. Man könnte sich wohl etwas zusammenlöten, aber es war das Wochenende und ich hatte die Teile nicht da. Außerdem wollte ich so wenig Aufwand wie möglich betreiben. 

Variante A war die Lösung mittels HDMI-Kabel die ich weiter vorn beschrieben habe, und dann stieß ich auf der Seite von max2play auf eine weitere Lösung: eine Aufsteckplatine die dem Pi Zero ganz hervorragende Audioeigenschaften geben sollte. Zwar etwas teuer mt etwa 18 Euro, aber wenn die Ausioeigenschaften so gut sind?

Also bestellte ich ein Modul via ebay (so viel zum Thema 'alles am Wochenede ausprobieren') und stellte fest dass es wohl genau den Schaltungen entsprach die ich im Internet gefunden habe. Es sind jedenfalls außer der Buchse nur drei bis fünf Bauteile drauf, keine Ahnung warum das Ding so teuer ist.

Es funktionierte problemlos, blockiert allerdings den GPIO und verhindert damit dass man einen Touchscreen verwendet. Da ich aber die Pins selbst anlöten musste hätte ich vermutlich auch gleich eine weitere Erweiterungsbuchse mit anlöten können und so beide Module nutzen können.

Und, ehrlich gesagt: so viel besser als die Ausgabe via Klinke oder HDMI-Adapter klingt der DAC nicht. 

Kosten: Pi Zero 30€, pHAt DAC 20€, Lautsprecher 6€. 5€ für ein Netzteil wenn noch nicht vorhanden.


 

Gehäuse und 7" Touchscreen - ein neuer Wecker?

RPi TouchGehäuseAuf den Produktfotos ganz gut gefallen hat mir ein Set aus Gehäuse und 7" Touchscreen das offiziell von der Raspberry Foundation entwickelt wurde. Es ist mit 87€ zwar ziemlich teuer, aber es könnte vielleicht als Ersatz für meinen Radiowecker dienen und ins Smarthome eingebunden werden.

As ich es dann aber in der Hand hielt fand ich die Qualität des Materials ziemlich enttäuschend. Ein Stück Plastik (einzeln für 13€ zu haben) und ein relativ billig aussehender Schirm - nicht das was ich für 87€ erwartet hatte.
Es war auch keinerlei Anleitung beigelegt, und die beiliegenden Kabel müssen irgendwie sinnvoll verbunden werden. Die erste Anleitung die ich im Internet gefunden habe war dann gleich einmal falsch.

Und dann ist das Ganze nicht wirklich passgenau, der Schirm hängt etwas schief im Rahmen.

Was mich aber am meisten stört ist dass Strom-, Audio- und HDMI-Kabel nach oben aus dem Gehäuse kommen. Das sieht leider ziemlich unsauber aus, und Platz für Lautsprecher gibt es auch nicht..

Wie gesagt, die Kombination kostet 87€. Dafür ist es mir viel zu billig gemacht und ich überlege das Ding wieder zurückzuschicken.

Darauf wollte ich wie am PC SqueezePlayer laufen lassen, aber für den Raspberry bzw. Linux finde ich das Programm nicht. Ich hätte aber schon ganz gerne diese oder eine ähnliche Oberfläche, denn was nutzt mir der Touchscreen sonst? Außerdem könnte ich dann am "Radio" selbst nichts ändern sondern benötige immer einen anderen Client.

Touchscreen 7"

Das bietet der piCorePlayer, dieser hat eine zusätzlich installierbare Oberfläche "jivelite" die ich vielleicht nutzen kann. Das funktionierte hervorragend und bis auf die Tatsache dass ich dem Gerät mitteilen musste dass das Display zu drehen ist perfekt.

Die Bildqualität ist toll und der Schirm reagiert gut auf Eingaben. 

Hardwaremäßig bin ich weniger zufrieden, denn das Gehäuse hat keinen Platz für Erweiterungen oder Lautsprecher.

Es gibt auch wenig Skins für die 800x480er-Auflösung dieses Touchscreens, was mich doch etwas wundert da es sich ja um "den offiziellen Touchscreen" handeln soll. Wie gesagt, das kommt mir alles etwas mittelmäßig vor - und das bei einem Preis von 87€.

Schlussendlich habe ich das Display dann wirklich zurückgeschickt.

Kosten: Pi 35€, Gehäuse 87€, Lautsprecher 6€, 5€ für ein Netzteil wenn noch nicht vorhanden.


 

MiniTouchscreen3.5" Touchscreen

Von diesem Erfolg gestärkt beschloss ich einen Versuch mit den billigen 3.5"-Screens zu machen die ich vor Wochen in China bestellt hatte. 

Als Quelle verwendete ich http://www.pughx2.com/picore3.html, ich wiederhole hier die wichtigsten Schritte mal.

Zunächst wird piCorePlayer heruntergeladen und auf eine SD-Karte gebracht. Danach hat man eine kleine Windows-Partition auf der ein paar Schritte zu tun sind.

Die Datei cmdline.txt besteht nur aus einer Zeile, an sie muss

fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo 

angehängt werden.

Dann muss das Ende von config.txt verändert werden und dort eine dtoverlay-Einstellung eingefügt werden:

#---Begin-Custom-(Do not alter Begin or End Tags)-----
dtoverlay=piscreen,speed=24000000,rotate=270
#---End-Custom-----------------------------------------

Anschließend empfiehlt der Artikel eine wpa_supplicant.conf zu erstellen, da sich aber piCorePlayer darüber beschwert hat würde ich das beim nächsten Mal nicht mehr machen, vermutlich reicht die WLAN-Einstellung des piCoreplayers aus.

Danach sucht man die "Extensions" auf die erscheinen wenn man den "Beta"-Reiter aufruft. Bei mir erschien danach zuerst nur ein leerer Schirm, aber nach einem F5 war alles zu sehen.

Dort stellt man die Quelle auf  piCorePlayer sourceforge repository um und installiert  pcp-jivelite_default-wav35skin.tcz . Bitte daran denken vor dem Verlassen des Schirms "Reset" zu drücken um diese Einstellung wieder in den Originalzustand zu versetzen.

Ich musste hier zusätzlich noch die HD-Skins deinstallieren, vermutlich wurden diese installiert als ich den 7"-Schirm in Betrieb nahm. Vorher startete jivelite im Sekundentakt neu.

Ein neues Startskript muss als /mnt/mmcblk0p2/tce/jivelite.sh mit dem folgenden Inhalt angelegt werden

#!/bin/sh

#export SDL_VIDEO_FBCON_ROTATION=UD

#export HOME=/home/tc
#export JIVE_FRAMERATE=22
#/usr/sbin/fbset -depth 32
#export SDL_TOUCHSCREEN=1
#TSLIB_CALIBFILE=/usr/local/etc/pointercal
#export SDL_MOUSEDEV=$TSLIB_TSDEVICE
#sudo -E -b /opt/jivelite/bin/jivelite.sh >/dev/null 2>&1

EVENTNO=$(cat /proc/bus/input/devices | awk '/ADS7846 Touchscreen/{for(a=0;a>=0;a++){getline;{if(/mouse/==1){ print $NF;exit 0;}}}}')

export JIVE_NOCURSOR=1
export SDL_VIDEODRIVER=fbcon
export SDL_FBDEV=/dev/fb1
export TSLIB_TSDEVICE=/dev/input/$EVENTNO
export SDL_MOUSEDRV=TSLIB

while true; do
    /opt/jivelite/bin/jivelite
    sleep 3
done

 

und per

chmod +x  /mnt/mmcblk0p2/tce/jivelite.sh

ausführbar gemacht werden.

Dann noch jivelite unter "Tweaks" auf Autostart stellen und nach dem Booten steht eine hübsche Oberfläche zur Verfügung. 

MiniTouchscreenSpielt

Kalibrieren konnte ich den Schirm mit:

sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/event2 /usr/local/bin/ts_calibrate

Und, voila, auch mit diesem kleinen Schirm kann man Musik vom LMS empfangen.

Hier sieht man die Kabelwüste natürlich noch deutlicher, aber hier ist ja auch gar kein Gehäuse dran.

Die Bedienung per beigelegtem Stift und auch dem Finger geht auch auf dem kleinen Schirm gut und nur ein wenig hakelig. Die Klangqualität ist ok, aber nichts um sich übermäßig zu begeistern. Leider belegt der kleine Schirm den GPIO so dass ich den DAC nicht aufstecken kann. Aber dieser war mir eh' zu leise.

Da es schon spät war habe ich nicht allzu lange mit den Schlaf- und Weckerfunktionen herumexperimentiert. Die Einstellungen den Bildschirm nach Ende der Musik abzuschalten wurden jedoch erst einmal ignoriert. Sollte sich der Schirm nicht abschalten oder stark herunterdimmen lassen kann es sein dass er zu hell ist um auf dem Nachttisch zu stehen.

Nachtrag:

Obwohl es die Funktion in piCorePlayer gibt habe ich es nicht geschafft den Bildschirm abschalten zu lassen. Wahrscheinlich könnte man den GPIO direkt ansteuern und den Strom kappen, aber wie das unter dem Player-Betriebssystem funktionieren soll weiß ich leider nicht.


 

Bedenken

Was man aber bedenken muss: diese "Mini-WLAN-Lautsprecher" sind nachher komplette Rechner mit Zugang ins Internet. Das bedeutet sie müssen vor Viren und anderen Angriffen geschützt werden. 

Einbindung in Home Assistant

HA Squeeze Detail

Extrem einfach war es das Ganze in Home Assistant zu steuern. Mit dem Eintrag 

media_player:
  - platform: squeezebox
    host: 192.168.178.???

HA Squeeze 250

lernt Home Assistant den Medienserver kennen und wird von diesem über die Player unterrichtet. 

Diese kann man dann in die Overfläche einrichten und dort detailliert steuern:


Fehlersuche

Nach einer Neuinstallation hatte ich das Problem dass der Server eben NICHT auf Port 9000 zu erreichen war. Ein

ps -Al

zeigte dass der Prozess läuft, aber

sudo lsof -i -P -n

ergab dass der Port nicht belegt war. Ich bin im Moment noch auf der Suche warum das nicht klappt.

Leider sind alle Guides und Hilfen schon sehr alt - ein Nachteil daran ein solch altes Produkt zu verwenden.

Der Aufruf von 

squeezeboxserver

allein sagte dann schon mehr:

LMS debug

Die Suche nach diesen Fehlern ergab dann dass die Perl-Version inzwischen zu neu ist um korrekt zu arbeiten. Alternative: den LMS neu compilieren. Das erschien mir aber dann doch etwas übertrieben, denn auf meinem Minimal-Pi ist kein Compiler und nichts.

Ein Besuch auf 

http://update-origin.slimdevices.com/update/firmware

zeigte jedoch eine Version 7.9.2 die ich dann herunterlud und installierte - und schon ging alles.