ShairPort – Raspberry als AirPlay-Server

Jeder der im Apple-Universum zuhause ist, wird die drahtlose Schnittstelle AirPlay bereits kennen. Mit dieser lassen sich Inhalte von iOS und OSX auf AirPlay-fähige Empfangsgeräte übertragen. So lässt sich zum Beispiel die Musik vom iPhone drahtlos auf kompatible Lautsprechern abspielen. AirPlay-Empfänger von Apple liegen jedoch leider in einer etwas höheren Preisklasse. Wieso also nicht den Raspberry zum AirPlay-Empfänger aufrüsten. Mit ShairPort ist dies möglich. In diesem Beitrag erkläre ich euch, wie ihr ohne extra Hardware den Raspberry zum AirPlay-Empfänger aufrüstet.

Vorbereitung

Wie bei den meisten Raspberry-Projekten, ist auch hier wieder etwas Vorbereitung notwendig. Zuerst sollte das System auf den neusten Stand gebracht werden. Anschließend werden dann die benötigten Pakete installiert:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libssl-dev libavahi-client-dev libasound2-dev avahi-daemon

Solltet ihr „GIT“ noch nicht auf eurem Raspberry installiert haben, muss dies vorher noch erledigt werden. Mehr dazu auf meinem Blog-Beitrag.

Des Weiteren solltet ihr OpenSSL bereits installiert haben oder es nun entsprechend nachholen:

sudo apt-get install openssl

Downloaden und Kompilieren von ShairPort

Die ShairPort-Software hat es bis jetzt noch nicht in die offizielle Paketquelle von Raspbian geschafft. Dies hat zur Folge, dass man sich den Quellcode selber downloaden und anschließend kompilieren muss.

git clone https://github.com/abrasive/shairport.git shairport
cd shairport
./configure
make
sudo make install

Der Befehl „git“ lädt den Quellcode in den Ordner „shairport“. Anschließend wechseln wir mit „cd“ in diesen Ordner und beginnen mit den Befehlen „make, make install“ mit dem kompilieren.

Durch das „Selbstkompilieren“ wurden jedoch nur die Programm-Dateien kopiert. Es fehlt noch die Konfigurationsdatei und das Initialisierungsskript. Diese werden mit den folgenden Befehlen an die entsprechende Stelle kopiert:

sudo cp scripts/debian/init.d/shairport /etc/init.d/
sudo cp scripts/debian/default/shairport /etc/Default/

Konfiguration anpassen

Nachdem ShairPort installiert wurde, kann man sich an das Konfigurieren machen. Dazu wird die Konfigurationsdatei mit dem Editor geöffnet:

sudo nano /etc/default/shairport

Die nun geöffnete Datei sollte wie folgt angepasst werden:

# Shairport Daemon options
# Uncomment and modify lines to change defaults
#

# User and group under which shairport should be run
# user should have permission to output sound
# Check the audio output documentation for details.
USER=Daniel
GROUP=nogroup

# Process' nice on start
#NICE=0

# File where log messages should be redirected.
# If a non-default log or error file is used, and logrotate is configured with
# the provided configuration file, then the paths of the log files should be
# updated in /etc/logrotate.d/shairport to reflect the value of $LOGFILE and $ERRFILE
#LOGFILE=/var/log/shairport.log

# If empty, errors are redirected to LOGFILE
#ERRFILE=/var/log/shairport.err

#PIDFILE=/var/run/shairport.pid

# Set the AirPlay advertised name.
# Defaults to computer's hostname
AP_NAME=Raspberry-Pi3

# Set output driver and options
# Defaults to the first available, depends on the build options
# Check 'shairport -h' for details
#OUTPUT=ao
#OUTPUT_OPTS=

# Force the mDNS backend
# By default, shairport will try all backends until one works.
# Check 'shairport -h' for details
MDNS=avahi

# Change how many frames re required to start playing
#BUFFER_FILL=220

#RUN_ONSTART=
#RUN_ONSTOP=

Der Eintrag „USER“ gibt an, unter welchem Benutzer ShairPort ausgeführt werden soll. Entweder nutzt ihr euren Standard-Benutzer oder ihr erstellt einen extra Benutzer. Mit „AP_NAME“ kann man den Namen festlegen, mit dem der Raspberry später als AirPlay-Empfänger auftritt. Des Weiteren muss das „‚#“ vor dem Eintrag „MDNS=avahi“ entfernt werden.

ShairPort starten

Der AirPlay-Empfänger ist nun fertig installiert und konfiguriert. Dem Start steht also nichts mehr im Wege. Bevor man ihn jedoch startet, sollte man den „Autostart“ des Raspberrys bearbeiten:

sudo update-rc.d shairport defaults

Dies bewirkt, dass ShairPort bei einem Neustart des Raspberrys automatisch mit gestartet wird. Zum Starten von ShairPort ist es jedoch nicht nötigt, den Raspberry neu zu starten. Mit diesem Befehl lässt sich ShairPort auch manuell starten:

sudo service shairport start

Ein manuelles Stoppen ist natürlich auch möglich:

sudo service shairport stop

ShairPoint mit FHEM steuern

ShairPort lässt sich natürlich auch mit FHEM starten und stoppen. Dafür wird einfach ein Dummy-Schalter definiert:

define AirPlay dummy

Den Dummy nun noch als Schalter definieren:

attr AirPlay setList on off

AirPlay Schalter FHEM

Damit dieser Schalter auch eine Funktion hat, definieren wir zwei Notifys, die auf den Status des Schalters „AirPlay“ reagieren.

define AirPlayNotifyAUS Notify AirPlay:off.* {system("sudo /etc/init.d/shairport stop")}
define AirPlayNotifyAN Notify AirPlay:on.* {system("sudo /etc/init.d/shairport start")}

Damit FHEM aber mit sudo-Rechten ShairPort starten und stoppen kann, muss dem User fhem dies noch erlaubt werden. Dazu wird die Datei /etc/sudoers mit folgendem Befehl bearbeitet:

sudo visudo

Dieser Befehl öffnet mit dem Standard Text-Bearbeitungsprogramm die Datei /etc/sudoers. Beim Raspberry meistens „nano“. Im Gegensatz zum direkten Aufruf mit „sudo nano…“, prüft visudo die Syntax der Datei auf Fehlern und verhindert so eine Fehlkonfiguration.

Die nun geöffnete Datei sollten nun mit folgenden Eintrag ergänz werden:

fhem ALL=(ALL) NOPASSWD:/etc/init.d/shairport

Sollte bereits ein solcher Eintrag existieren, einfach „/etc/init.d/shairport“ durch ein Komma getrennt hinten dran hängen. Mit „Strg+X“ wird gespeichert.

Der AirPlay-Server auf dem Raspberry sollte sich nun mit dem Schalter an und aus schalten. Am besten direkt auf einem iOS Gerät teste:

iOS AirPlay FHEM

Problemlösung

Ein häufig auftretendes Problem ist, dass man kein einzigen Ton aus dem Raspberry rausbekommt. Keine Panik. Dies liegt meistens daran, dass dem Raspberry nicht mitgeteilt wurde, dass der Ton nun über den analogen Klinke-Ausgang ausgegeben werden soll. Dies kann man ganz einfach über das Konfigurationsmenü des Raspberrys geändert werden:

sudo raspi-config

sudo-config

Unter dem Menü-Punkt „9 Advanced Options“ und dann unter „A9 Audio“ lässt sich einstellen, welcher Ausgang für die Ton-Ausgabe verwendet werden soll. Die Ton-Ausgabe lässt sich mit diesem Befehl testen:

speaker-test -t sine -f 500

 

Hinterlasse einen Kommentar

6 Kommentare auf "ShairPort – Raspberry als AirPlay-Server"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Nico
Gast
Nico

Hallo Daniel,

Echt cooler Beitrag!

ich hätte aber noch eine Frage, kann man denn AirPlay Ton auch auf die Lautsprecher die in FHEM implementiert ist abspielen ( z. B. Sonos lautsprecher )?

LG
Nico

Nico
Gast
Nico

Hallo Daniel,

Vielen Danke für Deine Hilfe!

P.S: Ich freue mich schon auf Deinen nächsten Beitrag über FHEM 😀

LG
Nico

kim
Gast
kim

Leider ist die Anleitung nicht komplett oder es werden einfach weitere Installationen vorausgesetzt:

xxx@raspberrypi:~/shairport $ ./configure
Configuring Shairport
OpenSSL or its dev package not found
Required package not found, cannot continue

xxx@raspberrypi:~/shairport $ make
Makefile:2: config.mk does not exist, configuring.
sh ./configure
Configuring Shairport
OpenSSL or its dev package not found
Required package not found, cannot continue
make: *** No rule to make target ‚config.mk‘. Schluss.

xxx@raspberrypi:~/shairport $ make, make install
bash: make,: Kommando nicht gefunden.

Michael
Gast
Michael

Funktioniert das Shairport nicht mehr mit dem aktuellen iOS ? Ich sehe kein Shairport-Sync Server unter Airplay auf meinem iPhone, obwohl ich es ordnungsgemäß installiert und konfiguriert habe. Vielen Dank für die Hilfe

wpDiscuz