Airplay mit dem Raspberry Pi

Die letzten Tage habe ich mich mal wieder mit dem Raspberry Pi beschäftigt. Ein Thema war für mich ja immer auch die potentiellen Multimediafähigkeiten des Geräts.

In meiner Umgebung nutze ich Airplay, um meine Musik vom Mac auf meine Hifianlage zu bringen. Der Airplay Endpunkt ist eine Airport Express. Für das Protokoll, welches Airplay benutzt (raop) existieren auch frei verfügbare Implementierungen, die zB. auch von forked-daapd, einem freien iTunes Server genutzt werden. Wenn man nun aber keinen Server, sondern nur die Möglichkeit des Empfangs von solchen Streams benötigt, kann man zB. zu Shairport greifen. Wenn man dieses einrichtet, kann man aus jedem Rechner einen Airplay Endpunkt machen. Dafür bietet sich natürlich auch ein Raspberry Pi an. Folgende Anleitung geht davon aus, dass ihr ein Debian Linux auf dem Pi laufen habt, wie zB. Raspbian. Für nicht Debian-artige Distributionen müssen unter Umständen die Paketnamen angepasst werden.

Wie geht man dabei vor:

 

  • Das Shairport Projekt bei Github auschecken:
    git clone https://github.com/albertz/shairport.git shairport
  • per apt-get install folgende Pakete installieren:
    sudo apt-get install build-essential libssl-dev libcrypt-openssl-rsa-perl
      libao-dev libio-socket-inet6-perl libwww-perl avahi-utils pkg-config
  • Shairport kompilieren und einrichten:
    sudo make
  • Shairport starten:
    perl shairport.pl
  • Damit Shairport bei jedem Systemstart geladen wird, wird das mitgelieferte Initscript kopiert, dessen Rechte eingestellt und das Runlevel zugewiesen:
    sudo cp shairport.init.sample /etc/init.d/shairport
    sudo chmod a+x /etc/init.d/shairport
    sudo update-rc.d /etc/init.d/shairport defaults
  • Jetzt kann man Airplay Endpunkt noch einen aussagekräftigen Namen zuweisen, indem man in dem Initscript die letzte Zeile editiert:
    DAEMON_ARGS="-w $PIDFILE -a RaspberryPi"
  • Nun kann Shairport über das Initscript gesteuert werden:
    sudo /etc/init.d/shairport start
    sudo /etc/init.d/shairport stop
    sudo /etc/init.d/shairport restart
  • Zum Abschluss kann man noch die Klinkenbuchse als Standardinterface für die Soundausgabe ändern, initial ist der HDMI Port (=2) gewählt:
    amixer cset numid=3 1

Wenn man das alles beherzigt hat, dürfte sich der Raspberry nun als Airplay Endpunkt melden.
airfoil_raspberrypi.jpg

Diese Anleitung basiert auf den Anweisiungen auf der Github Seite von Shairport und einem Artikel im Raspberry Pi Forum. Demnächst werde ich kurz zeigen, wie man eine externe USB-Soundkarte an’s Laufen bekommt. Der auf dem Raspberry Pi aufgebrachte analoge Soundausgang ist nämlich kaum zu gebrauchen :-(

Posted in: Technik, Töne

3 comments

  1. Pingback: Audio Upgrade für den Raspberry Pi | good clean fun

  2. tobik says:

    Hi,
    ich würde das gern mal ausprobieren, doch wenn ich Shairport starte (perl shairport.pl) erhalte ich folgende Fehlermeldung:

    Can’t locate Net/SDP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at shairport.pl line 48.
    BEGIN failed–compilation aborted at shairport.pl line 48.

    Während des Kompilierens sind mir keine Fehler aufgefallen.

    sudo make
    cc -O2 -Wall -DHAIRTUNES_STANDALONE hairtunes.c alac.o -o hairtunes -lm -lpthread -lssl -lcrypto -lao
    cc -O2 -Wall -c socketlib.c -o socketlib.o
    cc -O2 -Wall -c shairport.c -o shairport.o
    cc -O2 -Wall -c hairtunes.c -o hairtunes.o
    cc -O2 -Wall socketlib.o shairport.o alac.o hairtunes.o -o shairport -lm -lpthread -lssl -lcrypto -lao

    An was könnte das liegen?

  3. gcf gcf says:

    Hallo,

    Ich habe eben mal bei Github nach geschaut. Man benötigt noch einige Perlmodule, darunter auch das Net::SDP Modul. Wenn dieses bei deinem System noch nicht installiert ist, muss du es noch einrichten. Das kann man direkt mit Perl machen, durch folgenden Aufruf:

    perl -MCPAN -e ‘install Net::SDP’ (als root).

    Ich werde das auch mal in meinem Artikel ergänzen.

    EDIT: Ich habe eben noch eine weitere Quelle für das Net::SDP Paket gefunden: https://github.com/njh/perl-net-sdp

Leave a Reply

Your email address will not be published. Required fields are marked *