HowTo: Raspberry Pi – „Shairport“ Airplay auf dem Raspberry Pi installieren

Jeder der ein (oder mehrere) Apple-Geräte verwendet kennt sicherlich die AirPlay-Funktion. Dank dieser lassen sich Medien aller Art an andere Geräte im Netzwerk streamen. So kann man Fotos auf einem AirPlay fähigen Fernseher anzeigen, Videos abspielen oder auch Musik auf AirPlay fähigen Lautsprechern wiedergeben.

Zumindest letzteres könnt Ihr auch ganz einfach mit einem RaspberryPi erreichen und so einen RaspberryPi zu einem AirPlay fähigen Lautsprecher umbauen.

Ich verwende diese Lösung zum Beispiel in meinem MagicMirror. So könnt Ihr den RaspberryPi (der im magicMirror) verbaut ist auch noch als Musik-Lautsprecher nutzen. 🙂

Alles was Ihr benötigt um Euren RaspberryPi so einzurichten, ist im folgenden Artikel beschrieben.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Hilfreiche Artikel:
Bevor ihr mit diesem Artikel startet solltet ihr den RaspberryPi soweit vorbereitet haben, dass dieser über das Netzwerk erreichbar und per SSH Steuerbar ist.

Die folgenden drei Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPi – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern

Benötigtes Werkzeug:
-keins-

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


Per SSH auf dem RaspberryPi einloggen

Um zu beginnen müsst Ihr Euch als erstes mit Putty per SSH auf dem RasPi einloggen. Wie das geht ist im Artikel RaspberryPi - Den RaspberryPi über SSH steuern beschrieben.

Nach der Eingabe Eures Benutzernamen und Passworts könnt Ihr die ersten Befehle eingeben.

Paketverwaltung aktualisieren

Die Paketverwaltung in Linux ist eine "zentrale Stelle" über die sich diverse Software-Pakete installieren lassen. Damit dies zuverlässig funktioniert sollten vor jeder Installation von neuen Paketen die Listen und Quellen der Paketverwaltung aktualisiert werden.

Um das Update der Paketverwaltung zu starten müsst ihr folgenden Befehl eingeben.
sudo apt-get update && sudo apt-get upgrade
Je nachdem wie lange Euer letztes Update der Paketverwaltung her ist kann dieser Vorgang nun etwas dauern. Dabei werden zuerst die Listen aktualisiert in denen auf die einzelnen Paketquellen verwiesen wird.
Danach werden die Pakete selber aktualisiert. Da dabei zusätzlicher Speicher belegt wird, werdet Ihr nochmal nach Eurem Einverständnis gefragt. Dies müsst Ihr mit einem "J" und "Enter" bestätigen.
Ist die Aktualisierung abgeschlossen wird euch eine kleine Zusammenfassung über die Dauer und den Umfang des Updates angezeigt.

Shairport installieren

Die Installation von Shairport ist dank des Paketmanagers sehr einfach.

Gebt dazu einfach folgenden Befehl in die Konsole Eures RaspberryPi ein.

sudo apt-get install shairport-sync

Eine eventuelle Nachfrage, dass dadurch Speicher belegt wird, könnt Ihr mit „Y“ und „Enter“ bestätigen.

Die Installation läuft dann automatisch ab.

Um Shairport nach der installation zu starten, müsst Ihr nun noch folgenden Befehl ausführen

sudo systemctl start shairport-sync


Status anzeigen

Dank des Kommandozeilentools systemctl könnt Ihr Euch leicht einen Überblick über den Status Eures Shairport-Servers verschaffen.

Gebt dazu einfach folgenden Befehl in Die Konsole Eures RaspberryPi ein.

sudo systemctl status shairport-sync

Hier könnt Ihr nun sehen, ob der Shairport-Server „active“ oder „inactive“ ist.


Autostart aktivieren

Damit Euer Shairport-Server auch nach einem Neustart des RaspberryPi automatisch wieder startet, solltet Ihr nun noch dessen Autostart aktiviern.

Gebt dazu einfach folgenden Befehl in die Konsole Eures RaspberryPi ein.

sudo systemctl enable shairport-sync


Musik Wiedergabe starten

Das war schon alles. Nun solltet Ihr auf Eurem iPhone (oder anderen Apple Gerät) bereits in der Lage sein Euren selbstgebauten AirPlay-Receiver nutzen zu können. 🙂

Zum Beispiel findet Ihr nun in Eurer „Podcasts“-App das gekennzeichnete Symbol.

Sobald Ihr darauf klickt…

…sollte Ein Menü geöffnet werden, in der auch Euer soeben eingerichteter AirPlay-Lautsprecher (hier „MagicMirror“ genannt) angezeigt wird.

Sobald Ihr diesen anklickt, sollte die Musikwidergabe darauf starten.


Viel Spaß mit dem Projekt

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com       

12 Kommentare

  1. Hallo, mein Name ist Achim Graf
    Ich habe das Problem das sich Shairport-sync, ob auf dem Rapi 3b+ oder 4b, nicht mit Airmusic auf einen gerootetem Amazon Tablet verbindet. Airmusic auf dem Tablet findet den Raspi mit gestartetem Shairport-sync sofort aber wenn ich ihn verbinden will wird das Icon von Airmusic für 1 sec. blau, dann rot für 3-5 sec. und das Spiel geht von vorne los. Nach ca. 5 Durchläufen kommt eine Fehlermeldung mit Tips die ich schon mehrfach durch habe.
    Raspian wurde jedesmal mit Raspberry Pi Imager neu aufgesetzt, alles wie beschrieben.
    Airmusic verbindet sich sofort mit Shaiport4w auf dem Notbook und mit mit meinem Sony Android TV.
    Ich bin an verzweifeln, es wär toll wenn du mir helfen könntest das an laufen zu bekommen.
    Es läuft bei sooo vielen, was mache ich falsch.
    Alles probiert mit der Desktop Version, der Lite Version, mit Wlan und mit Lan Kabel.
    lg. A.Graf

    1. Hi Achim,
      so richtig kann ich mir da gerade keinen Reim drauf machen. (Auch weil ich Airmusic und co nicht nutze).
      Aber es klingt ein bisschen danach als würde der Shairport client auf dem Raspi abstürzen und neu starten. Kannst du bitte mal das Journal (der logger output des Prozesses) checken und hier posten?
      Du müsstest ihn mit folgendem Befehl anzeigen können „sudo journalctl -f -u shairport-sync“. Am besten das Journal starten und dann einen Verbindungsversuch starten. Vllt. kann man dort ja schon sehen was passiert ist. 🙂
      Beste Grüße
      Fabian

  2. Hallo Fabian,
    vielen lieben Dank das du dich der Sache annimmst.
    Da ich so meine Probleme habe den Text aus dem Terminal zu übertragen schreibe ich ich in hier rein, er wiederholt sich 8x bis Airmusic aufgibt.
    Es steht vor jeder Zeile der Raspi Name mit folgendem “ systemd[1]: “
    aber das ist wohl immer so.

    Started Shaiport Sync – Airplay Audio Receiver.
    shairport-sync.service: Main process exited, code=killed, status=11/SEGV
    shairport-sync.service: Failed with result ´signal´.
    shairport-sync.service: Consumed 3.099s CPU time.
    shairport-sync.service: Scheduled restart job, restart counter is at 1.
    Stopped Shairport Sync – Airplay Audio Receiver.
    shairport-sync.service: Main process ex…………. das ganze wiederholt sich dann noch 7x.

    Ich hoffe mal dass das aussagekräftig genug ist um den Fehler zu beheben.
    Grüsse Achim

    1. Hi Achim,
      alles klar, das sieht danach aus als wäre meine anfängliche Vermutung bestätigt. Der Shairport service scheint abzustürzen wenn du einen Verbindungsversuch unternimmst.
      Leider bekommt man mit dem aktuellen LogLevel keine richtige Aussage warum dies passiert. Also müssen wir das LogLevel erhöhen.
      Dazu musst du die Service Datei etwas anpassen.
      Gib dazu folgendes ein
      sudo nano /lib/systemd/system/shairport-sync.service
      und ändere die Zeile
      ExecStart=/usr/bin/shairport-sync –daemon $DAEMON_ARGS
      zu
      ExecStart=/usr/bin/shairport-sync -vvv –daemon $DAEMON_ARGS
      (Du musst also nur die „-vvv“ hinzufügen.)
      Führe dann bitte den folgenden Befehl aus um die Service Datei neu zu laden:
      sudo systemctl daemon-reload
      Nun solltest du wieder das Journal des shairport Service starten „sudo journalctl -f -u shairport-sync“.
      Am besten öffnest du jetzt eine weitere SSH Verbindung/Terminal um dann den Shaiport Service mit „sudo systemctl restart shairport-sync“ neu zu starten. Nun solltest du bereits mehr Informationen im Journal sehen.
      Bitte versuch jetzt nochmal eine Verbindung zum Shairport Server herzustellen. Nun sollte die Ausgabe im Journal deutlich detaillierter sein.
      Kopiere dann nochmal die Ausgabe des Journals hierhin. 🙂
      (Wie man in putty text kopiert ist zum Beispiel auch hier beschrieben: https://www.alphr.com/copy-paste-putty/)
      Beste Grüße
      Fabian

  3. // Inhalt .service Datei:

    [Unit]
    Description=Shairport Sync – AirPlay Audio Receiver
    Documentation=man:shairport-sync(7)
    Documentation=file:///usr/share/doc/shairport-sync/README.md.gz
    Documentation=https://github.com/mikebrady/shairport-sync
    After=sound.target
    Requires=avahi-daemon.service
    After=avahi-daemon.service
    Wants=network-online.target
    After=network.target network-online.target

    [Service]
    Type=simple
    Restart=on-failure
    EnvironmentFile=-/etc/default/shairport-sync
    ExecStart=/usr/bin/shairport-sync $DAEMON_ARGS
    User=shairport-sync
    Group=shairport-sync

    [Install]
    WantedBy=multi-user.target

    ——————————————————————————

    // Nach eingabe von -vvv aber ohne -daemon , da in original nicht vorhanden.
    // ExecStart=/usr/bin/shairport-sync -vvv $DAEMON_ARGS

    login as: guido
    guido@192.168.188.47’s password:
    Linux Bestatt02 5.15.56-v7+ #1575 SMP Fri Jul 22 20:28:11 BST 2022 armv7l

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Wed Aug 17 10:25:33 2022
    guido@Bestatt02:~ $ sudo nano /lib/systemd/system/shairport-sync.service
    guido@Bestatt02:~ $ sudo journalctl -f -u shairport-sync // .service Datei bearbeitet.
    guido@Bestatt02:~ $ sudo systemctl daemon-reload
    — Journal begins at Mon 2022-04-04 14:05:58 CEST. —
    Aug 17 10:25:33 Bestatt02 systemd[1]: Started Shairport Sync – AirPlay Audio Receiver.
    Aug 17 10:25:33 Bestatt02 systemd[689]: shairport-sync.service: Failed to locate executable /usr/bin/shairport-sync-vvv: No such file or directory
    Aug 17 10:25:33 Bestatt02 systemd[689]: shairport-sync.service: Failed at step EXEC spawning /usr/bin/shairport-sync-vvv: No such file or directory
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Main process exited, code=exited, status=203/EXEC
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Failed with result ‚exit-code‘.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Scheduled restart job, restart counter is at 5.
    Aug 17 10:25:33 Bestatt02 systemd[1]: Stopped Shairport Sync – AirPlay Audio Receiver.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Start request repeated too quickly.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Failed with result ‚exit-code‘.
    Aug 17 10:25:33 Bestatt02 systemd[1]: Failed to start Shairport Sync – AirPlay Audio Receiver.
    ^C
    guido@Bestatt02:~ $

    // Neustart Raspi
    —————————————————————————————————-

    jetzt mit „-vvv –daemon“

    guido@Bestatt02:~ $ sudo nano /lib/systemd/system/shairport-sync.service
    guido@Bestatt02:~ $ sudo systemctl daemon-reload
    guido@Bestatt02:~ $ sudo journalctl -f -u shairport-sync
    — Journal begins at Mon 2022-04-04 14:05:58 CEST. —
    Aug 17 10:25:33 Bestatt02 systemd[1]: Started Shairport Sync – AirPlay Audio Receiver.
    Aug 17 10:25:33 Bestatt02 systemd[689]: shairport-sync.service: Failed to locate executable /usr/bin/shairport-sync-vvv: No such file or directory
    Aug 17 10:25:33 Bestatt02 systemd[689]: shairport-sync.service: Failed at step EXEC spawning /usr/bin/shairport-sync-vvv: No such file or directory
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Main process exited, code=exited, status=203/EXEC
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Failed with result ‚exit-code‘.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Scheduled restart job, restart counter is at 5.
    Aug 17 10:25:33 Bestatt02 systemd[1]: Stopped Shairport Sync – AirPlay Audio Receiver.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Start request repeated too quickly.
    Aug 17 10:25:33 Bestatt02 systemd[1]: shairport-sync.service: Failed with result ‚exit-code‘.
    Aug 17 10:25:33 Bestatt02 systemd[1]: Failed to start Shairport Sync – AirPlay Audio Receiver.
    ^C
    guido@Bestatt02:~ $

    // in nano den .service Teil nochmal geprüft, alles korrekt …hoffe ich.

    [Service]
    Type=simple
    Restart=on-failure
    EnvironmentFile=-/etc/default/shairport-sync
    ExecStart=/usr/bin/shairport-sync -vvv -daemon $DAEMON_ARGS
    User=shairport-sync
    Group=shairport-sync

    // selber Fehlermeldung
    // Ich komme da nicht weiter
    grüsse achim

    1. Hi Achim,

      das Problem liegt wohl daran, dass vor dem „-vvv“ ein Leerzeichen fehlt.
      In der Zeile „Aug 17 10:25:33 Bestatt02 systemd[689]: shairport-sync.service: Failed to locate executable /usr/bin/shairport-sync-vvv: No such file or directory“
      kann man sehen, dass versucht wird den Befehl „shairport-sync-vvv“ auszuführen. Der Parameter „-vvv“ wird also als Teil des Dateinamens interpretiert und nicht als Parameter.
      Bitte prüfe hier nochmal ob zwischen den Teilen „/usr/bin/shairport-sync“ und „-vvv“ auch wirklich ein Leerzeichen ist. 🙂
      Beste Grüße
      Fabian

  4. Sorry, wollte mich noch ganz herzlich bedanken das du dir so viel Mühe gibts.
    Leider scheint die Sache mit dem erweitertem Log bei mir nicht zu funzen, weiß nicht ob zu viele Leerzeichen drin sind, bin mit dem Syntax nicht so vertraut, versuche aber keine fehlerhaften Eingaben zu machen.

    Dazu kommt, dass das Einstellen über reCaptcha ein graus ist. Ich weiß nie was der blöde Button unten rechts von mir will, funktioniert meistens erst beim 3 oder 4x und dann weiß ich nie warum es funktioniert hat …grrr.

  5. Hallo Fabian, diese Seite ist eine Katastrophe.
    Ich hab jetzt 3x versucht einen Text ab zu schicken was auch nach x Versuchen scheinbar funktioniert hat aber jedes mal wenn ich nach einigen Stunden die Seite aufrufe ist mein Kommentar verschwunden.
    Das muss mit dem reCAPTCHA zusammen hängen, ich bekomme keine Aufforderung irgend einen Kram an zu klicken, Feuermelder, Fahrrad usw., Hoffentlich geht diese nicht auch wieder verloren. Wenn ich dir eine meiner Foren-email-Adressen schicke und wir diese über email gegen meine vernünftige tauschen, können wir dann darüber kommunizieren?
    Nur wenn du noch Bock hast mir bei dem Problem zu helfen.
    Gruß achim

    1. Hi Achim,
      die Seite funktioniert und deine Kommentare sind alle angekommen. Ich muss die einzelnen Kommentare aber jeweils freischalten.
      Leider geht es nicht anders, da die Kommentarspalten täglich mehrmals von Spambots zugekleistert werden.
      Ich versuche mir dein Problem im Laufe des Tages anzugucken.
      Beste Grüße
      Fab

  6. Hi Fab,
    neues Update, nachdem ich am letzten Wochenende auf ein Weinfest war und mir gleich Corona eingefangen habe brauchte ich eine Woche um wieder klar zu kommen.
    Mit neuem Elan ans Werk gemacht und versucht das erweiterte Journal nochmal zu aktivieren.
    Beide Raspis eingeschaltet und mit einem blöden Gesicht festgestellt das sich beide nach dem hochfahren sofort mit Airmusic auf dem Fire-Tablet verbunden haben.
    Ohne Flaks, ich hab die Teile seit dem 18.08. nicht angerührt, sowas gibts doch garnicht oder?
    Es ist schön das es funktioniert aber mich befriedigt das nicht weil ich nicht weis warum…
    Will dich nicht weiter nerven mit dem mystischen tun der Raspis.
    Vielen, vielen Dank für deine Geduld, du hast mir in der ganzen Zeit die Bestätigung gegeben das es doch irgendwann zum laufen kommt.
    Allerdings hätte ich nicht gedacht das es einfach so klappt.
    Wünsch dir eine schöne Zeit.
    Grüsse Achim

Kommentar hinterlassen

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.