- im ersten Schritt wird dafür gesorgt das Shairport nicht mehr beim Boot aufgerufen wird
sudo update-rc.d -f shairport remove
- es wird das Boot oder Daemonskript aus dem Verzeichnis /etc/init.d gelöscht:
sudo rm /etc/init.d/shairport
- normalerweise wird das Program in ein Unterverzeichnis von Shariport installiert. Mit dem folgenden Befehl kann danach gesucht werden:
sudo find /usr -name 'shairport'
- Anschließend wird das Programm gelöscht
sudo rm /Pfad/shairport
- nun kann man noch nach den Sourcen der Installation suchen
sudo find / -name 'shairport'
- und diese entfernen.
sudo rm -r /Pfad/shairport_source
- Je nachdem welche Pakete für Shairport noch installiert wurden, können diese entfernt werden. Dabei sollte darauf geachtet werden, das die Pakete nicht von anderen Programmen benötigt werden
apt-get purge wegdamit && apt-get autoremove
in diesem Blog beschreibe ich einige meiner kleinen Projekte, welche sich im wesentlichen um den Raspberry drehen. Ab und an werden auch Artikel zu anderen DIY Technik Themen kommen.
Montag, 5. Januar 2015
Shairport vom System entfernen
Mit folgenden einfachen Schritten kann ich eine Installation von Shairport wieder aus dem System entfernen.
Samstag, 11. Oktober 2014
Backup Raspberry SD Card im laufenden Betrieb
Heute habe ich mich mit dem Backup vom Raspberry beschäftigt. Hier gibt es verschiedene Ansätze:
Okay los geht ich habe mich für die zweite Methode entschieden und schreibe die Daten über das Netzwerk auf einen anderen PC. Dies kann sowohl auf die Freigabe eines Linux oder eines Windows Systems geschehen.
Es wird ein Verzeichnis erstellt, welche dann auf das Netzlaufwerk des WindowsPCs gemountet wird.
Danach wird die Windowsfreigabe auf dieses Verzeichnis gemounted:
Dabei sollte darauf geachtet werden das die Windowsfreigabe keine Leerzeichen enthält. Ist dies der Fall muss die Freigabe in Anführungszeichen geschrieben werden.
Ich gehe mal davon aus das die Freigabe auf dem Ziel eingerichtet ist. Auf dem Raspberry erstellen wir ein Verzeichnis auf welches die NFS Freigabe gemountet wird:
Danach wird die Freigabe gemountet. Dazu wird der folgende Befehl verwendet:
solle in der Rückgabe auf das gemountete Verzeichnis verweisen:
Wir gehen in das Verzeichnis und schauen ob wir die Berechtigung zum Schreiben von Daten haben. Der einfachste Weg ist:
Gibt touch keine Fehlermeldung und ls zeigt die Datei, dann kann man noch mal auf dem Zielsystem schauen ob die Datei auch dort zu sehen ist.... aber das ist dann schon eher unnötig.
Okay wir suchen uns jetzt die Bezeichnung der SD Karte:
gibt bei meiner 16GB Karte folgende Ausgabe:
Die Bezeichnung, die wir suchen ist /dev/mmcblk0. Ebenfalls kann man hier sehen das auf der Karte zwei Paritionen sind. Die FAT32 parition wird verwendet um zu Booten. In der Linuxpartition sind alle Daten des Raspberry.
Die Größe der beiden Partitionen lässt sich von den Blöcken berechnen:
Die Bootpartition (FAT32) geht von Block 8192 bis Block 122879. Somit ist die Partition 122879-8192 Blöcke groß. Bei einer Blockgröße von 512bytes ergibt dies ca 59MB.
Die Datenpartition ist schon größer. Mit der Selben Formel Endblock - Startblock (7403519 - 122880) ergibt die Anzahl von 7280639 Blöcken. Das macht bei 512byte pro Block ca 3728 MB.
Zusammen belegen unsere beiden Partitionen 3,8GB auf der 16,1GB großen Karte. Im Vollbackup werden die gesamten 16GB über das Netzwerk geschoben. Da wir uns in einem Privaten Netz befinden und der Raspberry hoffentlich über LAN läuft ist das so erst mal ok. Nach dem Klonen der SD Karte werfen wir den ungenutzten Platz aus dem Klon wieder raus. Aber....wollen wir erst mal anfangen. Wir kopieren mit dd den gesamte Inhalt von mmcblk0 auf das Netzwerkshare:
Der Raspberry ist dann erst mal ganz gut am Knechten. Bei mir macht der das immer richtig gemütlich aber nach einer weile kommt:
Wie erwartet sind auf dem Zielverzeichnis jetzt 16GB in der Datei sdKarte.img. Mit dem Befehl
bekommen wir das erwartete Ergebnis:
Wir wissen, dass davon nur 3,8GB verwendet werden. Deswegen lassen wir die Luft aus dem Image.
Dazu prüfen wir noch einmal die Blöcke in dem Image.
liefert ein ähnliches Ergebnis, wie wir es schon zuvor auf der SD Karte selbst gesehen haben:
Das ist gut! Jetzt truncaten wir die Datei bei auf die verwendete Größe. Diese wird in dem Befehl mit der Anzahl der Sektoren * Blockgröße berechnet. Dabei darf nicht vergessen werden die Anzahl der Blöcke um eins zu erhöhen da der erste Block die Nr. 0 hat.
anschließend machen wir ein ls -l und siehe da:
bekommen wir das erwartete Ergebnis:
Die Umkehrprobe habe ich atürlich auch gemacht. Ich habe die Datei sdKarte.img auf eine andere SD Karte kopiert und einen Raspi damit gestartet. Ergo. Funktioniert.
In einem zweiten Teil werde ich das Backup als Script beschreiben, damit dies künftig alles auch schon automatisch passiert.
- Backup der geänderten Konfigurationsdateien und der "Projektdaten"
+ schnell da es sich zumeist um wenige Daten und Dateien handelt
+ Backup kann auch in ein Backup Verzeichnis auf der SD Karte geschehen
- es müssen alle geänderten Dateien gefunden werden
- beim zurückspielen muss sichergestellt werden, dass alle Pakete und Module installiert sind - Vollständige Kopie der gesamten SD Karte
+ einfacher Klon der SD Karte ohne große Aufwände
+ zurückspielen auf neue SD Karte recht problemlos möglich
- sehr großer Speicherbedarf
- kein inkrementelles Backup
Okay los geht ich habe mich für die zweite Methode entschieden und schreibe die Daten über das Netzwerk auf einen anderen PC. Dies kann sowohl auf die Freigabe eines Linux oder eines Windows Systems geschehen.
Für Windowsziele
Hier sind auf dem Raspberry einige zusätzliche Pakete notwendig. Diese werden mit folgenden Befehl installiert:
sudo apt-get install samba-client samba-common cifs-utils
Es wird ein Verzeichnis erstellt, welche dann auf das Netzlaufwerk des WindowsPCs gemountet wird.
sudo mkdir /WindowsVerzeichnis
Danach wird die Windowsfreigabe auf dieses Verzeichnis gemounted:
sudo mount -t cifs -o guest //WindowsPC/Freigabe /WindowsVerzeichnis
Dabei sollte darauf geachtet werden das die Windowsfreigabe keine Leerzeichen enthält. Ist dies der Fall muss die Freigabe in Anführungszeichen geschrieben werden.
Für Linuxziele
Hier verwenden wir NFS. Normalerweise sollten die Clientpakete auf dem Raspberry sein. Last uns zu Sicherheit noch mal nachschauen:
sudo apt-get install nfs-common
Ich gehe mal davon aus das die Freigabe auf dem Ziel eingerichtet ist. Auf dem Raspberry erstellen wir ein Verzeichnis auf welches die NFS Freigabe gemountet wird:
sudo mkdir /LinuxVerzeichnis
Danach wird die Freigabe gemountet. Dazu wird der folgende Befehl verwendet:
sudo mount 192.168.76.110:/share /LinuxVerzeichnis
Okay es geht gemeinsam weiter
Anschließend kann ich nachprüfen ob alles funktioniert. Der Befehl
df -h
solle in der Rückgabe auf das gemountete Verzeichnis verweisen:
//WindowsPC/Freigabe 2.0G 1.8G 200M 10% /WindowsVerzeichnis
//192.168.76.110:/share 2.0G 1.8G 200M 10% /LinuxVerzeichnis
//192.168.76.110:/share 2.0G 1.8G 200M 10% /LinuxVerzeichnis
Wir gehen in das Verzeichnis und schauen ob wir die Berechtigung zum Schreiben von Daten haben. Der einfachste Weg ist:
cd /Linux/Verzeichnis
touch test.txt
ls
touch test.txt
ls
Gibt touch keine Fehlermeldung und ls zeigt die Datei, dann kann man noch mal auf dem Zielsystem schauen ob die Datei auch dort zu sehen ist.... aber das ist dann schon eher unnötig.
Okay wir suchen uns jetzt die Bezeichnung der SD Karte:
fdisk -l
gibt bei meiner 16GB Karte folgende Ausgabe:
Disk /dev/mmcblk0: 16.1 GB, 16130244608 bytes
4 heads, 16 sectors/track, 492256 cylinders, total 31504384 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 7403519 3640320 83 Linux
4 heads, 16 sectors/track, 492256 cylinders, total 31504384 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 7403519 3640320 83 Linux
Die Bezeichnung, die wir suchen ist /dev/mmcblk0. Ebenfalls kann man hier sehen das auf der Karte zwei Paritionen sind. Die FAT32 parition wird verwendet um zu Booten. In der Linuxpartition sind alle Daten des Raspberry.
Die Größe der beiden Partitionen lässt sich von den Blöcken berechnen:
Die Bootpartition (FAT32) geht von Block 8192 bis Block 122879. Somit ist die Partition 122879-8192 Blöcke groß. Bei einer Blockgröße von 512bytes ergibt dies ca 59MB.
Die Datenpartition ist schon größer. Mit der Selben Formel Endblock - Startblock (7403519 - 122880) ergibt die Anzahl von 7280639 Blöcken. Das macht bei 512byte pro Block ca 3728 MB.
Zusammen belegen unsere beiden Partitionen 3,8GB auf der 16,1GB großen Karte. Im Vollbackup werden die gesamten 16GB über das Netzwerk geschoben. Da wir uns in einem Privaten Netz befinden und der Raspberry hoffentlich über LAN läuft ist das so erst mal ok. Nach dem Klonen der SD Karte werfen wir den ungenutzten Platz aus dem Klon wieder raus. Aber....wollen wir erst mal anfangen. Wir kopieren mit dd den gesamte Inhalt von mmcblk0 auf das Netzwerkshare:
sudo dd if=/dev/mmcblk0 of=/LinuxVerzeichnis/sdKarte.img bs=1M
Der Raspberry ist dann erst mal ganz gut am Knechten. Bei mir macht der das immer richtig gemütlich aber nach einer weile kommt:
sdKarte.img bs=1M
15383+0 records in
15383+0 records out
16130244608 bytes (16 GB) copied, 3221.12 s, 5.0 MB/s
15383+0 records in
15383+0 records out
16130244608 bytes (16 GB) copied, 3221.12 s, 5.0 MB/s
Wie erwartet sind auf dem Zielverzeichnis jetzt 16GB in der Datei sdKarte.img. Mit dem Befehl
ls -l
bekommen wir das erwartete Ergebnis:
-rw-r--r-- 1 4294967294 4294967294 16130244608 Oct 11 23:48 sdKarte.img
Wir wissen, dass davon nur 3,8GB verwendet werden. Deswegen lassen wir die Luft aus dem Image.
Dazu prüfen wir noch einmal die Blöcke in dem Image.
sudo fdisk -l /LinuxVerzeichnis/sdKarte.img
liefert ein ähnliches Ergebnis, wie wir es schon zuvor auf der SD Karte selbst gesehen haben:
Disk sdKarte.img: 16.1 GB, 16130244608 bytes
255 heads, 63 sectors/track, 1961 cylinders, total 31504384 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
sdKarte.img1 8192 122879 57344 c W95 FAT32 (LBA)
sdKarte.img2 122880 7403519 3640320 83 Linux
255 heads, 63 sectors/track, 1961 cylinders, total 31504384 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
sdKarte.img1 8192 122879 57344 c W95 FAT32 (LBA)
sdKarte.img2 122880 7403519 3640320 83 Linux
Das ist gut! Jetzt truncaten wir die Datei bei auf die verwendete Größe. Diese wird in dem Befehl mit der Anzahl der Sektoren * Blockgröße berechnet. Dabei darf nicht vergessen werden die Anzahl der Blöcke um eins zu erhöhen da der erste Block die Nr. 0 hat.
sudo truncate --size$[(7403519 +1)*512] sdKarte.img
anschließend machen wir ein ls -l und siehe da:
ls -l
bekommen wir das erwartete Ergebnis:
-rw-r--r-- 1 4294967294 4294967294 3790602240 Oct 12 00:15 sdKarte.img
Die Umkehrprobe habe ich atürlich auch gemacht. Ich habe die Datei sdKarte.img auf eine andere SD Karte kopiert und einen Raspi damit gestartet. Ergo. Funktioniert.
In einem zweiten Teil werde ich das Backup als Script beschreiben, damit dies künftig alles auch schon automatisch passiert.
Samstag, 27. September 2014
Hostapd/ WIFI Timouts "rt2800usb_entry_txstatus_timeout"
In den letzten Tagen habe ich öfters timeouts auf meinem Hostapd und anschliessend entsprechende einträge in der syslog.
zeigt folgene Einträge:
Im Logfile stehen noch mehr davon, aber das würde hier das Bild sprengen... google führt zu vielen Ansätzen, meist läuft es darauf hinaus das das Powermanagement des USB WLAN Karte nicht so funktioniert wie es sollte. Als Lösungs ansatz wird das hinzufügen eines Eintrags in die Netzwerkkonfig vorgeschlagen:
wird um den Eintrag:
erweitert. Bei mir hat das leider nicht zum erfolg geführt. Der Befehl:
hat nicht das gewünschte Ergebnis gebracht, sonder eine Fehlermeldung. Erfolgsversprechend ist jedoch der folgende Befehl:
die Timeouts tretten seitdem nicht mehr auf und hostapd läuft stabil! So will man das!
tail -n 400 /var/log/syslog
zeigt folgene Einträge:
Sep 27 14:55:33 Raspi kernel: [ 4916.133773] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 14 in queue 2
Sep 27 14:55:33 Raspi kernel: [ 4916.432124] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
Sep 27 14:55:37 Raspi kernel: [ 4920.459732] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
Sep 27 14:55:33 Raspi kernel: [ 4916.432124] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
Sep 27 14:55:37 Raspi kernel: [ 4920.459732] ieee80211 phy0: rt2800usb_txdone: Warning - Got TX status for an empty queue 2, dropping
Im Logfile stehen noch mehr davon, aber das würde hier das Bild sprengen... google führt zu vielen Ansätzen, meist läuft es darauf hinaus das das Powermanagement des USB WLAN Karte nicht so funktioniert wie es sollte. Als Lösungs ansatz wird das hinzufügen eines Eintrags in die Netzwerkkonfig vorgeschlagen:
nano /etc/network/interfaces
wird um den Eintrag:
wireless-power off
erweitert. Bei mir hat das leider nicht zum erfolg geführt. Der Befehl:
iwconfig wlan0 power off
hat nicht das gewünschte Ergebnis gebracht, sonder eine Fehlermeldung. Erfolgsversprechend ist jedoch der folgende Befehl:
/usr/sbin/ifplugd wlan0 --kill
die Timeouts tretten seitdem nicht mehr auf und hostapd läuft stabil! So will man das!
Freitag, 12. September 2014
Raspberry im IKEA DRAGAN Gewand als Airplaybox
Die ersten Versuche dem Raspberry als Airplay Empfänger zu
verwenden waren erfolgreich und ich habe mir ein neues Projekt aus erkoren. Zusammen
mit einem kleinen Lautsprecher und einer kleinen Box soll der Raspberry Musik
und Podcast vom IPhone empfangen und wiedergeben.
Ich habe mir während der Planungsphase weder das kleine 1x1
des Lautsprecherbaus angeeignet, noch habe ich Nächte mit Handbüchern für Tools
zur Berechnung von Lautsprechergehäusen und Frequenzweichen zugebracht. Auch sind
die verwendeten Bauteile aus einem Preissegment, welches audiophilen
Marktteilnehmern durchweg mit absoluter Nichtbeachtung gestraft wird. Wer HiFi Equipment im hohen vierstelligen Bereich sein eigen
nennt und ausschließlich lossless Musik hortet, bitte ich im weiteren sitzend
weiterzulesen. Es wird billig :)
Wie eingangs erwähnt soll der Raspberry in einer kleinen Box
sein zu Hause finden. Gemeinsam mit einem Lautsprecher, dem Verstärker und dem
ganzen anderen Kram der da noch so anfällt.
Auf der Suche nach einem kleinen aber schönen Gewand für
meinen Raspberry bin ich auf Bambus Kästchen von IKEA gestoßen. Das schwedische
Möbelhaus vertreibt das Kästchen unter dem Namen DRAGAN.
Als Verstärker habe ich mir einen KEMO M032N ausgesucht. Als
Lautsprecher verwende ich einen Visaton FRS8. Die Spannungsaufnahme des
Verstärkers liegt bei 8 bis 16 Volt Gleichstrom. Ich habe mich für die goldene Mitte
entschieden und verwende ein Netzteil mit 12Volt. Zum einen weil ich das noch
hatte zum anderen weil ich mit einem USB Adapter für KfZ Steckdosen ohne viel
Geld und Mühe die 5V für den Raspberry gewandelt
bekomme.
Nach den ersten Versuchen habe ich festgestellt, dass doch
alles sehr eng in der Box wird. Nach einigen probieren habe ich die beste
Anordnung gefunden, in der der Raspberry direkt unter der Box befestigt wird.
Auf einer Seite neben dem Speaker befindet sich dann der Kemo Verstärker und
auf der anderen Seite mein Spannungswandler.
Auf der Suche nach einigen Ansätzen bin ich über die Seite instructables.com
gestolpert, auf welcher zwuckl eine ähnliche Box beschreibt. Ich habe mir von
dort die Schaltung angeeignet und an meine Bedürfnisse angepasst. Das heißt im Wesentlichen
ich habe mich für einen logarithmischen Poti (R4) entschieden. Die Wiederstände und den Poti habe ich bei Reichelt bestellt.
Für die Stromversorgung des Raspberry habe ich einen USB Adapter von seinem Plastikkleid befreit und die Kabel an die Anschlüsse gelötet.
Das zusammensetzen des Gehäuses war weit aus schwieriger, da mir das Mc Gyver Gen offensichtlich fehlt. Stück für Stück habe ich den Einsatz für die Box zusammen gebaut. Das Ergebnis kann sich schon mal sehen lassen:
Leider hat sich herausgestellt das dies so nicht ganz so funktioniert wie geplant. Also alles wieder auf Anfang und erneut zusammenbauen. Das verkommt irgendwie 3D-Tetris... aber ich bin erfolgreich.
Ich habe vom Pi den Composie Ausgang abgelötet und konnte diesen dann so upside down auf den Backplanel anbringen. Den Verstärker habe ich an eine der Streben verklebt und der Spannungwandler und die Musikausgang (inklusive Stereo zu Mono Schaltung) einigermasen innerhalb des Einsatzes Fixiert.... Das ganze sieht dann so aus:
Den Lautsprecher und die Frontseite habe ich mit etwas Stoff verkleidet. Das Ergebniss ist nach Einschätzung Dritter recht anschaulich.... was sagt ihr?
Anschliessend die Box zusammengebaut und ab auf den Laufsteg: von Vorn
Von der Seite:
Die Box ist fertig! Doch was sind die inneren Werte? Die Konfiguration des Raspberry habe ich vor dem zusammenschrauben durchgeführt da bis zum Abschluss der Netzwerkkonfiguration mit USB Tastatur und HDMI gearbeitet wurde.
Als OS habe ich ein Rasbian verwendet, das ich von allen unnötigen Ballast befreit habe. Dazu habe ich die folgenden Pakete deinstalliert:
Für die Stromversorgung des Raspberry habe ich einen USB Adapter von seinem Plastikkleid befreit und die Kabel an die Anschlüsse gelötet.
![]() |
| 12V auf 5V Spannungswandler ...outboxed |
Das zusammensetzen des Gehäuses war weit aus schwieriger, da mir das Mc Gyver Gen offensichtlich fehlt. Stück für Stück habe ich den Einsatz für die Box zusammen gebaut. Das Ergebnis kann sich schon mal sehen lassen:
![]() |
| Erster Entwurf des Boxen Einstzes |
Leider hat sich herausgestellt das dies so nicht ganz so funktioniert wie geplant. Also alles wieder auf Anfang und erneut zusammenbauen. Das verkommt irgendwie 3D-Tetris... aber ich bin erfolgreich.
Ich habe vom Pi den Composie Ausgang abgelötet und konnte diesen dann so upside down auf den Backplanel anbringen. Den Verstärker habe ich an eine der Streben verklebt und der Spannungwandler und die Musikausgang (inklusive Stereo zu Mono Schaltung) einigermasen innerhalb des Einsatzes Fixiert.... Das ganze sieht dann so aus:
![]() |
| zweiter Entwurf für den IKEA PI |
Den Lautsprecher und die Frontseite habe ich mit etwas Stoff verkleidet. Das Ergebniss ist nach Einschätzung Dritter recht anschaulich.... was sagt ihr?
Anschliessend die Box zusammengebaut und ab auf den Laufsteg: von Vorn
Von der Seite:
und Von Hinten:
Als OS habe ich ein Rasbian verwendet, das ich von allen unnötigen Ballast befreit habe. Dazu habe ich die folgenden Pakete deinstalliert:
sudo apt-get purge console-setup desktop.* desktop-base dillo gnome.* gsfonts gtk.* gvfs.* libgtk.* libqt.* libxcb.* libxfont.* libxt.* lightdm lxde.* lxpanel omxplayer openbox penguinspuzzle python-tk python3-tk shared-mime-info tcl.* x11.* xarchiver xauth xdg-.* xkb-data xinit xserver.* wolfram
Anschliessend natürlich den Rest auf den aktuellen Stand bringen:
sudo
apt-get update && sudo apt-get upgrade
Ich habe ebenfalls die Firmware des PI noch aktualisiert:
sudo rpi-update
Danach kommt die Konfiguration des WLAN Adaptes, bei welcher die Datei /etc/network/interfaces angepasst wird. Als erstes füge ich den WLAN Schlüssel an das ende der Datei angefügt:
sudo wpa_passphrase Testnetz TestPhrase >> /etc/network/interfaces
Aus den angefügten Inhalt und wird die Konfiguration der Datei /etc/network/interfaces editiert. Das Ergebnis sollte so aussehen:
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "ssid"
wpa-psk "password"
iface lo inet loopback
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "ssid"
wpa-psk "password"
Anschliessend wird das Netzwerk neu gestartet:
sudo ifdown wlan0 && sudo ifup wlan0
Ein Blick in ifconfig zeigt das sich der WLAN Adapter eine Adresse aus dem Adressraum meines DHCP Servers bezogen hat.
sudo ifconfig
Nach der Konfiguration des Netzwerkes werden weitere Pakete installiert, welche für Shairport benötigt werden:
sudo
apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl
libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl
Ist dies geschehen wird noch das Perlmodul perl-net-sdp instlliert. Wobei ich mir gerade nicht sicher bin ob das bei der Version von Shairport, welche ich verwende benötigt wird.
git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
cd perl-net-sdp
perl Build.PL
./Build
./Build test
./Build install
cd
cd perl-net-sdp
perl Build.PL
./Build
./Build test
./Build install
cd
Okay die Basis für Shairport ist gelegt, jetzt kommt die Shairport installation an sich.
git clone https://github.com/abrasive/shairport.git shairport
cd shairport
./configure
make
make install
cd shairport
./configure
make
make install
Ich kann das Ergebnis schon Testen in dem ich folgenden Befehl ausführe:
./shairport -a TestAIR
Super funktioniert und ich kopiere jetzt die Skripte, welche benötigt werden um Shairport beim Boot zu starten:
cp /opt/shairport/scripts/debian/init.d/shairport /etc/init.d
cp /opt/shairport/scripts/debian/default/shairport /etc/default
cp /opt/shairport/scripts/debian/default/shairport /etc/default
danach wird die Datei ausführbar gemacht und mit einem Runlevel versehen werden:
chmod a+x /etc/init.d/shairport
update-rc.d shairport defaults
update-rc.d shairport defaults
Jetzt wird noch die Konfigurationsdatei von shairport angepasst:
nano /etc/init.d/shairport
In der Zeile 30 wird der Name für AirPlay vergeben, unter welchen ich das Gerät später finde:
AP_NAME=$(hostname)
wird zu:
AP_NAME=MyAIRPI
So die Datei speichern und zu guter letzt den Service von Shairport starten:
service shairport start
Der Raspberry läuft, auch nach einem Reboot ist Shairport sichtbar! und vor allem er hat ein schönes Gehäuse!
Montag, 4. August 2014
Raspberry verliert Verbindung zum WLAN
Meinen Raspberry Model A verwende ich seit einer Weile als Shairport Empfänger für Airplaystreams aus den Apple Geräten. In mein WLAN verbidnet sich der Raspi über einen USB WIFI Donkel von EDIMAX (Modell EW - 7811UN). Wenn der Raspberry frisch gestartet ist und ich ein Audiostream darauf sende funktioniert dies wunderbar…. auch über Stunden.
Leider ist mir in den letzten Tagen aufgefallen, dass der Raspi nach einer längeren Pause (wie Lang weiß ich nicht) nicht mehr erreichbar ist. Weder über Airplay, noch per SSH.. auch Pings gehen ins Leere.
Im Access Point ist der Raspberry auch nicht mehr sichtbar. Der Befehl:
zeigt den Raspberry nicht mehr.
Einige Recherchen im Netz zeigen, dass sich der WIFI Stick nach einiger Zeit in den Stromsparmodus schaltet. Ich habe deswegen ein Script geschrieben, welches alle paar Minuten einen Ping an den Router sendet und den WLAN Adapter neustartet, wenn kein Ping durchkommt:
Mit dem Befehl logger kann ich in ein logfile schreiben, welches ich zuvor mit
erzeugt habe.
Okay. Leider funktionierte das nicht Ganze nicht wie gewünscht. Zudem ist es sicher besser die Ursache des Problems zu beheben, anstatt die Auswirkungen zu beseitigen…
Also besser versuchen das der EDIMAX nicht mehr in den Stromsparmodus fällt. Sowohl im Raspberryforum, auf raspberrypi.stackexchange als auch im developer-blog wurde gezeigt, wie durch Abschalten des Stromsparmodus die Verbindung nicht abbricht.
In der Konfigurationsdatei 8192cu.conf müssen die Schalter rtw_power_mgnt und rtw_enusbss auf 0 gesetzt werden
Die Zeile sollte nach der Änderung wie folgt aussehen:
Wenn der Inhalt gespeichert ist muss der Treiber neu geladen werden. Da dies sowieso zu einem verbindungsabruch führt, kann ich meinen PI auch direkt neu starten.
Seit der Änderung läuft der Pi mittlerweile seit 3 Tagen durchgehend im WLAN ohne das die Verbindung wieder abgebrochen ist.
Problem gelöst!
PS Den Lösungsansatz 1 habe ich noch am Laufen, es schadet nicht und bisher habe ich keine Verbindungsabbrüche im Logfile gesehen…
Leider ist mir in den letzten Tagen aufgefallen, dass der Raspi nach einer längeren Pause (wie Lang weiß ich nicht) nicht mehr erreichbar ist. Weder über Airplay, noch per SSH.. auch Pings gehen ins Leere.
Im Access Point ist der Raspberry auch nicht mehr sichtbar. Der Befehl:
sudo –arp
zeigt den Raspberry nicht mehr.
1. Lösungsansatz
Einige Recherchen im Netz zeigen, dass sich der WIFI Stick nach einiger Zeit in den Stromsparmodus schaltet. Ich habe deswegen ein Script geschrieben, welches alle paar Minuten einen Ping an den Router sendet und den WLAN Adapter neustartet, wenn kein Ping durchkommt:
#!/bin/sh
ping -c4 192.168.2.1 > /dev/null
if [ $? != 0 ]
then
logger –f /var/log/lostwifi "lost connection, restart wifi"
/sbin/ifdown 'wlan0'
sleep 2
/sbin/ifup --force 'wlan0'
fi
ping -c4 192.168.2.1 > /dev/null
if [ $? != 0 ]
then
logger –f /var/log/lostwifi "lost connection, restart wifi"
/sbin/ifdown 'wlan0'
sleep 2
/sbin/ifup --force 'wlan0'
fi
Mit dem Befehl logger kann ich in ein logfile schreiben, welches ich zuvor mit
touch /var/log/lostwifi
erzeugt habe.
2. Lösungsansatz
Okay. Leider funktionierte das nicht Ganze nicht wie gewünscht. Zudem ist es sicher besser die Ursache des Problems zu beheben, anstatt die Auswirkungen zu beseitigen…
Also besser versuchen das der EDIMAX nicht mehr in den Stromsparmodus fällt. Sowohl im Raspberryforum, auf raspberrypi.stackexchange als auch im developer-blog wurde gezeigt, wie durch Abschalten des Stromsparmodus die Verbindung nicht abbricht.
In der Konfigurationsdatei 8192cu.conf müssen die Schalter rtw_power_mgnt und rtw_enusbss auf 0 gesetzt werden
sudo nano /etc/modprobe.d/8192cu.conf
Die Zeile sollte nach der Änderung wie folgt aussehen:
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
Wenn der Inhalt gespeichert ist muss der Treiber neu geladen werden. Da dies sowieso zu einem verbindungsabruch führt, kann ich meinen PI auch direkt neu starten.
Seit der Änderung läuft der Pi mittlerweile seit 3 Tagen durchgehend im WLAN ohne das die Verbindung wieder abgebrochen ist.
Problem gelöst!
PS Den Lösungsansatz 1 habe ich noch am Laufen, es schadet nicht und bisher habe ich keine Verbindungsabbrüche im Logfile gesehen…
Samstag, 12. Juli 2014
Stille Nacht - update gemacht
Gestern hat mein kleiner Brüllwürfel etwas gestottert und gehangen. Auf den ersten Blick in die Logs habe ich keine Unstimmigkeiten gesehen. Da ich weder Zeit noch Motivation hatte dem Aussetzern auf den Grund zu gehen habe ich mir gedacht den Pi einfach mal durch zupatchen und dann wird schon alles wieder gut. Falsch gedacht. Nach
ging nichts mehr! Gar nichts! Wenn ich Musik auf den Airplay Empfänger gestreamt habe ging nichts mehr. Nach 30 Minuten probieren und googlen bin ich im Raspberryforum als auch bei StackExchange auf die Antwort gekommen. in der Datei /etc/modules stand der Eintrag
Und trotzdem kein Sound. Hmmmm ein blick in den amixer zeigt, das alles stumm geschaltet ist. Mit
sudo apt-get update &&sudo apt-get upgrade
ging nichts mehr! Gar nichts! Wenn ich Musik auf den Airplay Empfänger gestreamt habe ging nichts mehr. Nach 30 Minuten probieren und googlen bin ich im Raspberryforum als auch bei StackExchange auf die Antwort gekommen. in der Datei /etc/modules stand der Eintrag
snd-bcm2835
Ich bin mir nicht sicher ob ich den Eintrag so gesetzt habe, in meinen Tutorial zu Airplay habe ich nicht darüber geschrieben. Wie auch immer, ich habe in die /etc/modules folgenden Eintrag eingefügt
snd_bcm2835
Dabei habe ich den Eintrag mit dem Minus herausgelöscht. Einmal den Pi neubooten..... das Modul wird geladen. Und trotzdem kein Sound. Hmmmm ein blick in den amixer zeigt, das alles stumm geschaltet ist. Mit
alsamixer
habe ich die Soundkarte wieder auf eine mittlere Lautstärke gesetzt und sie da alles funktioniert wieder.Samstag, 5. Juli 2014
Probleme mit rpi-update
Ich habe wieder mal nen Pi aufgesetzt und nach den obligatorischen updates mittels
versucht den Pi eine neue Frimware aufzuspielen. Der Befehl
hat folgenden Fehler ausgegeben:
Was ist da los? Schnell gegoogelt und im Rasperry Forum einen Thread gefunden, der ein Update des Linuxheaders empfohlen. Das hat mir die Augen geöffnet. Im Upgrade wurde doch sicher der Linuxheader aus geupdated. Scheinbar waren die Haederinfos noch für rpi-update veraltet.
durchgeführt und siehe da, es funktioniert!!
Und wie am Ende des Updates steht, noch mal durch booten. Geht doch!
sudo apt-get update && sudo apt-get upgrade
versucht den Pi eine neue Frimware aufzuspielen. Der Befehl
sudo rpi-update
hat folgenden Fehler ausgegeben:
cannot stat `//lib/modules/3.10.25+': No such file or directory
Was ist da los? Schnell gegoogelt und im Rasperry Forum einen Thread gefunden, der ein Update des Linuxheaders empfohlen. Das hat mir die Augen geöffnet. Im Upgrade wurde doch sicher der Linuxheader aus geupdated. Scheinbar waren die Haederinfos noch für rpi-update veraltet.
Boot tut gut
Nach dem der Raspi einmal durchgebootet war einfach noch einmal
sudo rpi-update
durchgeführt und siehe da, es funktioniert!!
sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 135 100 135 0 0 208 0 --:--:-- --:--:-- --:--:-- 283
100 7026 100 7026 0 0 8248 0 --:--:-- --:--:-- --:--:-- 8248
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Backing up firmware
*** Backing up modules 3.12.22+
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 100 168 0 0 278 0 --:--:-- --:--:-- --:--:-- 362
100 21.1M 100 21.1M 0 0 528k 0 0:00:41 0:00:41 --:--:-- 1684k
*** Updating firmware
*** Updating kernel modules
*** depmod 3.12.23+
*** Updating VideoCore libraries
*** Using HardFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to d6ee0e1ad5 a116a533448bb1ce3d61e1b0c0943b
*** A reboot is needed to activate the new firmware
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 135 100 135 0 0 208 0 --:--:-- --:--:-- --:--:-- 283
100 7026 100 7026 0 0 8248 0 --:--:-- --:--:-- --:--:-- 8248
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** We're running for the first time
*** Backing up files (this will take a few minutes)
*** Backing up firmware
*** Backing up modules 3.12.22+
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 100 168 0 0 278 0 --:--:-- --:--:-- --:--:-- 362
100 21.1M 100 21.1M 0 0 528k 0 0:00:41 0:00:41 --:--:-- 1684k
*** Updating firmware
*** Updating kernel modules
*** depmod 3.12.23+
*** Updating VideoCore libraries
*** Using HardFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to d6ee0e1ad5 a116a533448bb1ce3d61e1b0c0943b
*** A reboot is needed to activate the new firmware
Und wie am Ende des Updates steht, noch mal durch booten. Geht doch!
Abonnieren
Posts (Atom)







