Donnerstag, 23. Juni 2016

Raspbian Konfiguration ohne Monitor und Keyboard

Als intensiver Raspberry Pi Benutzer hat man eigentlich für alle Fälle ein Image mit einem passenden OS rumliegen. Meine Images sind beispielsweise alle für meine privaten Netzwerke vorkonfiguriert und ich muss diese einfach nur auf eine SD Karte kopieren und in den Raspberry stecken. Dann kann es direkt losgehen – mit was auch immer. Die Konfiguration eines neuen Rasbians kann man meist auch erledigen, indem der kleine Einplatinencomputer mit einem Netzwerkkabel ins LAN gebracht wird.

Es gibt aber Gegebenheiten, in welchen diese Ansätze nicht weiterhelfen und die Umstände es nicht ermöglichen den Raspberry über das Netzwerkkabel ins Netz zu bringen und nur WLAN zur Verfügung steht. Es gibt einen einfachen Weg, diese Konfiguration an einem Laptop direkt nach dem Kopieren des Raspbian Image auf die SD Karte vorzunehmen. Die einzelnen Schritte beschreibe ich für Windows, Linux und (bald auch) OSX.
Ich beziehe mich hier auf das Standard Rasbian, das Howto geht NICHT mit Raspbian lite. (Stand 2016-05-27-raspbian-jessie-lite.img)
Das Image wird von https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen.

Konfiguration unter Windows
Konfiguration unter Linux (Ubuntu)

Konfiguration unter Windows

Das heruntergeladene Image wird mit dem WinDiskImager32 auf die SD Karte kopiert.

Anschließend ist ein Teil (eine von zwei Partitionen) des kopierten Images im Windows Explorer sichtbar.

 In diesen Bereich wird eine neue Datei erstellt, die wpa_supplicant.conf genannt wird. In diese Datei werden die folgenden Informationen eingefügt (zum Editieren verwende ich gern Notepad++ oder Textpad)

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

network={
   &nbsp ssid="SSID"
    psk="Passwort"
}

Ist die Datei gespeichert kann diese im Raspberry verwendet werden. Wird der Raspberry gestartet, bekommt er vom WLAN eine IP Adresse zugewiesen über welche auf den Raspberry zugegriffen werden kann. Die meisten Router oder Access Points haben ein Web Frontend über das man die IP Adresse des Raspberry herausfinden kann. Ist das nicht möglich, hilft ein Netzwerkscanner. Mit Windows Bordmitteln ist ein Scann des gesamten Netzwerks nicht (so einfach) möglich. Auf iOS und Android Smartphones habe ich dafür Fing.


Konfiguration unter Linux

Unter Linux kann man das Image mit dd auf die SD Karte kopieren. Zuerst wird geschaut, wie der Gerätename der SD Karte unter Linux ist. Bevor die Karte eingesteckt wird werden die gemounteten Speichergeräte aufgelistet. Dies erfolgt mit dem Befehl:

df -h

Anschliessend wird die SD Karte eingesteckt und der Befehl

df -h

erneut ausgeführt. In der Rückgabe sollte

/dev/mmcblk0p1

oder

/dev/sdd1

stehen. Ich verwende hier weiter den mmcblk0p1. Anschließend wird das Device mit umount ausgehangen. Sollten mehrere Partitionen auf der SD Karte sein (erkenntlich an mmcblk0p2, mmcblk0p3, …), müssen diese auch alle ausgehangen werden.
Anschließend kann das Image auf die SD Karte kopiert werden. Wichtig ist dabei, das hier auf die SD Karte und nicht auf eine Partition kopiert wird. Deswegen ist der Name auf den kopiert wird /dev/mmcblk0 oder /dev/sdd und nicht/dev/mmcblk0p1 bzw /dev/sdd1.
Der Befehl zum Kopieren lautet:

dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0

Das Kopieren geht natürlich auch mit einer GUI mit einem aktuellen Ubuntu (16.x) geht dies recht einfach mit dem usb-imagewriter. Dieser muss gegeben falls nach installiert werden.
Nach dem die Karte beschrieben wurde, muss die SD Karte neu gemountet werden. Am einfachsten kurzzeitig entfernen und neu einstecken. Mit

df -h

erkennt man, dass die Karte zwei Partitionen hat. Eine Partition heißt /dev/mmcblk0p1 und die andere /dev/mmcblk0p2. Hier ist die kleinere Partition mit einer Größe von ca 50 bis 100MB interessant. Auf diese werden wir die WLAN Informationen kopieren, die später beim ersten Start von Raspbian im Raspberry an die richtige Stelle verschoben werden.
Im Terminal wird mit dem Befehl:

sudo wpa_passphrase testwifi testpassword >> /dev/ mmcblk0p1/wpa_supplicant.conf

werden die relevanten Informationen in die wpa_supplikant Datei geschrieben. Wer mag kann diese dann öffnen und folgende (fett geschriebenen) Informationen voranstellen, so dass die Datei dann folgenden Inhalt hat.

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
    ssid="testwifi"
    #psk="testpassword"
    psk=d28f6e7bcc45536a1930c0010f1d8a8e16c5dc154cc1309ae97859f2586924df
}

Um sich später mit dem Raspberry verbinden zu können, muss die IP Adresse in Erfahrung gebracht werden. Wenn die MAC Adresse (oder der Herstellercode) bekannt ist, wird der Raspberry gestartet und nach einigen Momenten mit nMap nach dem Raspberry gescannt. Den Herstellercode (OUI genannt) kann man unter http://aruljohn.com/mac.pl herausfinden. Bei der Eingabemaske auf vendor lookup klicken und den Hersteller der Karte eingeben.

Die MAC Adressteil 80:F1:02 steht hier exemplarisch für meinen Edimax WIFI USB Adapter.

nmap -sP 192.168.50.0/24 | awk '/^Nmap/{ip=$NF}/80:F1:02/{print ip}'


Damit hat man alle Informationen, um sich mit SSH auf den Raspberry zu verbinden.

Mittwoch, 10. Februar 2016

Schlüssel basierte SSH Verbindung zum Raspberry

Wird mit dem Raspberry remote und ohne GUI gearbeitet, kommt SSH zum Einsatz. Mit dem Benutzernamen und dem Passwort kann man sich mit dem Raspberry verbinden. Unter Windows wird für diese Verbindung Putty verwendet bei Unix,Linux und macOS/OSX kann man das mit Bordmitteln.
Putty kann man von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunterladen.
Diese Verbindung statt mit einem Passwort mit einem SSH Schlüssel aufzubauen hat einige Vorteile wie z.B.
  • Das Passwort wird nicht über das Netzwerk übertragen
  • Wenn der Raspberry im Internet steht, wird die Wahrscheinlichkeit von erfolgreichen Brute-Force Angriffen erheblich reduziert
  • man kann sich automatisiert und ohne Passwort mit dem Raspberry verbinden

Erstellen der Schlüssel

Um unter Windows einen Schlüssel zu erstellen wird von der Putty Webseite der PuttyGen geladen und gestartet. Anschließend wird geprüft ob der Schlüsseltyp auf SSH2 RSA steht und ob die Schlüssellänge ausreichend erscheint. Wobei 2048 ausreichend sein sollte. Zum Erstellen des Schlüssels wird auf Generate geklickt.

Ist der Schlüssel erzeugt, werden im PuttyGen Informationen zum Schlüssel angezeigt.

Wer mag kann unter Key Comment einen Kommentar zu diesem Schüssel einfügen, damit man später den Verwendungszweck wieder erkennen kann. Zusätzlich kann man seinen Schlüssel mit einem Passwort schützen, dies muss dann bei jeder Verbindung zum Raspberry eingegeben werden. Ich verwende dies in diesem Fall nicht, da ich den Vorteil eines schnellen, automatisierbaren und passwortfreien Verbindungsaufbau haben möchte.
Sind alle Informationen so vollständig wie man sich das wünscht, wird der Privatschlüssel gespeichert, indem auf Save Private Key geklickt wird. Normalerweise ist die Dateiendung ppk.
Man kann ebenfalls den Öffentlichen Schlüssel, den public Key speichern, notwendig ist dies hier nicht. Wir verwenden den Keystring aus dem PuttyGen und des Weiteren kann dieser öffentliche Schlüssel bei Bedarf immer aus dem privaten Schlüssel erzeugt werden.
Da der öffentliche Schlüssel später noch verwendet wird, wird PuttyGen erst mal nicht geschlossen.


Raspberry für SSH Keys konfigurieren

Davon ausgehend, daß der Raspberry läuft, wird mit Putty eine Nutzer/Passwort Verbindung aufgebaut.


In diesem Beispiel wird die Konfiguration für den Standardnutzer pi vorgenommen. Nach dem einloggen wird das Verzeichnis für den öffentlichen SSH Schlüssel erzeugt. Die erfolgt mit dem Befehl:

mkdir -p ~/.ssh

Danach wird die Datei für alle mit dem Nutzer verknüpften Schlüssel geöffnet (und falls nicht vorhanden erzeugt)

sudo nano ~/.ssh/authorized_keys

Aus dem PuttyGen wird der vollständige öffentliche Schlüssel markiert und kopiert. Dieser wird in dem Puttyfenster mit einem Rechtsklick wieder eingefügt. Der Schlüssel darf dabei nur auf einer Zeile stehen. Mit der Ende Taste sollte man an das Ende der Zeile springen und schauen dies mit dem Ende des Schlüssels in PuttyGen übereinstimmt.

Die Datei wird mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Ist die Datei gespeichert wird diese mit folgenden Befehlen gesichert:

sudo chmod 644 ~/.ssh/authorized_keys
sudo chown pi:pi ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh

Der öffentliche Schlüssel befindet sich auf dem Raspberry, jetzt muss noch geprüft werden ob die Konfiguration für SSH passt. Dazu wird die Konfigurationsdatei mit

sudo nano /etc/ssh/sshd_config

geöffnet und geprüft ob die folgenden Einstellungen so in der Datei stehen (wahrscheinlich an unterschiedlichen Stellen in der Datei). Gegeben falls müssen voranstehende # Symbole entfernt werden.

PermitRootLogin no
AllowUsers pi
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
UsePAM no

Mussten an der Datei Änderungen vorgenommen werden, wird diese mit der Tastenkombination CTRL X anschließend Y und Enter gespeichert. Anschließend wird der SSH Deamon neu gestartet:

sudo systemctl restart sshd

Putty für die Verbindung mit SSH Key konfigurieren

Zu guter Letzt muss noch der Putty als SSH Client konfiguriert werden. Im Putty müssen unter Session die IP Adresse oder der Hostname eingegeben werden. Unter der Kategorie Connection->Data wird der Benutzername eingegeben und bei Connection->SSH->Auth den Pfad und Dateinamen des privaten Schlüssels. Siehe die folgenden drei Screenshots:
Abschliessend werden die Einstellungen gespeichert, indem unter Session ein Sessionname gewählt wird und auf Save geklickt wird.
 Später kann die Session mit einem Doppelklick gestartet werden. Wenn eine SSH Verbindung mit dem Schlüssel aufgebaut, sieht man die Erfolgsmeldung abschließend in der Konsole.
Über Kommentare und Hinweise zu dem Post freue ich mich :)

Sonntag, 1. März 2015

Raspberry als Shairport Empfänger 2015

Shairport läuft und läuft. Derzeit habe ich Shairport auf drei Rapsberrys in der Wohnung. Das läuft so stabil, das ich mich mit dem Projekt auch kaum beschäftigt habe.
Mittels RSS Feed habe ich aber die Entwicklung von Shairport auf github weiter verfolgt und so auch die Nachricht des Entwicklers gelesen, dass Shairport nicht weiter entwickelt wird.
ShairPort is no longer maintained
As I no longer use Shairport myself, I am no longer maintaining or supporting Shairport. Thanks to everyone who has contributed over the years; it's been a great experience. For the ongoing user, there are a great many forks and ports to choose from now, many of which are of a very high quality and well maintained. — James 
Dabei verweist der Entwickler auf Forks, also Entwicklungszweige, von denen es fast 400 gibt. Die ernsthaft weiterentwickelten Forks sind wohl so eine Handvoll. Eine der am konsequentesten betriebenen Forks scheint der von Mike Brady zu sein.

Da ich jetzt einige meiner Raspbians auf Jessie aktualisiert habe, habe ich mich entschlossen auch für einen der Shairport diesen Schritt zu gehen und dabei Shairport von abrasive (James) auf diesen Fork von Mike Brady zu setzen.

Nach dem der Raspberry mit einem neuen Image von Raspbian bespielt wurde habe alle nicht benötigten Pakete aus dem Image entfernt und auf Raspbian Testversion Jessie aktualisiert.

Anschließend werden die notwendigen Pakete installiert

apt-get install autoconf libtool libdaemon-dev libasound2-dev libpopt-dev

Mike Brady empfiehlt auch Avahi zu verwenden, welches mit

apt-get install avahi-daemon libavahi-client-dev

installiert wird. Man kann auch auf SSL zurückgreifen wobei man die Auswahl zwischen OpenSSL und PolarSSL hat. Da OpenSSL sowieso schon auf dem System ist muss kein weiteres Paket installiert werden. Eine weitere Option ist das Resamplen mit SoXR. Dies möchte ich hier übergehen, da es für mich nicht notwendig ist. Jetzt sind alle Voraussetzungen für Shairport-Sync auf dem Raspberry – benötigt wird nun der Shairport selbst, der mit dem folgenden Befehl heruntergeladen wird:

git clone https://github.com/mikebrady/shairport-sync.git

Wenn der Download heruntergeladen ist, wechseln wir in das entsprechende Verzeichnis

cd shairport-sync

Dort werden zuerst mit autoreconf die Konfigurationsdateien für die Installation erstellt.

autoreconf –i –f

Wenn dieser Schritt abgeschlossen ist wird die Konfiguration gestartet und die entsprechenden Parameter der Konfiguration übergeben. Für meine Konfiguration sieht der Befehl so aus:

./configure --with-alsa --with-avahi --with-ssl=openssl

Ist die Konfiguration abgeschlossen, wird mit

make

Shairport-Sync erstellt und anschließend mit

make install

in die entsprechenden Verzeichnisse installiert. Dabei wird auch ein Start Skript erstellt, damit der Shairport-Sync beim Start des Raspberry mitstartet. Da wir aber auf Raspbian Jessie gesetzt haben funktioniert das so nicht mehr. Also wird ein systemd Startskript benötigt, welches Shairport-sync für uns startet und stoppt. Dazu erstellen wir folgende Datei:

nano /etc/systemd/system/shairport-sync.service

dort wird dann folgender Text eingefügt:

[Unit]
Description=Shairport AirTunes receiver
After=sound.target
Requires=avahi-daemon.service
After=avahi-daemon.service
[Service]
Type=simple
ExecStart=/usr/local/bin/shairport-sync -a "MyShairport"
Restart=always
[Install]
WantedBy=multi-user.target

MyShairport ersetzt ihr durch den Namen, welcher euer Shairport Empfänger im Netzwerk haben soll. Die Datei wird gespeichert und anschliessend Shairport-Sync zu den Systemdiensten hinzugefügt:

systemctl enable shairport-sync.service

Ist das geschehen, kann der Shairport gestartet werden. Dies erfolgt über

systemctl start shairport-sync.service

und mit dem Befehl

systemctl status shairport-sync.service

kann geprüft werden ob Shairport läuft. Die Ausgabe sollte ungefähr so aussehen:

shairport-sync.service - Shairport AirTunes receiver
Loaded: loaded (/etc/systemd/system/shairport-sync.service; enabled)
Active: active (running) since Sun 2015-03-01 17:33:51 UTC; 3s ago
Main PID: 3040 (shairport-sync)
CGroup: /system.slice/shairport-sync.service
           ââ3040 /usr/local/bin/shairport-sync -a MyShairport

Mar 01 17:33:51 spi03 systemd[1]: Started Shairport AirTunes receiver.
Mar 01 17:33:51 spi03 shairport-sync[3040]: startup

Zu letzt kann man noch testen, ob nach einem Reboot Shairport-Sync auch läuft. Damit wäre das Tutorial Shairport-Sync auf Rasbian Jessie auch vollständig. Viel Spass beim Was-auch-immer-hören

Freitag, 27. Februar 2015

DIY Budget NAS Server 2015 für Zuhause: Teil 1 (Einleitung)

Ich werde das Do It Yourself NAS Projekt als kleine Serie schreiben und möchte, bevor ich loslege die einzelnen Abschnitte vorstellen:


Was wollt Ihr den?


Wenn ich in NAS Foren Vorschläge für Eigenbau Server lese, kommen meist deutlich über 500€ ohne Festplatten zusammen. Gut diese Konfigurationen sind recht beeindruckende Zusammenstellungen und bieten Stromsparend Power. Ich bin jedoch nicht auf der Suche nach einem Luxus NAS sondern ich möchte meine Daten Stromsparend im heimischen LAN halten. Eventuell, später über OwnCloud für mich und meine Familie im Internet. Aber das ist Zukunft. Streaming im Netz ist erst mal nicht vorgesehen, da die HomeEntertainment Anlage schon einen Medienplayer hat.

Die Anforderungen an das Künftige NAS sind schlussendlich:
  • günstiger Preis! Ohne Platten sollte das NAS unter 200€ kosten.
  • mindesten 3 Platten, damit im RAID5 die Daten relativ sicher gehalten werden
  • Stromverbrauch. im Normalbetrieb soll der Verbrauch des NAS nicht allzu hoch sein. Inklusive 3 oder 4 Festplatten sollten wir um die 30-40 Watt bei Last liegen.
  • GB LAN 
Bei den Budgetvorgaben muss nachgeschaut werden was ich nicht benötige. Wo kann ich sparen?
  • ein Punkt auf den ich verzichten kann sind viele externe Anschlüsse. Video und Tastatur sind nur für die erste Konfiguration notwendig. Somit reicht da einfachstes HDMI, DFI oder gar VGA. Für eine Tastatur reicht eigentlich ein USB oder PS2 Anschluss 
  • die Festplatten können ins Gehäuse geschraubt werden. Hotpluging für Festplatten soll es nicht geben. Wenn ich an die Platten will, muss ich halt ans Gehäuse und schrauben...
  • WLAN das NAS hat LAN das reicht. 
  • Das Betriebssystem kommt auf einen USB Stick, wir werden keine eigene Systempartition als HDD oder SSD verwenden.

Das NAS soll mit einer Linux oder BSD Distribution laufen. Doch auch hier gibt es schon Einschränkungen bei der Auswahl. Weitere Einschränkungen werden sichtbar wenn ich mich dem Dateisystem zuwende. ZFS wird nicht möglich sein. Aufgrund der Preisgrenze ist kein ECC Ram möglich. Schade aber das Ziel bei 200€ bleibt!



Donnerstag, 26. Februar 2015

DIY Budget NAS Server 2015 für Zuhause: Teil 2 (Hardwareauswahl)

Wenn ich die Eckpunkte des einleitenden Artikels berücksichtige und mich am Markt umschaue, stechen zwei Mainboards mit CPU ins Auge. Beide sind von ASROCK. Das eine ist das E350M1, welches mit AMD E-350 daher kommt, es bietet zwei Steckplätze für DDR3 Ram und liegt so bei 18W TDP. Nicht schlecht! Das andere Board ist das ASROCK C70M1. Es hat den C70 Prozessor von AMD verbaut, welcher vergleichbar it dem E350M1 ist. Auch die restlichen Spezifikationen sind vergleichbar. Ich habe mich für das letztere Board entschieden da es nur die Hälfte an Energie benötigt und mit 9 W TDP auskommt. Dazu ist es auch noch einige Euros günstiger.

Bei Arbeitsspeicher reichen 4 GB aus, da künftig kein ZFS eingesetzt wird. Ich habe eigentlich schon immer Corsair verbaut, deswegen fiel die Wahl auf 2 mal 2GB Riegel DDR3 welche mit 1333MHz getaktet sind.

Einen alten Netzwerkspeicher den ich mit dem hier Vorgestellten System ablösen möchte läuft seit Jahren stabil von einem USB Stick. Um den Stick zu schonen, wird nach dem Boot eine RAM Disk eingerichtet und viel benutzte Verzeichnisse in der Ramdisk gehalten. Bisher habe ich recht gute Erfahrungen gesammelt, Stromausfälle hat das SAN gut überstanden und einen bisher hatte ich noch keine Probleme mit dem Stick. Ich habe mich für Sandisk's Cruzer Ultra entschieden damit das Teil nicht so weit aus dem Gehäuse schaut.

Den geringen Strombedarf beziehe ich aus einem Be Quiet Netzteil. Mit dem Hersteller habe ich bisher keine Probleme gehabt. Man kann Gut und Günstig gemeinsam haben. Ich habe mich  für ein 300 Watt Netzteil entschieden, welches selbst bei Volllast extrem überdimensioniert ist. Bei der Evaluierung der Mainboards hatte ich zwischendurch ein Asrock mit Intel Celeron angeschaut welchen an einem Notebooknetzteil läuft. Das ist natürlich auch genial, da eine Menge Platz im Gehäuse bleibt. Aber naja... Das Mainboard mit Notebooknetzteil ist halt doppelt so teuer und damit raus. Und Be Quiet ist die Wahl.

Schlussendlich wollen wir die ganzen Komponenten zusammen in ein Gehäuse stecken. Ich habe mich für das Cooler Master  Elite 120 entschieden da die technischen Spezifikationen und der Preis dem Entsprechen was ich suche. Ästhetisch… darüber lässt sich streiten. Da das Ding im Keller seinen Dienst verrichten wird, werde ich es aber nicht so häufig zu sehen bekommen.

Zusammen aufgelistet und bei Amazon geklickt liegt der Warenkorb bei 188,66 und damit unter der Vorgabe von 200€. Ich habe alle Produkte unten aufgeführt und zu Amazon verlinkt.

KategorieProdukt*Preis**
BoardASRock C70M151,33 €
RAMCorsair 4GB (2x2GB) DDR3 1333 MHz47,18 €
FlashSanDisk Cruzer Ultra Fit 16GB USB 3.09,99 €
GehäuseCooler Master Elite 120 Advanced44,29 €
NetzteilBe quiet! BN140 System Power 7 Stromversorgung35,87 €
Summe188,66 €



Ein wesentlicher Aspekt für ein NAS wurde bisher noch nicht angeführt! Festplatten! Da in dem NAS Gehäuse 3 Festplatten laufen können und 4 Anschlüsse auf dem Board sind, habe ich beschlossen die alten Platten aus dem NAS welches ich ersetzen möchte weiter zu verwenden.  Wer sich neue Platten kaufen möchte findet diese in jeglicher Größe. Derzeit wird viel auf NAS Platten von WD geschworen. Diese als RED Serie bezeichneten Platten findet man in Größen von 1,2,3,4,5 und 6 TB in dem NAS mit Raid 5 kann man somit je nach Platten einen Speicher von 2 bis 12 TB für das heimische Netz bereitstellen.

Wie der NAS Server zusammengebaut wird und welche Software zum Einsatz kommt und die Konfigurationen wird in den kommenden Tagen ausführlich beschrieben.

Mehr Informationen zu der Serie (welche sich noch im Aufbau befindet:)



Samstag, 21. Februar 2015

Raspbian auf Jessie upgraden

[Post erstellt am 21.02.2015]
Bei Debian steht ein Versionswechsel in Haus. In Naher Zukunft wird die aktuelle Version "Wheezy" durch "Jessie" ersetzt. Raspbian, als speziell auf den Raspberry zugeschnittene Version von Debian wird diese Aktualisierung auch erfolgen.
In diesem Artikel möchte ich beschreiben wie der Umstieg von dem derzeit als Stable geltenden Wheezy auf die „Testing“ Version Jessie erfolgt. Das der Stabile Betrieb des Raspberrys nicht garantiert werden kann wird in vielen Foren ausführlich erörtert. Ich möchte darauf hier nicht weiter eingehen :-)
Okay bevor es losgeht, sollte sichergestellt werden das alle wichtigen Daten gebackupt wurden... oder am besten das ganze Image von der SD Karte einmal auf einen anderen Rechner sichern.

Anschliessend schauen wir welche version von Raspbian auf unserem Raspberry läuft:

sudo lsb_release -a

Die Ausgabe ist so wie erwartet:

No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.6 (wheezy)
Release:        7.6
Codename:       wheezy


Das Upgrade von Wheezy auf Jessie ist bei mir problemfrei durchgelaufen. Als erstes müssen die Paketlisten auf das Jessie umgestellt werden:

sudo nano /etc/apt/sources.list

Im Normalfall ist dort nur eine Zeile anzupassen:

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

sollten weitere Zeilen einkommentiert sein, welche auf raspbian.org verweisen, sollten diese auch von Wheezy auf Jessie geändert werden:

deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ jessie main contrib non-free rpi

Alle Sourcen welche nicht auf raspbian.org zeigen müssen geprüft individuell werden. Da ich eine neue Wheezy Installation verwende habe ich noch keine fremden Sourcen.
Anschließend werden die angepassten Paketlisten neu eingelesen und das System aktualisiert.

sudo apt-get update && sudo apt-get dist-upgrade

Während des upgrade Prozesses werden einige Abfragen zur Konfiguration von Jessie gemacht. Wie lange das Upgrade dauert kann ich nicht sagen, da ich nicht regelmäßig auf die Shell geschaut habe und so das Dist-Upgrade bei Nachfragen auf mich warten musste.Insgesamt hat das wohl ungefähr zwei Stunden gedauer, ich habe in der Zeit aber andere Dinge getan und nur ab und an mal auf den Putty Screen geschaut.

Sobald das Dist-Upgrade durchgelaufen ist wird der Raspberry rebootet und geprüft ob alle Dienste wie geplant gestartet wurden.

Es ist noch zu empfehlen, nach dem Upgrade die nichtmehr benötigten werden:

sudo apt-get autoremove
sudo apt-get autoclean 

Da alles sauber läuft noch der letzte Beweis, das der Raspberry mit Jessie  läuft:

sudo lsb_release -a

und... siehe da:

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie

Sobald ich eine Aussage zur Stabilität und zur Performance machen kann werde ich das hier berichten.


Samstag, 14. Februar 2015

Lighttpd aus Rasbian für die Verwendung von OwnCloud 8 patchen

Der Raspberry Pi 2 B+ hat jetzt ausreichend Leistung um auch etwas anspruchvollere Aufgaben zu übernehmen. Der Einsatz als Owncloud-Server ist eine davon. Nur eine Woche nach der Vorstellung der Raspberry Pi2 wurde auch OwnCloud 8 veröffentlicht. Das zwängt sich einem als kleines Nebenprojekt auf :)

Für die Verwendung von Owncloud 8 in Kombination wird Lighttpd auf einem aktuellen Rasbian Wheezy stehen wir vor einer kleinen aber lösbaren Herausforderung. Owncloud 8 benötigt die  HTTP Patch Methode, welche in Lighttpd erst in Version 1.4.32 eingeführt wurde. Das Standard Rasbian Whezey setzt verwendet die Lighttpd Version 1.4.31.

Um den Webserver mit dem Patch auszustatten sind einige Vorbereitungen notwendig. Zuerst werden die Packages Quilt, patch und Devscripts installiert.  dies Erfolgt mit dem Befehl:

apt-get install quilt patch devscripts

Anschließend werden für den Lighttpd alle Build-Abhängigkeiten installiert, das heißt alle Pakete, welche für ein eigenen Build notwendig sind.

apt-get build-dep lighttpd

Wenn alle Abhängigkeiten auf dem installiert sind werden die Sourcen von Lighttpd geladen.

apt-get source lighttpd


Jetzt wird noch der Patch benötigt. Dazu wird ein Verzeichnis erstellt und der Patch dort gespeichert.

mkdir lighttpd-1.4.31
cd  lighttpd-1.4.31
wget http://redmine.lighttpd.net/attachments/download/1370/patch.patch

Wenn der Patch auf der SD Karte ist, teilen wir Quilt mit, an welchen Platz der Patch  abgelegt werden soll. Dies erfolgt mit :

export QUILT_PATCHES=debian/patches

Mit dem Befehl
Quilt new http-patch.patch

Wird ein neuer Patch erzeugt. Anschließend wird Quilt angewiesen, die Änderungen, welche durch uns vorgenommen werden zu überwachen. Mit dem Befehl

patch –p1 –i  /verzeichnis/zum/Donwload/patch.patch

wird der Patch des Webservers durchgeführt.  Dabei sollte der Pfad zum heruntergeladenen Patch vollständig angegeben werden. Der Patch wird abgeschlossen, in die Informationen von  Quilt aktualisiert werden.

Quilt refresh

Um zu verhindern das apt-get upgrade wieder die Version ohne Patch einspielt wird die Paktetversion angepasst bzw. ein neuer Changelog Eintrag erzeugt.
Dies erfolgt mit dem Befehl:

dch –i

wen man mag kann man hier noch Informationen zum Patch angeben.
Anschließend wird das Debian Paket erzeugt :

debuild -us -uc

Dieses sollte sich im Verzeichnis über unserem Patch befinden

ls –df ../*

sollte jetzt eine Datei lighttpd_1.4.31.dep  oder ähnlich enthalten.
Da wir alle Abhängigkeiten für lighttpd schon installiert haben sollte die Installation des gepatchten Paketes mit

Dpkg –i /Pfad/zum/Paket/lighttpd.deb

problemfrei durchlaufen.

Fertig! Der gepatchte Paket ist installiert und wir können mit

service lighttpd restart

neu starten. Von einem Browser ist der lighttpd nun unter der IP Adresse oder des Domainnames des Raspberry erreichbar.

Wenn dir der Post weitergeholfen hat, oder du Verbesserungsvorschläge hast, würde ich mich über einen Kommentar sehr freuen.

Freitag, 6. Februar 2015

Raspberry Pi2: Alte SD Karten im Raspberry Pi2 nutzen

Der neue Raspberry bietet mehr Leistung. Dies kommt durch einen anderen, moderneren ARM Prozessor. Das führt dazu das alte Versionen des Betriebssystems (hier im Beispiel Raspbian Wheezy) nicht im neuen Raspberry läuft. Es ist jedoch möglich eine SD Karte mit der Installation der geliebten Software und deren Konfiguration für den neuen Pi2 lauffähig zu machen.

Im einfachsten Fall soll dazu eine Micro SD Karte aus einem Raspberry Model A+ oder B+ im Pi 2 eingesetzt werden. Hier reicht ein Upgrade von Raspbian.

Dazu führt man im ersten Schritt ein Backup der SD Karte an. Wird dafür ein Windows Rechner verwendet, wird die Micro SD Karte in den Kartenleser eingeführt und mit „Win32 Diskimager“ mit Read ein Imagefile geschrieben. Das Image kann noch gezipt und archiviert werden.
Anschließend wird die Micro SD Karte wieder im (alten) Raspberry gesteckt und der Pi gestartet. Nach dem man sich am Raspberry angemeldet hat, werden die folgenden Befehle zum Upgrade von Raspbian ausgeführt:

sudo apt-get update
sudo apt-get dist-upgrade
suod apt-get clean
sudo apt-get autoremove
sudo –apt-get install rpi-update
sudo rpi-update

Anschließend wird der alte Raspberry herunter gefahren.

sudo shutdown –h now

und die Micro-SD Karte wird in den Raspberry Pi 2 gesteckt und dieser gestartet. Alle Prozesse und alle Services sollten im neuen Pi so laufen wie im Vorgänger … nur halt schneller.
Wenn eine normale SD Karte aus einem Raspberry Model A (ohne Plus) oder Model B (ohne Plus) muss von der SD Karte ein Image gezogen werden und auf eine Micro SD Karte übertragen werden. Zuerst werden die im Absatz zuvor beschriebenen Schritte durchgeführt und Raspbian auf den aktuellen Stand gebracht. Ist der Speicherplatz auf der künftig verwendeten MicroSD Karte größer als auf der alten SD Karte, kann von der Alten Karte erneut ein Image gezogen werden. Unter Windows kommt dazu wieder der  Win32 Disk Imager zum Einsatz. Anschließend wird die neue Micro SD Karte in den Kartenleser gesteckt und das gerade erstellte Image auf die Karte geschrieben. Diese kommt jetzt in den Pi2 welcher dann ohne Probleme starten wird.

Mittwoch, 4. Februar 2015

Unboxing: Der neue Raspberry PI 2

Direkt nach dem am 2. Februar 2015 die Meldung über den neuen Raspberry Pi 2 Model B veröffentlicht wurde habe ich mir einen bestellt. Für meine Bastelprojekte ist etwas mehr Leistung gewünscht.

Der neue Raspberry kommt mit einem ARM Cortex A7 Prozessor und ist mit 900MHz getaktet. Der Chip ist das Model BMC2836 von Broadcom und kommt mit 1GB Speicher. Die restlichen Spezifikationen sind analog zum Raspberry Pi B+. Mehr Informationen gibt es in der Wikipedia.
Ein wichtiger Punkt ist jedoch zu beachten: Für die erste Generation ist eine Stromversorgung mit ca 700mAh als ausreichend. Der neue benötigt etwas mehr. In den Sezifikationen sind 1800mAh genannt. Mit einem guten Netzteil sind diese Ströme eigentlich kein Problem. Ich verwende für meinen Pi an den Belkin IPad Charger F8J040 gehängt da der mit 2400mAh ausreichend Power für die neue Generation des Raspberry hat. Die Gehäuse könnt ihr vom Raspberry Pi B+ verwenden, diese sind im Wesentlichen kompatibel. Ich habe meinen in dem Tek-Berry B+ Gehäuse von Teko, aber ich habe mir aber ein neues Gehäuse von OneNine Design bestellt. Der Vorteil dieses Gehäuses sind die Kabel Outlets für die GPIO Ports.

Mit der Nachricht, über den neuen Pi2 wurde auch eine Kooperation mit Microsoft bekannt gegeben. Microsoft bietet eine spezielle Version von Windows X für den Raspberry an. Dazu muss man sich auf der Website WindowsOnDevices.com als Windows Developer registrieren

Eine Sache noch! Das Betriebssystem sowohl Raspbian als auch Noob müssen neu gezogen werden. Die alten Releases für die erste Generation gehen nicht mehr. (aber die neuen Builds gehen auf dem alten Pis). Zusätzlich kann man jetzt auch noch Ubuntu einsetzen.

Heute war mein Gerät in der Post und ich mich direkt hingesetzt um das Schätzchen anzuwerfen. Ich habe dabei einige Bilder gemacht. 


Hier die Bilder vom Unboxing des Raspberry

Wie die früheren Modelle kommt der Pi im schlichten Karton. 
 Zusätzlich gibt es ein kleines Handbuch als Quickstarter Guide.

Der Pi ist natürlich in einer Antistatikfolie eingepackt.

Nachfolgend sind einige Bilder des Pi.


  


Montag, 5. Januar 2015

Shairport vom System entfernen

Mit folgenden einfachen Schritten kann ich eine Installation von Shairport wieder aus dem System entfernen.
  1. im ersten Schritt wird dafür gesorgt das Shairport nicht mehr beim Boot aufgerufen wird

    sudo update-rc.d -f shairport remove

  2. es wird das Boot oder Daemonskript aus dem Verzeichnis /etc/init.d gelöscht:

    sudo rm /etc/init.d/shairport

  3. normalerweise wird das Program in ein Unterverzeichnis von Shariport installiert. Mit dem folgenden Befehl kann danach gesucht werden:

    sudo find /usr -name 'shairport'

  4. Anschließend wird das Programm gelöscht

    sudo rm /Pfad/shairport

  5. nun kann man noch nach den Sourcen der Installation suchen
    sudo find / -name 'shairport'

  6. und diese entfernen.

    sudo rm -r /Pfad/shairport_source

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

Fertig alles Shairpoint ist vom Raspberry verschwunden.

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!