Selten gab es einen Embedded Computer so günstig wie den Raspberry Pi, also was liegt da näher sich einen solchen für den Heimeinsatz zu besorgen. Wenn man sich anschaut bei welchen Preisen Airplay Boxen anfangen, wird man merken das ein Raspberry Pi mit einem entsprechenden WLAN-Stick und einem Boxensystem immer noch günstiger ist. Airplay-Boxen, welche im Handel erhältlich sind beginnen ab 200 € mit einer nach oben offenen Grenze.
Für einen Raspberry Pi, Airplay Server benötigt man:
- einen Rapsberry Pi
- ein Gehäuse für den Pi
- einen WLAN Stick
- ein paar Boxen
Im ersten Schritt sollte man sich eine Raspberry Pi Distribution herunterladen, in diesem Fall wird Raspian benutzt. Dazu wird das Image heruntergeladen und entpackt. Anschließend hat man auf dem Rechner eine .img Datei. Diese muss nun auf die SD-Karte geflasht werden. Um herauszufinden, welches Volume geflasht werden muss, kann man sich auf dem Terminal unter Mac OS X mittels „df -h“ anschauen welches Gerät dazukommt. Eine andere Möglichkeit ist es die Karte über den Namen zu identifizieren, welcher bei neuen Karten meist „NO NAME“ oder „Untitled“ sein sollte.
Wenn das passende Gerät identifiziert wurde, sollte die gemountete Partition mittels:
diskutil unmount /dev/disk2s1
wieder freigegeben werden. Nun wechselt man im Terminal in den Ordner, in welchem die Imagedatei liegt und gibt dabei folgendes ein:
sudo dd bs=1m if=raspbian.img of=/dev/rdisk2
Zu beachten ist dabei das aus „disk2s1“ -> „rdisk2“ wird, womit das Gerät direkt angesprochen wird. Theoretisch würde auch „disk2“ funktionieren, allerdings geht die Übertragungsgeschwindigkeit hierbei drastisch in den Keller. Nach dem Flashen der Karte wird das Gerät mittels:
diskutil eject /dev/rdisk2
ausgeworfen. Die Karte kann nun in den ausgeschalteten Pi gelegt werden und dieser mit Strom versorgt werden. Beim ersten Start wird man vom Konfigurationsmenü „raspi-config“ begrüßt. Hier kann man das Tastaturlayout, den SSH Server und andere Dinge einstellen. Wir stellen ein deutsches Tastaturlayout ein und aktivieren den SSH Server. Des Weiteren sollte man das Passwort für den Nutzer Pi ändern und die root Partion auf den gesamten Bereich der SD-Karte ausdehnen. Anschließend kann man den Pi neu starten.
Für das drahtlose Netz wird der WLAN-Stick an den Raspberry Pi angeschlossen. Wenn man dies im laufenden Betrieb macht, kann es passieren, dass der Pi anschließend neu startet. Das ganze sieht etwas nach einer Brownout Detection aus, sprich der Raspberry hat für einen Moment zu wenig Strom und startet neu.
In der Konsole kann man jetzt mittels „ifconfig“ feststellen, ob ein weiteres Netzwerkgerät hinzugekommen ist. Dort sollten die Geräte „eth0“, „lo“ und „wlan0“ auftauchen. Nun geht es an die Konfiguration des WLANs. Dazu wird die „/etc/network/interfaces“ mittels „nano“ aufgerufen:
sudo nano /etc/network/interfaces
Dabei werden einige Änderungen in der Datei vorgenommen. Anschließend sollte die „interfaces“ Datei wie folgt aussehen:
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -B w -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Nun geht es an die Konfiguration der „/etc/wpa_supplicant/wpa_supplicant.conf“ Datei. Diese sollte nach der Konfiguration in etwa so aussehen:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="WLAN" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk="geheim" }
Im vorliegenden Beispiel wurde ein WPA 2 verschlüsseltes WLAN eingerichtet. Bei einem Neustart sollte das WLAN anschließend verfügbar sein. Ist dies nicht der Fall, so kann der Prozess mittels:
sudo wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -d
manuell aktiviert werden. Dabei sieht man dann auch entsprechende Fehlermeldungen, welche auf Probleme hinweisen können. Wenn die WLAN-Schnittstelle aktiv ist, kann man auf einem anderen Terminal mittels „iwconfig“ sehen, ob die Schnittstelle funktioniert. Dies ist dann gegeben, wenn die Schnittstelle nicht mehr als „unassociated“ markiert ist.
Der letzte Punkt, der jetzt noch fehlt, ist die Unterstützung für Airplay. Hierfür wird Shairport installiert. Dazu werden im ersten Schritt die notwendigen Bibliotheken installiert, sowie der Quellcode von Shairport und dem SDP Modul auf den Pi geholt:
sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl git clone git clone https://github.com/njh/perl-net-sdp.git git clone git://github.com/abrasive/shairport.git
Bevor Shairport kompiliert wird, muss das SDP Modul installiert werden. Dazu wechseln wie in den Ordner und geben dort folgendes ein:
perl Build.PL sudo ./Build sudo ./Build test sudo ./Build install
Danach wechseln wir in den Shairport Ordner und geben dort „make“ ein. Anschließend können wir ganze mittels „perl shairport.pl“ starten und einen ersten Test vornehmen. Nun müssen wir noch dafür sorgen das Shairport beim Start des Pi auch gestartet wird. Außerdem soll der Empfänger noch einen ordentlichen Namen bekommen. Dazu geben wir im Shairport Ordner folgendes ein:
sudo make install sudo cp shairport.init.sample /etc/init.d/shairport cd /etc/init.d sudo chmod a+x shairport sudo update-rc.d shairport defaults sudo nano shairport
Nachdem wir die Datei „shairport“ in „nano“ geöffnet haben, ändert wir dort den Namen z.B. in Schlafzimmer oder Wohnzimmer. Damit bekommt der Empfänger einen eindeutigen Namen. Nach einem Neustart oder einem manuellen:
./shairport start
ist der eigene AirPlay Empfänger fertig.
Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/WLAN
http://wiki.ubuntuusers.de/WLAN/wpa_supplicant
http://netz10.de/2010/02/13/wlan-wpa2-mit-psk-manuell-konfigurieren/
Das werde ich direkt mal ausprobieren, danke! Und fein, dass mein alter wpa_supplicant Artikel noch Verwendung findet ;)
Hi Florian,
ich hatte den Raspberry Pi mit Shairport auch schon am Laufen.
Ich hatte allerdings das Problem, dass wenn man STOP macht und einen anderen Titel wählt, der Lautsprecher knackt – war damals eigentlich ein bekanntes Problem, man hat viele Forenposts gefunden.
Besteht das Problem noch? Hast du auch das Problem? Gibt es eine Lösung?
Gruß Nico
Hey! Danke noch mal für den raspi! Ich werde demnächst mal posten, was ich damit alles angestellt habe bisher!
Ach^^, so klein ist das Internet. ;-)
Es ist auch sinnvoll, dem Raspberry genau zu sagen, aus welchem Tonausgang er wiedergeben soll.
sudo amixer cset numid=3 X
wobei
X=0 für Automatik steht,
X=1 für den Kopfhörerausgang,
X=2 für den HDMI-Ausgang.
Das ganze ist dann ein AirPlay Client aber kein Server. Denn der Pi ist hier die passive Stelle und bekommt nur die Musik zu geschickt.
Technisch gesehen ist das nicht richtig. Der Raspberry Pi ist der Server zu dem der Client (iPhone und Co.) eine Verbindung aufnimmt.
Wie es „technisch“ ist, interessiert nicht. Der Anwender will Musik weiterleiten, VON einem Server ZU einem Client, der sie dann tönen lässt.
Ich bin jetzt auch schon x Webseiten am lesen, die einen AirPlay Server versprechen, und ärgere mich schwarz, dass jedesmal ein Client beschrieben wird, d.h. der Empfänger (die Wiedergabeseite). Die Technik interessiert nicht!!!
Pingback: boards | Annotary
Pingback: Shairport Reloaded | seeseekey.net