Sonntag, 1. März 2015

Raspberry als Shairport Empfänger 2015

Shairport läuft und läuft. Derzeit habe ich Shairport auf drei Rapsberrys in der Wohnung. Das läuft so stabil, das ich mich mit dem Projekt auch kaum beschäftigt habe.
Mittels RSS Feed habe ich aber die Entwicklung von Shairport auf github weiter verfolgt und so auch die Nachricht des Entwicklers gelesen, dass Shairport nicht weiter entwickelt wird.
ShairPort is no longer maintained
As I no longer use Shairport myself, I am no longer maintaining or supporting Shairport. Thanks to everyone who has contributed over the years; it's been a great experience. For the ongoing user, there are a great many forks and ports to choose from now, many of which are of a very high quality and well maintained. — James 
Dabei verweist der Entwickler auf Forks, also Entwicklungszweige, von denen es fast 400 gibt. Die ernsthaft weiterentwickelten Forks sind wohl so eine Handvoll. Eine der am konsequentesten betriebenen Forks scheint der von Mike Brady zu sein.

Da ich jetzt einige meiner Raspbians auf Jessie aktualisiert habe, habe ich mich entschlossen auch für einen der Shairport diesen Schritt zu gehen und dabei Shairport von abrasive (James) auf diesen Fork von Mike Brady zu setzen.

Nach dem der Raspberry mit einem neuen Image von Raspbian bespielt wurde habe alle nicht benötigten Pakete aus dem Image entfernt und auf Raspbian Testversion Jessie aktualisiert.

Anschließend werden die notwendigen Pakete installiert

apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev

Mike Brady empfiehlt auch Avahi zu verwenden, welches mit

apt-get install avahi-daemon libavahi-client-dev

installiert wird. Man kann auch auf SSL zurückgreifen wobei man die Auswahl zwischen OpenSSL und PolarSSL hat. Da OpenSSL sowieso schon auf dem System ist muss kein weiteres Paket installiert werden. Eine weitere Option ist das Resamplen mit SoXR. Dies möchte ich hier übergehen, da es für mich nicht notwendig ist. Jetzt sind alle Voraussetzungen für Shairport-Sync auf dem Raspberry – benötigt wird nun der Shairport selbst, der mit dem folgenden Befehl heruntergeladen wird:

git clone https://github.com/mikebrady/shairport-sync.git

Wenn der Download heruntergeladen ist, wechseln wir in das entsprechende Verzeichnis

cd shairport-sync

Dort werden zuerst mit autoreconf die Konfigurationsdateien für die Installation erstellt.

autoreconf –i –f

Wenn dieser Schritt abgeschlossen ist wird die Konfiguration gestartet und die entsprechenden Parameter der Konfiguration übergeben. Für meine Konfiguration sieht der Befehl so aus:

./configure --with-alsa --with-avahi --with-ssl=openssl

Ist die Konfiguration abgeschlossen, wird mit

make

Shairport-Sync erstellt und anschließend mit

make install

in die entsprechenden Verzeichnisse installiert. Dabei wird auch ein Start Skript erstellt, damit der Shairport-Sync beim Start des Raspberry mitstartet. Da wir aber auf Raspbian Jessie gesetzt haben funktioniert das so nicht mehr. Also wird ein systemd Startskript benötigt, welches Shairport-sync für uns startet und stoppt. Dazu erstellen wir folgende Datei:

nano /etc/systemd/system/shairport-sync.service

dort wird dann folgender Text eingefügt:

[Unit]
Description=Shairport AirTunes receiver
After=sound.target
Requires=avahi-daemon.service
After=avahi-daemon.service
[Service]
Type=simple
ExecStart=/usr/local/bin/shairport-sync -a "MyShairport"
Restart=always
[Install]
WantedBy=multi-user.target

MyShairport ersetzt ihr durch den Namen, welcher euer Shairport Empfänger im Netzwerk haben soll. Die Datei wird gespeichert und anschliessend Shairport-Sync zu den Systemdiensten hinzugefügt:

systemctl enable shairport-sync.service

Ist das geschehen, kann der Shairport gestartet werden. Dies erfolgt über

systemctl start shairport-sync.service

und mit dem Befehl

systemctl status shairport-sync.service

kann geprüft werden ob Shairport läuft. Die Ausgabe sollte ungefähr so aussehen:

shairport-sync.service - Shairport AirTunes receiver
Loaded: loaded (/etc/systemd/system/shairport-sync.service; enabled)
Active: active (running) since Sun 2015-03-01 17:33:51 UTC; 3s ago
Main PID: 3040 (shairport-sync)
CGroup: /system.slice/shairport-sync.service
           ââ3040 /usr/local/bin/shairport-sync -a MyShairport

Mar 01 17:33:51 spi03 systemd[1]: Started Shairport AirTunes receiver.
Mar 01 17:33:51 spi03 shairport-sync[3040]: startup

Zu letzt kann man noch testen, ob nach einem Reboot Shairport-Sync auch läuft. Damit wäre das Tutorial Shairport-Sync auf Rasbian Jessie auch vollständig. Viel Spass beim Was-auch-immer-hören