Rund um die Squeezebox ...

Squeezebox

[Squeezebox Nachbau] [Weiterer Squeezebox Nachbau]
2 verschiedene Raspberry PI basierende Squeezebox-Nachbauten, links: erstes Gehäuse, rechts: neues Gehäuse ("Smarticase") mit IR-Fernbedienbarkeit

Die ehemalige Logitech Squeezebox war bzw. ist ein feines System um eine größere Musiksammlung und Radioprogramme in sehr guter Qualität auf eine Stereoanlage streamen zu können. Leider wurde die Produktion der Hardware im Jahr 2012 eingestellt.

Es gibt zwar mittlerweile etliche Geräte die Netzwerkfunktionalität bieten. Allerdings haben die Lösungen immer einen oder mehrere dicke Haken:

Im Gegensatz dazu steht der Logitech Mediaserver, der zwar kein UPnP Server ist, aber dafür Open-Source und insbesondere für die Verwaltung vieler Musikdateien sehr gut geeignet ist. Die neuen Versionen sind stand-alone fähig und laufen auch ohne Zugriff auf das Internet. Da es - obwohl die Anfänge ins Jahr 2000 zurückreichen - eine offene Plattform ist, gibt es natürlich auch gute Unterstützung für moderne Smartphones und Steuerprogramme für den PC.

Nachbauideen

Da es sich um eine offene Plattform handelt deren Protokoll und Konfiguration beschrieben ist gibt es mittlerweile viele Nachbauideen. Viele basieren auf dem Raspberry PI Board und dem "Headless"-Player squeezelite. Für komfortables Abspielen habe ich mir einen Player basierend auf dem Raspberry PI 2 Model B Board mit dem 7" Touch Display zur Steuerung und Hifiberry-Digi+ für die Audioausgabe gebaut. Mittlerweile gibt es ein preislich attraktives Gehäuse, das SmartiCase mit passender Abdeckung. Das erste Gehäuse das ich verwendet habe, war leider relativ teuer und nicht sooo geschickt für diesen Aufbau geeignet. Beide Gehäuse mussten aber nachgearbeitet werden, damit die SPDIF Kabel eingesteckt werden können. Als Software verwende ich den piCore Player. Dieser basiert auf TinyCore Linux, SqueezeLite als Player und Jivelite als grafische Steuerung.

Hardware...

Folgende Teile verwende ich für den Aufbau Raspberry Pi2 Model B bzw. Raspberry Pi3 Model B, original 7" Touch-Display, Hifiberry Digi+ oder Hifiberry DAC+ und ein recht gut passendes Gehäuse (siehe jeweils unten). In meinem Setup übernimmt ein PoE Splitter die Stromversorgung, dadurch kann das Board z.B. Nachts automatisiert abgeschaltet werden (zentral per Software gesteuert).

Die neuen Versionen des piCorePlayer haben IR Support. Dieser basiert auf lirc. Da muß man ein paar Details anpassen damit es wirklich so eingerichtet ist, das wichtige Details funktionieren.

Raspberry Pi2 B im ersten Gehäuse

Kurz hier der Aufbau. Angefangen wird mit dem 7" Touch Display des Raspberry PI Boards welches mittlerweile schon vormontiert geliefert wird.

[Raspberry PI 7 Zoll Display Platinenseite]

Darauf wird dann direkt das Raspberry PI Board auf die vorgesehenen Abstandshalter gelegt um die weitere Montage voranzutreiben.

[Board während der Montage]

Hier habe ich direkt die nötige Verbindung für die 5V Spannungsversorgung von Display bzw. Raspberry PI Board hergestellt um diesen Zwischenschritt zu testen. Eigentlich muß ja direkt das HifiBerry-Digi+ Board auf das PI Board montiert werden. Im folgenden Bild habe ich die nackte Platine fotografiert wie man sie z.B. bei Reichelt bestellen kann. Auf dem Platz "P3" muß eine 2 polige 90° Pfostenleiste eingelötet werden, damit die Spannungsversorgung des Displays weiter sichergestellt werden kann. Im Bild habe ich den entsprechenden Platz "P3" mit einem roten Pfeil markiert.

[Hifiberry Digi+]

Beim Hifiberry Digi+ Board sind 4 Kunststoff Distanzhülsen dabei. Diese müssen um ca. 2 mm gekürzt werden, ansonsten passt die Cinch Buchse für die elektrische SP/DIF Schnittstelle nachher nicht ins Gehäuse herein. Hierzu habe ich die Distanzhülsen auf der Seite mit dem Innengewinde einige Male über ein 120er Schleifpapier gezogen bis die 1~2mm abgetragen sind. .

[Raspi Komplettaufbau]
So sieht der Aufbau dann komplett ohne Gehäuse aus. Am Anschluß P3 liegen glücklicherweise GND und 5V an, so daß man hieraus die Spannungsversorgung des Displays sicherstellen kann.

Im nächsten Schritt muß die Mittelachse der Cinch Buchse des Hifiberry Boards gegen die analoge Audiobuchse des Raspberry Boards vermessen werden und auf dem Gehäuse angezeichnet werden. Dann kann man ein 4 oder 5 mm Loch bohren. Ich habe leider keine Tischbohrmaschine daher durfte ich mit dem Akkuschrauber nur ein kleines Loch bohren, da ansonsten das Risiko besteht, daß der Bohrer beim Bohren ins Bohrloch gezogen wird und die Kräfte für das Kunststoffgehäuse zu groß werden.

Mangels anderer Werkzeuge habe ich die weitere Ausformung des nötigen Gehäuseausbruchs komplett mit Laubsäge und Feile gemacht. Dazu habe ich eine gute Stunde gebraucht. Im Bild sieht man einen Zwischenschritt während der Bearbeitung. Immer wieder muß der Staub weggeblasen werden und die Passgenauigkeit des kompletten Platinenaufbaus getestet werden. Der Ausbruch für die Cinch Buchse geht genau bis an die obere bzw. im Betriebszustand hinteren Gehäusekante. Wenn man im obigen Schritt die Distanzhülsen entsprechend gekürzt hat bleibt ein kleines bißchen Abstand.

[Raspi Gehaeuse]

Raspberry PI3 mit Display und IR Empfänger im Smarticase

Nun habe ich den 2. Player im Smarticase aufgebaut, einen Player mit analogem Ausgang (weil das Zielsystem nur einen Analogeingang hat).

Der Einbau von Display und Raspberry PI Board ins Smarticase beschreibe ich hier nicht. Das haben schon andere erledigt.

Ich habe ein Bild gemacht, wie man eine IR LED im Smarticase-Gehäuse an die Hifiberry Digi+ bzw. hier im Bild die DAC+ Platine anschließt. Verkabelt man den IR Empfänger wie beschrieben, so steht das nicht im Weg mit dem I2C und dem SPI Bus den der Audiocontroller auf der Zusatzplatine braucht. Hier landet das dekodierte IR Signal an GPIO Pin 24. Die anderen beiden Pins sind Masse und 3,3 V (siehe das interaktive Raspberry PI pinout). In diesem Posting im Squeezeboxforum kann man nachschauen wie der IR Support aktiviert wird. Wie im "ersten Gehäuse" wird auch hier der 5V Zweig des Displays über die Hifiberry Digi+ Platine an das Pi Board weitergeschickt.

[Anschluss IR Empfänger]

Einbau des IR Empfängers

In diesem Player habe ich einen IR Empfänger TSOP 4838 eingebaut. Dieser muß wie oben beschrieben an 3,3V, GND und GPIO Pin24 angeschlossen werden. Hierzu müssen in das Smarticase zwei 4,5 mm Löcher gebohrt werden. Durch das eine Loch (nach vorne) kann der IR Empfänger "nach außen schauen" und die IR Signale empfangen. Das andere Loch dient dazu das Kabel ins Smarticase und dort drinnen dann zum Raspberry Pi zu führen.

[Gebohrte Löcher]
Die am Smarticase erforderlichen Löcher für den Empfänger und die Verkabelung

Die Anschlußdrähte habe ich mit Isolierband gesichert und dann mit einem Schrumpfschlauch eingeschrumpft.

[IR Empfänger] [Anschlußkabel]
IR Empfänger direkt mit zwei 4,5 mm Löchern am Smarticase befestigt und verkabelt.

Der IR Empfänger kann dann direkt auf das Loch geklebt werden. Vorsichtige Naturen nehmen einen lösbaren Kleber oder Isolierband.

Softwareanpassungen damit der IR Empfang klappt

Folgendes muß zur Aktivierung des IR Empfängers über die Shell des piCore Player konfiguriert werden

sudo mount /mnt/mmcblk0p1
Edit /mnt/mmcblk0p1/config.txt
Add at the end of file dtoverlay=lirc-rpi,gpio_in_pin=24
sudo umount /mnt/mmcblk0p1

lirc

Damit squeezelite auch über eine IR Fernbedienung gesteuert werden kann muß eine Fernbedienung angelernt werden. Dies geschieht mit der Application irrecord. Faule Menschen gucken aber zuvor einfach in der Datenbank schon gelernter IR Fernbedienungen vorbei und holen sich die Konfigurationsdatei /usr/local/etc/lirc/lircd.conf herunter und installieren sie ebenda (ansonsten halt die Tastencodes manuell anlernen, geht auch recht flott. Wenn man es ganz einfach haben will kann man die u.g. HAMA Fernbedienung mit meiner unten verlinkten Konfiguration verwenden. Damit die Datei über einen reboot hinaus gespeichert wird, muß die Anpassung aus dem oben verlinkten Forenartikel gemacht werden und die Konfiguration gesichert werden.

Die folgenden Dateien spielen eng zusammen

Am besten funktioniert die Steuerung von jivelite über virtuelle "Tastaturkommandos" die lircd direkt an die Applikation sendet. In lircd.conf werden die Tastendrücke konfiguriert, die in InputToActionMap.lua zur Steuerung von jivelite akzeptiert werden.

Eine richtige Fernbedienung verwenden

Damit das ganze richtig nett funktioniert und ich nicht auf eine Fernbedienung aus meiner eigenen Grabbelkiste angewiesen bin habe ich mir eine mit Codes programmierbare Universalfernbedienung gekauft und angelernt. Ich beschreibe es hier, weil das wahrscheinlich für viele das Leben einfacher macht. Ich verwende die unten genannte Fernbedienung mit der Version 3.22 von piCore Player.

Gekauft habe ich eine Hama 4-in-1-SmartTV Universalfernbedienung für knapp 10 Euro bei Amazon (weil die recht preiswert war, keine Kritiken über plötzliches Versagen zu finden waren und nur 2 * AAA Batterien gebraucht werden). Ich habe auf die TV Funktion den Panasonic TV Code 5511 eingestellt, das ist offensichtlich eine Fernbedienung die RC-5 Codes verwendet. (Auf dieser FB: Lange Setup drücken bis die LED unter der Power Taste leuchtet, dann "TV", dann 5, 5, 1, 1. Die LED geht dann aus) Mit der folgenden lircd.conf Konfigurationsdatei die man nach /usr/local/etc/lircd/lircd.conf kopieren muß funktionieren alle mir wichtigen Funktionen:

[Hama Fernbedienung]
Die Fernbedienung mit dem Codebüchlein. Für die hier verlinkte Config muß der Panasonic TV mit id 5511 auf dieser FB eingestellt werden

Ich bin sehr zufrieden damit.