Squeezebox-Server

Wenn man im Besitz einer Squeezebox ist, braucht man einen entsprechenden Server dazu. Man kann zwar den Logitech eigenen Server im Internet nutzen, jedoch ist es dann nicht so einfach möglich eigene und nur im eigenen Netzwerk befindliche MP3s zu hören. Da der Pi sich natürlich durch den sehr stromsparenden Betrieb als Dauerläufer eignet, kommt man schnell auf die Idee diesen als Squeezebox-Server einzusetzen. Fangen wir also mit der Installation an.

Zunächst sollten wir, wie im Kapitel „Grundinstallation“ beschrieben das Betriebssystem aktualisieren. Ist das geschehen brauchen wir zunächst einige Betriebssystemmodule, dir wir mit dem folgenden Befehl installieren:

sudo apt-get install libjpeg8 libpng12-0 libgif4 libexif12
sudo apt-get install libswscale2 libavcodec5 patch

Sind die Module alle installiert, laden wir uns den Squeezebox-Server von Logitech herunter. Dazu geben wir folgende Befehle ein:

cd /tmp
wget http://downloads.slimdevices.com/LogitechMediaServer_v7.7.3/logitechmediaserver_7.7.3_all.deb

Der Download dauert ein wenig, da das Softwarepaket rund 90 MB groß ist. Nach dem Download installieren wir nun wie folgt den Squeezebox-Server:

sudo dpkg -i logitechmediaserver_7.7.3_all.deb

Direkt nach der Installation wird der Squeezebox-Server gestartet. Da wir aber noch ein paar Anpassungen vornehmen müssen, stoppen wir ihn mit folgendem Befehl:

sudo service logitechmediaserver stop

Jetzt laden wir uns ein Paket mit einigen Patches für den Squeezebox-Server herunter und entpacken die Archivdatei:

wget http://c64-online.com/files/Raspberry/lms-patches.tgz
tar -xzvf lms-patches.tgz

Nun können wir das Skript starten, welches die Patches installiert und einige Dateien kopiert:

./lms-patch.sh

Jetzt müssen wir noch ein paar Berechtigungen korrigieren, damit der Server funktioniert:

sudo chown -R squeezeboxserver:nogroup /usr/share/squeezeboxserver/

Nun könnten wir eigentlich den Squeezebox-Server starten. Allerdings nutzt dieser für die Daten der einzelnen Mediendateien eine SQL-Datenbank, die jetzt auf der SD-Karte liegt. Das ist für kleinere Sammlungen (bis ca. 2.000 Dateien) durchaus ok. Allerdings bei größeren Sammlungen führt das dazu, dass der Start, Suchanfragen und der Aufbau der Webseite sowie auch die Bedienung der Squeezebox erheblich verlangsamt wird. Aus diesem Grunde sollte man die Datenbank auf eine USB-Festplatte verschieben.

Ich gehe davon aus, dass eine Festplatte bereits an den Pi angeschlossen und fehlerfrei gemountet ist. Unter „Tips & Tricks“ gebe ich auf dieser Seite dazu noch ein paar Infos. In diesem Beispiel nehme ich als Pfad zur USB-Festplatte /media/hdd01 an. Diesen musst Du entsprechend Deiner Konfiguration bei den kommenden Befehlen anpassen!

sudo mkdir -p /media/hdd01/squeezebox-db
sudo mv /var/lib/squeezeboxserver/cache /media/hdd01/squeezebox-db/.
sudo ln -s /media/hdd01/squeezebox-db/cache /var/lib/squeezeboxserver/cache

Damit haben wir die Datenbank auf die USB-Festplatte verschoben und einen sogenannten Soft-Link von dem ursprünglichen Verzeichnis auf das Verzeichnis der Festplatte erzeugt. Der Vorteil liegt darin, dass die Konfiguration des Squeezebox-Servers nicht verändert werden muss uns im Falle eines Updates keine Probleme zu erwarten sind. Bei einer Deinstallation des Squeezebox-Servers sollte man dann allerdings den Link manuell mit dem rm-Befehl wieder entfernen.

Zum guten Schluss starten wir jetzt den Squeezebox-Server mit folgendem Befehl:

sudo service logitechmediaserver start

Damit der Server dann auch beim Booten automatisch startet könnte man in den sogenannten Runlevel-Verzeichnissen einen Link setzen. Das ergibt aber das Problem, dass der Server startet, bevor die Landeseinstellungen gesetzt sind. Dadurch wird an der Squeezebox z.B. Zeit und Datum in englisch angezeigt. Also sollten wir diesen Befehl in die /etc/rc.local setzen. Das sudo können wir dabei weglassen, da beim Booten die Datei ohnehin mit vollen Berechtigungen ausgeführt wird.

Außerdem sollte der Befehl dann als Letztes in der Datei erfolgen. Vor allem dann, wenn die Datenbank auf einer USB-Platte liegt und Du meinen Tip mit dem Mounten in der rc.local-Datei befolgt hast. Denn erst muss die Festplatte gemountet werden, bevor der Server auf die Datenbank zugreifen kann!

Der Squeezebox-Server ist nach dem Start (der dauert 1-2 Minuten) unter http://192.168.1.11:9000 erreichbar. Wobei Du natürlich die IP-Adresse mit der Deines Pi ersetzen musst.

13 Kommentare

  1. Hallo,

    erstmal vielen Dank für Deine Anleitung „Squeezebox-Server“! Damit war es ganz einfach, einen Raspberry Pi als Musikserver einzurichten.

    Aber zu den Patches (lms-patches.tgz) habe ich zwei Fragen:

    Wofür sind diese Patches gut? Funktioniert der LMS sonst gar nicht auf dem Raspberry? Oder bekomme ich zusätzliche Funktionen? Oder mehr Performance? Oder bestimmte Fehler nicht mehr?
    Funktionieren die Patches auch mit neueren Versionen des LMS?

    Vielen Dank und
    schöne Grüße

    Carsten

  2. Hallo,

    ich habe bislang an zwei Stellen Probleme:

    nach

    pi@raspi:~# sudo apt-get install libswscale2 libavcodec5 patch

    kommt

    Paketlisten werden gelesen… Fertig
    Abhängigkeitsbaum wird aufgebaut.
    Statusinformationen werden eingelesen…. Fertig
    E: Paket libswscale2 kann nicht gefunden werden.
    E: Paket libavcodec5 kann nicht gefunden werden.

    Wenn ich versuche, den patch runterzuladen (wget…), funktioniert es leider nicht – er wirft folgende Meldung aus:

    pi@raspi:/tmp# wget http://c64-online.com/files/Raspberry/lms-patches.tgz
    –2015-12-19 18:24:33– http://c64-online.com/files/Raspberry/lms-patches.tgz
    Auflösen des Hostnamen »c64-online.com (c64-online.com)«… fehlgeschlagen: Der Name oder der Dienst ist nicht bekannt.
    wget: kann die Host-Adresse »c64-online.com« nicht auflösen
    root@raspi:/tmp# wget http://c64-online.com/files/Raspberry/lms-patches.tgz
    –2015-12-19 18:25:27– http://c64-online.com/files/Raspberry/lms-patches.tgz
    Auflösen des Hostnamen »c64-online.com (c64-online.com)«… fehlgeschlagen: Der Name oder der Dienst ist nicht bekannt.
    wget: kann die Host-Adresse »c64-online.com« nicht auflösen

    Hast Du einen Hinweis/eine Lösung?

    Danke und viele Grüße

    GK

    • Hallo,

      versuche als erstes bitte einmal „sudo apt-get update“. Es könnte sein, dass Deine Paketquellen aktualisiert werden müssen.

      Als zweites scheint es ein Problem mit dem verwendeten DNS-Server zu geben, so dass er „c64-online.com“ nicht auflösen kann. Evtl. ein temporäres Problem. Versuche mal bitte, die Adresse per Ping zu erreichen.

      Viele Grüße
      Thomas

  3. Hm meinen Recherchen nach haben sich die Namen der Pakete libswscale2 und libavcodec5 geändert. Wer einmal auf ähnliche Probleme stößt, kann sich einfach behelfen:

    apt-cache search libavcodec5

    Damit sucht man im Repository nach einem Paket, das mit libavcodec5 beginnt. Es wird zwar kein Paket mit exakt diesem Namen gefunden – allerdings gibt es libavcodec56. Bei nächsten Paket, libswscale2, wird sogar erstmal gar nichts gefunden, also lässt man die 2 mal weg und sucht nach libswscale – dann findet man ein Paket mit dem Namen libswscale3.

    Der Befehl zum Laden und Installieren sieht also jetzt so aus:

    sudo apt-get install libswscale3 libavcodec56 patch

    Damit funktioniert es einwandfrei. 🙂

    Dafür habe ich jedoch Fehler erhalten, als ich die Patches auf die neueste Version 7.7.5 des Logitech Media Servers anwenden wollte:

    root@raspberrypi:/tmp# ./lms-patch.sh
    patching file /usr/share/perl5/Slim/bootstrap.pm
    Hunk #1 FAILED at 115.
    1 out of 1 hunk FAILED — saving rejects to file /usr/share/perl5/Slim/bootstrap.pm.rej
    mv: cannot move ‘arm-linux-gnueabihf-thread-multi-64int’ to ‘/usr/share/squeezeboxserver/CPAN/arch/5.14/arm-linux-gnueabihf-thread-multi-64int’: Directory not empty

    #

    Das Patch-Skript wurde ausgeführt

    #

    Ich habe dann das Paket wieder deinstalliert und die Version 7.7.3 heruntergeladen, wie hier beschrieben – damit ging dann alles fehlerfrei. Trotzdem hätt ich gern die neueste verwendet… 😉

  4. Ich habe immer ein Fehlverhalten mit dem Server. Eine Ahnung, woran es liegen kann?

    pi@rasdejo:/var/log/squeezeboxserver $ tail -f server.log
    2016-03-14 18:17:47 Logitech Media Server died. Restarting.
    2016-03-14 18:17:52 Logitech Media Server died. Restarting.
    2016-03-14 18:17:57 Logitech Media Server died. Restarting.
    2016-03-14 18:18:02 Logitech Media Server died. Restarting.
    2016-03-14 18:18:07 Logitech Media Server died. Restarting.
    2016-03-14 18:18:12 Logitech Media Server died. Restarting.
    2016-03-14 18:18:17 Logitech Media Server died. Restarting.
    2016-03-14 18:18:22 Logitech Media Server died. Restarting.
    2016-03-14 18:18:27 Logitech Media Server died. Restarting.
    2016-03-14 18:18:32 Logitech Media Server died. Restarting.

  5. Vielen Dank für die gute Beschreibung um den Server aus zu setzen. Hat alles soweit funktionert.
    Nun habe ich aber meine Lieder auf einem NAS liegen, für einen USB Stick ist das woh zu viel.
    Kann mit jemand weiter helfen, wie ich den anstelle des USB Sticks einbinde?

    • Hallo Claus,

      das ist eigentlich kein Problem. Das NAS muss nur gemountet werden und als Medienquelle in die Konfiguration des Servers eingebunden sein. Quick and dirty: Du mountest das NAS unterhalb des USB-Stick-Verzeichnisses. Sollte man aber nicht dauerhaft so lassen, da man sich so nicht wirklich gut im Filesystem zurecht findet.

  6. Hy zusammen
    Hab den LMS installiert, Installation lief sauber durch . Pakete libswscale2 und libavcodec5 musste ich ebenfalls wie weiter oben beschrieben installieren.
    Jetzt hab ich folgendes Problem: unter Ip:9000 bekomme ich die Fehlermeldung

    „Firefox kann keine Verbindung zu dem Server unter 192.168.0.107:9000 aufbauen.“

    Laut “ ps aux“ läuft der Prozess aber.

    Hat jemand einen Tipp?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax