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:
  1. 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
  2. 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
Noch einen Hinweis im Vorfeld. In den allerwenigsten Fällen wird der gesamte Speicherplatz auf der SD Karte verwendet. Ich habe mir deswegen ein "Master Image" erstellt, in welchen schon alle notwendigen Informationen für mein Lan liegen und welches auf eine 4GB Karte passt. Die exakte Größe der SD Karte variiert von Karte zu Karte -selbst im selben Image. Ich habe deswegen maximal 3,9 GB als Imagedatei

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

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

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

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

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

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.

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

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.
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:

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:

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"

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

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

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

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

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:

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

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
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

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

  Und wie am Ende des Updates steht, noch mal durch booten. Geht doch!

Samstag, 5. April 2014

Raspberry PI Tuning: Alle unnötigen Pakete vom Raspberry entfernen

Entfernen aller Desktop / GUI Pakete

In den meisten Fällen sind die SD Karten für den Raspberry groß genug um einer Standartinstallation Platz zu geben. Der Raspberry hat mit der Distribution Raspbian eine große Auswahl an Programmen vorinstalliert, welche häufig nicht gebraucht werden. Ich lasse meinen Server häufig ohne Grafische Benutzeroberfläche laufen. Deswegen entferne ich gern die nicht benötigten Programme.
Hier eine Auswahl der Programmpakete die ich bei mir entferne

Console-setup    Dektop.*    desktop-base    dillo    Gnome.*    gsfonts    Gtk.*    Gvfs.*    Libgtk.*    Libqt.*    Libxcb.*    Libxfont.*    Libxt.*    lightdm    Lxemu.*    Lxde.*    lxpanel    omxplayer    openbox    penguinspuzzle    Python-tk    Python3-tk    scrathc    Shared-mime-info    Tcl.*    wolfram.*    x11.*    xarchiver    Xauth    Xdg-.*    Xkb-data    xinit    Xserver.*


Als Konsolenbefehl sieht das so aus:

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* sonic-pi squeak-vm timidity idle3 zenity mupdf midori

[Update: 2015-02-18]: Java kann eigentlich auch weg! Bei Distries vor 2014-09-09 haben noch Java7 (Quelle: Forum RaspberryPi.org)

sudo apt-get purge java-common oracle-java8-jdk
[Update: 2015-02-18- Ende]

Der Raspberry schlägt ein Autoremove vor, der Vorschlag wird angenommen! Der Befehl dazu:
apt-get autoremove && apt-get clean

Anschliessend noch mal Update und Upgrade starten, damit alle installierten Programme auf aktuellem Stand sind:

apt-get dist-upgrade

Fertig jetzt ist der Raspberry schön schlank.

Grafikspeicher freigeben

Die GPU benötigt einen Teil des Arbeitsspeichers, da es keinen dedizierten Grafikspeicher auf dem Board gibt. Wenn keinen grafikintensiven Anwendungen betrieben werden, so wie hier, benötigt man kaum Speicher. Dieser reservierte Speicher kann für andere Anwendungen wieder freigegeben werden.

Konfigurationskonsole des Raspberry für geteilten Grafikspeicher
Über die Konfigurationskonsole des Raspberrys kommst du über die Setupoption Nummer 8 "Advanced Options" und dann A3 "Memory Split" an die Einstellungen. Dort habe ich 16 MB als reservierten Grafikspeicher eingetragen.

Der Befehl für die Konsole lautet

sudo raspi-config

To be continued...

ich werde in der nächsten Zeit weitere Punkte zum optimieren des Raspberry hinzufügen. Empfehlungen und Anregungen sind sehr willkommen.



[Änderungen]
2014-04-05: Wolfram und Mathematica kommen auch weg. Tschüss!

Donnerstag, 3. April 2014

Probleme mit Shairport


Soundprobleme

Unter umständen kommt es bei der Installatioon oder bei der Konfiguration zu Fehlern und der Rasperry arbeitet nicht als Airplay Device. Im Folgenden Trage ich einige Probleme zusammen, welche ich selbst hatte und zeige wie man diese Probleme beheben kann.

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) 

Dieses Problem hatte ich als ich nach der Installation von Shairport das erste mal mit

./shairport.pl -a MyPi

die Funktion von Shairport testen wollte.
Diese Meldung lässt sich beheben, indem die Configdatei von ALSA editiert wird.

sudo nano /usr/share/alsa/alsa.conf

In der Datei wird die Zeile 

pcm.front cards.pcm.front

zu

# pcm.front cards.pcm.front
pcm.front cards.pcm.default

geändert.

Samstag, 15. Februar 2014

virtual Raspberry

In den letzten Tagen habe ich wieder an meinem Tutorial für den einsatz des Raspberry als Airplay Empfänger im Auto geschrieben und bin auf die Idee gekommen, das es doch schön wäre den Raspberry in einer virtuellen Umgebung zu emulieren. Warum? Weils geht! Und weil ich so besser Screenshots fürs Blog machen kann und weil es cool ist um einfach mal paar Sachen zu Testen und und und....

Die meisten unserer Rechner laufen mit x86 oder x86-64 Architektur, der Raspberry PI hat einen ARM Prozessor. Das heißt wir müssen einen Weg finden, um ARM zu emulieren. Sowohl unter Windows als auch unter Linux können wir QEMU verwenden.


Auf die schnelle geht das mit mit einer Anleitung, die ich auf dem Blog von xecdesign gefunden habe. Dort wird beschrieben wie Raspbian unter Windows und unter Linux emuliert wird.

Der aller einfachste Weg unter Windows (AMD64) ist ein vorkonfiguriertes Paket das einfach hier runtergeladen werden kann. Das Paket beinhaltet neben Qemu einen angepassten Kernel und scheinbar auch ein verändertes Raspbian Image. Die Qemu Sourcen wurden hier genommen und von Der Kernel ist von xecdesin.

Unter Windows muss das Paket einfach entpackt werden und die run.bat gestartet werden.

Leider stehen nicht alle Funktionen der Scheckkartenplatine zur Verfügung. Das ist bei GPIO noch nachvollziehbar anderes, wie die zugriffe auf eine die SD Karte zu emulieren ist sicher konfigurierbar. Mal schauen, was ich dazu noch herausfinde.