Montag, 26. August 2013

Webmin installieren und den Pi per Browser verwalten

Webmin bietet gerade für Anfänger wie mich, die sich mit der Konsole noch nicht so sehr vertraut sind einige Vorteile, da es zur Verwaltung des System eine übersichtliche grafische Oberfläche im Browser bereitstellt.

Die folgenden Schritte erklären, wie Webmin erfolgreich auf dem Pi installiert wird:

Als erstes müssen ein paar Pakete installiert werden, die den reibungslosen Betrieb von Webmin garantieren:

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Anschließend wird die neueste Version von Webmin heruntergeladen

sudo wget http://www.webmin.com/download/deb/webmin-current.deb

Die heruntergeladene .deb-Datei wird installiert mit dem Kommando

sudo dpkg --install webmin-current.deb

Sollte es eine Fehlermeldung geben die sagt, dass Webmin nicht ordentlich installiert wurde, bitte folgendes eingeben

sudo apt-get install -f

Wurde Webmin erfolgreich installiert, kann es über den Browser aufgerufen werden. Dazu einfach die IP-Adresse des Pi's in die Browserzeile tippen und den Port 10000 abfragen. Als benutzer wird root gewählt und das dazugehörige passwort eingegeben.

Beispiel: https://192.168.1.22:10000

Über Webmin lassen sich beispielsweise auf einfachem Weg Dateifreigaben einrichten oder Cron Jobs anlegen, die eine bestimmte Aufgabe in regelmäßigen vordefinierten Zeitintervallen ausführen. Die Konsole wird hierfür nicht benötigt, lediglich ein Browser.

Sonntag, 30. Juni 2013

Einen Alias anlegen / Einen eigenen Befehl erzeugen

Häufig verwendete Befehle, wie bspw. das Aktualisieren der Paketlisten mit anschließendem Upgrade der Pakete, können mit wenig Zeitzaufwand mittels einem Alias zu einem neuen Befehl zusammengeführt werden:

Nachdem die Anmeldung mit dem User pi erfolgte wird in das Home-Verzeichnis gewechselt:
cd ~
Anschließend muss die Datei, die die Aliase beinhaltet verändert werden:
sudo nano .bash_aliases
Hier wird folgendes eingetragen:
alias piupgrade="sudo apt-get update && sudo apt-get upgrade"
Dabei trennen die zwei && die zwei Kommandos voneinander, so dass diese hintereinander ausgeführt werden. Es muss nun lediglich in das Terminal der Befehl
piupgrade
getippt werden, um die Paketlisten zu aktualisieren und die Upgraderoutine zu starten.

Nachdem der Alias angelegt wurde musser vom System jedoch zuerst erkannt werden. Dafür wird dieses Kommando benötigt (Mit Dank an werfl für den Kommentar).
. .bash_aliases 

Mittwoch, 5. Juni 2013

A2DP Audiostreaming über NFC triggern

Diese Anleitung setzt vorraus, dass der 3. Teil meines vorangegangenen Tutorials durchexerziert wurde.

Für die folgende Anleitung habe ich mir bei Amazon ein paar NFC-Tags bestellt (link) und diese von innen an die Oberseite meines Gehäuses für den Raspberry Pi geklebt. Von dem NFC-Tag ist somit von außen nichts zu sehen.

NFC-Tag im Gehäuse

Als NFC-fähiges Gerät verwende ich mein Nexus 4, dass zuvor über Bluetooth mit dem Pi verbunden wurde und in die Liste der vertrauensvollen Geräte aufgenommen wurde (s. oben erwähnten Link zum 3. Teil Tutorial).

Diese Schritte müssen durchgeführt werden:
  1. Aus PlayStore die App NFC Aufgaben Launcher installieren.
  2. App öffnen und einen neuen Task anlegen über: + > NFC > Aktion hinzufügen > WLAN & Netzwerke > Bluetooth An/Aus. Anschließend das Handy auf den Pi legen, so dass Kontakt zum NFC-Tag aufgenommen werden kann. Auf den Button SPEICHERN & SCHREIBEN drücken. Die Aufgabe wird nun auf dem Tag gespeichert.
  3. Bluetooth auf dem Smartphone aktivieren und einen weiteren Task anlegen über: + > Bluetooth > Bei Verbindung mit: (Hier den Pi aus der Liste auswählen) > Aktion hinzufügen > Anwendungen & Shortcuts > Anwendung > Gewünschte Streaming App auswählen.
Wenn jetzt das Nexus 4 auf den Pi gelegt wird und der NFC-Tag gescannt wird, schaltet das Nexus 4 automatisch Bluetooth ein. Sobald Bluetooth eingeschaltet und das Smartphone mit dem Pi verbunden ist, öffnet der NFC Aufgaben Launcher die gewünschte Streaming App und man kann sofort Audio übertragen. Legt man das Smartphone erneut auf den Pi beendet sich Bluetooth automatisch. Hier noch ein Video zur Demonstration:



Tipps:
  • Analog zu Schritt 3 kann natürlich noch ein weiterer Task eingerichtet werden, der beim Beenden von Bluetooth die gewünschte Streaming App wieder schließt.
  • Die NFC Aufgaben Launcher App bietet noch viele weitere Funktionen. Ich habe mir bspw. ein NFC Tag so beschrieben, dass bei Auflage des Handys ein Wecker nach 7 Minuten klingelt und benutze dieses Tag als meine neue Eieruhr.

Samstag, 18. Mai 2013

Teil 3/3 - Musikstreaming per Bluetooth (A2DP) auf den Raspberry Pi

Musik streamen per Bluetooth (A2DP) auf den Raspberry Pi

Anmerkung vorneweg:
Audiostreaming per A2DP ist eine fummelige Angelegenheit. Viele Nutzer des Pi's berichten, die gleichen im Netz kursierenden Anleitungen befolgt zu haben ohne, einheitlichen Erfolg. Mein Pi wollte zuerst auch keine Streams abspielen. Irgendwann ging es merkwürdigerweise. Die gleiche Konfiguration habe ich bei einem anderen Pi angewendet und dort funktioniert sie merkwürdigerweise nicht. Daher muss an dieser Stelle einfach ausprobiert werden, ob es funktioniert.

Um von vorne herein Fehler auszuschließen, muss festgestellt werden ob der verwendete Bluetooth-Dongle auch korrekt vom System erkannt wird. Dazu tippt man folgendes ins Terminal:
lsusb
Dieses Kommando listet alle angeschlossenen USB-Geräte auf. Hier sollte euer Bluetooth Stick auftauchen. Ist der von mir verwendete Bluetooth Stick von Hama verwendet worden wird er bspw. als Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) erkannt.

An erster stelle installieren wir die nötigen Pakete:
sudo apt-get install bluez blueman bluetooth bluez-utils pulseaudio-module-bluetooth python-gobject python-gobject-2
Damit unser Benutzer Pi Zugriff auf die Bluetoothdienste hat, muss er einer Gruppe namens lp zugeordnet werden.
sudo usermod -a -G lp pi
Bluetooth hat viele Einsatzmöglichkeiten. A2DP ist eine von ihnen und muss vor der Nutzung erst konfiguriert werden:
sudo nano /etc/bluetooth/audio.conf
Es öffnet sich der Texteditor. Oben befindet sich ein Abschnitt in dem [General] steht. Direkt in die freie Zeile darunter muss folgenes geschrieben werden:
Enable=Source,Sink,Media,Socket

Als nächstes muss der sogenannt Resample Algorythm configuriert werden. Folgende Datei im Texteditor öffnen...
sudo nano /etc/pulse/daemon.conf
und die Zeile suchen
resample-method = speex-float-3
und direkt dahinter einen Absatz erstellen und folgenden Inhalt hinzufügen:
resample-method = trivial
Nun muss noch die folgende Datei geändert werden:
sudo nano /etc/pulse/system.pa
Dort muss hinter die vorhandene Zeile
load-module module-udev-detect
der Zusatz tsched=0 geschrieben werden, so dass die Zeile wie folgt aussieht:
load-module module-udev-detect tsched=0
Damit ist auch schon das Gröbste geschafft. Was wir jetzt noch brauchen ist ein Skript, dass automatisch das Audiosignal des verbundenen Smartphones an den Pi leitet. Dazu müssen wir diese Datei öffnen...
sudo nano /etc/udev/rules.d/99-input.rules
... und folgendes reinschreiben:
SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="input[0-9]*", RUN+="/usr/lib/udev/bluetooth"
Im letzten Schritt müssen wir noch das Skript an sich erstellen. Dafür erstellen wir einen neuen Ordner:
sudo mkdir /usr/lib/udev
und wechseln direkt in das eben erstellte Verzeichnis:
cd /usr/lib/udev
Nun erstellen wir eine Datei mit dem Namen Bluetooth:
sudo nano bluetooth
Folgendes einfügen
#!/bin/sh
#!/bin/bash  
#change if you don't use default analog audio out.  
#THIS DIDN'T WORK FOR MY PI SO I ADDED A amixer COMMAND BELOW  
AUDIOSINK="alsa_output.platform-bcm2835_AUD0.0.analog-stereo"  
echo "Executing bluetooth script...|$ACTION|" >> /var/log/bluetooth_dev  
  
ACTION=$(expr "$ACTION" : "\([a-zA-Z]\+\).*")  
if [ "$ACTION" = "add" ]  
then  
  
# Turn off BT discover mode before connecting existing BT device to audio  
hciconfig hci0 noscan  
  
# set the audio output to the analog  
# COMMENT THIS LINE OUT IF YOU WANT TO OUTPUT AUDIO THROUGH HDMI  
amixer cset numid=3 1  
  
   for dev in $(find /sys/devices/virtual/input/ -name input*)
   do
      if [ -f "$dev/name" ]
      then
         mac=$(cat "$dev/name" | sed 's/:/_/g')
         bluez_dev=bluez_source.$mac
  
         sleep 1
  
         CONFIRM=`sudo -u pi pactl list short | grep $bluez_dev`
         if [ ! -z "$CONFIRM" ]
         then
            echo "Setting bluez_source to:  $bluez_dev" >> /var/log/bluetooth_dev
            echo pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev
            sudo -u pi pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev
         fi
      fi
   done
fi
  
if [ "$ACTION" = "remove" ]
then
# Turn on bluetooth discovery if device disconnects
sudo hciconfig hci0 piscan
fi

Nachdem die Datei gespeichert wurde machen wir die Datei bluetooth ausführbar:
sudo chmod 755 bluetooth
Dieses Skript verbindet lediglich Smartphones, die vom Pi als vertrauenswürdig eingestuft wurden. Dazu muss aber das Smartphone erst einmal den Pi finden. Standartmäßig ist die Sichtbarkeit des Bluetooth-Adapters aber deaktiviert. Mit folgendem Kommando wird der Pi für Bluetoothgeräte sichtbar:
sudo hciconfig hci0 piscan
Über die GUI kann nun am einfachsten das ersonnene Bluetoothdevice als vertrauenswürdiges Gerät gespeichert werden.
startx
Nun unter Einstellungen --> Bluetooth-Manager mit einem Rechtsklick in die Liste der vertrauensvollen Geräte aufnehmen.


Weiter zu Teil 1 des Tutorials in dem aufgezeigt wird, wie man Apple's Airplay auf dem Raspberry Pi installiert um Musik direkt aus iTunes oder iOs auf den Pi zu streamen oder zu Teil 3 in dem erklärt wird, wie man über Bluetooth Musik auf den Pi streamen kann.

Auch besteht die Möglichkeit den Vorgang über ein NFC-Tag zu automatisieren.

Teil 1/3 - Apple AirPlay auf dem Raspberry Pi

Apple AirPlay auf dem Raspberry Pi

Um Musik direkt vom Mac aus iTunes oder dem iOs-Device an eine Stereoanlage oder einen AppleTV zu senden, verwendet Apple den hauseigenen Streamingstandard AirPlay. Mit ein wenig Mühe kann man iTunes oder iOs jedoch vortäuschen ein waschechter AiPlay-Empfänger zu sein.

Zuerst müssen dafür die benötigten Pakete installiert werden:
sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils

Jetzt muss der zugehörige Source-Code von Github heruntergeladen werden:
sudo git clone https://github.com/albertz/shairport.git shairport

Anschließend wechseln wir in den Ordner, in denen die Dateien geladen wurden
cd shairport

und kompilieren die Dateien:
sudo make

Nun müssen diese noch installiert werden:
sudo make install

Anschließend müssen folgende Befehle hintereinander ausgeführt werden:
sudo cp shairport.init.sample /etc/init.d/shairport
cd /etc/init.d
sudo chmod a+x shairport
sudo update-rc.d shairport defaults

Shairport ist nun nahezu Installiert, wurde durch die Rechtevergabe ausführbar gemacht und ist als Systemservice verfügbar.

Den Namen des AirPlay-Empfängers kann man in der folgenden Datei festlegen:
sudo nano /etc/init.d/shairport
Hier muss etwas runtergescrollt werden und hinter das Wort PIDFILE der Zusatz "-a NAME" geschrieben werden, wobei NAME durch den gewünschten Namen ersetzt wird. In meinem Fall "AirPi". Die Datei sieht dann folgendermaßen aus:
NAME=ShairPort
DAEMON="/usr/local/bin/shairport.pl"
PIDFILE=/var/run/$NAME.pid
DAEMON_ARGS="-w $PIDFILE -a AirPi"

Es werden noch zwei weitere Dateien benötigt. Auch hier gilt wieder: Alle Befehle nach und nach eintippen:
wget http://www.forum-raspberrypi.de/mydownloads/downloads/libnet-sdp-perl_0.07-1_all.deb
wget http://www.forum-raspberrypi.de/mydownloads/downloads/shairport_0.05-1_armhf.deb
sudo dpkg -i libnet-sdp-perl_0.07-1_all.deb
sudo dpkg -i shairport_0.05-1_armhf.deb

Jetzt muss nur noch der Shairport-Service neugestartet werden
sudo service shairport restart

Das wars. Der Raspberry Pi ist nun ein AirPlay-Empfänger. Hinweis: In manchen Fällen wird der RaspberryPi nicht sofort von iTunes erkannt. Dann bitte folgendes ausführen:
sudo service shairport restart

UPDATE: Aus unbekanntem Grund, konnte der RasPi von heute auf morgen nicht mehr von iTunes als Lautsprecher gefunden werden. Abhilfe hat folgendes gebracht:
sudo apt-get install cpanminus

Weiter zu Teil 2 des Tutorials in dem ich erkläre, wie der Music Player Daemon installiert wird um lokal auf dem Pi gespeicherte Musik wiederzugeben oder zu Teil 3 in dem erklärt wird, wie man über Bluetooth Musik auf den Pi streamen kann.

Teil 2/3 - Music Player Daemon auf dem Raspberry Pi

MPD (Musicplayer Daemon), MPC und ncmpcpp

Der Music Player Daemon bietet die Möglichkeit lokal auf dem Pi abgelegte Musikdateien abzuspielen. Hierfür sind eine fülle an Apps für Smartphones vorhanden. Zur bedienung über die Kommandozeile empfehle ich das Paket ncmpcpp.

Die nötigen Pakete werden installiert:
sudo apt-get install mpd mpc ncmpcpp alsa-utils

Im ersten Schritt erstellen wir einen Ordner music im Home-Verzeichnis des Pi's:
cd ~
mkdir music
(Info: Das Tildezeichen (~) lässt sich auf dem Mac bei deutschem Tastaturlayout über die Tastenkombination ALT + N erzeugen.) Anschließend folgendes eingeben:
sudo modprobe snd_bmc2835
Nun muss MPD konfiguriert werden:
sudo nano /etc/mpd.conf 
Mit der Tastenkombination CTRL + V scrollt man im Text soweit hinunter bis die Zeile:
bind_to_adress
erscheint. Soll MPD nicht direkt vom Pi aus bedinet werden können muss direkt vor die Zeile eine # geschrieben werden (Auskommentieren.)Dies ist notwendig wenn man bspw. die Musik über das Smartphone oder das Terminal steuern will. Beim Eintrag
auto_update    "yes"
sollte ebenfalls die # entfernt werden. So wird die Musikbibliothek automatisch von MPD aktualisiert sobald neue Musik im ordner abgelegt wird. Ein paar Zeilen weiter muss bei der Zeile
#follow_outside_symlinks   "yes"
die Raute (#) entfernt werden. Da ich nicht das Standartverzeichnis nutze in dem MPD normalerweise die Musikdateien erwartet, sondern den vorher erstellten Ordner music verwenden möchte. Weiter unten werden die Audio-Ausgänge definiert. Bei mir sieht das so aus:
audio_output {
        type            "alsa"
        name            "RaspberryPi"
        format          "44100:16:2"    # optional
        mixer_type      "software"
Mit CTRL + X und anschließender Bestätigung zum Speichern ist der Music Player Daemon soweit startklar. Da MPD über die vorhin geänderte Zeile follow_outside_symlinks bereits so konfiguriert ist, dass auch auf Musikverzeichnisse ausserhalb des Standartpfades zugegriffen werden kann, muss noch einen Verknüfung (Symlink) zu dem erstellten Ordner music im Standartpfad erstellt werden. Dazu wechselt man in den Standartpfad:
cd /var/lib/mpd/music
und erstellt über folgendes Kommando eine Verknüpfung auf den music-Ordner:
ln -s /home/pi/music
Die Standardpfade benötigen noch die notwendigen Berechtigungen, die den reibungslosen Betrieb von MPD garantieren:
sudo chmod g+w /var/lib/mpd/music/ /var/lib/mpd/playlists/
sudo chgrp audio /var/lib/mpd/music/ /var/lib/mpd/playlists/
Jetzt können Musikdateinen im MP3-, FLAC- und vielen anderen Formaten einfach in diesem Ordner abgelegt werden.

Im letzten Schritt muss MPD einmal neugestartet werden, damit alle Änderungen wirksam werden:
sudo service mpd restart


NCMPCPP

Über den Befehl
ncmpcpp
kann nun eine minimale Textbasierte Oberfläche zur Steuerung über die Kommandozeile aktiviert werden. Drück man die Taste 1 findet man alles nötige was zur Steuerung von ncmpcpp benötigt wird. Beendet wird ncmpcpp durch ein druck auf die Q-Taste.


Steuerung über Apps:
MPD lässt sich wunderbar über das Tablet/Samrtphone steuern.

Weiter zu Teil 1 des Tutorials in dem aufgezeigt wird, wie man Apple's Airplay auf dem Raspberry Pi installiert um Musik direkt aus iTunes oder iOs auf den Pi zu streamen oder zu Teil 3 in dem erklärt wird, wie man über Bluetooth Musik auf den Pi streamen kann. 

Dreiteiliges Tutorial: RaspberryPi als Radio und Streaming-Client

In diesem dreiteiligem Tutorial werde ich zeigen, wie man einen Raspberry Pi in ein erstklassiges Radio verwandeln kann. Jedoch kein herkömmliches UKW-Radio, sondern ein funktionales kleines Medienradio was sich nahtlos in die heimische digitale Infrastruktur ingeriert und Konnektivität für nahezu jedes Device und OS bietet.

Das Tutorial wird an dieser Stelle in drei Posts aufgeteilt. Nachdem diese befolgt wurden sollte der Pi folgendes bieten:
  • TEIL 1: Apple Airplay Streaming um Musik direkt aus iTunes auf den Raspberry Pi zu streamen. Ich benutze dafür ein Paket namens Shairport, was leicht zu konfigurieren ist und seinen Dienst mehr oder minder gut leistet.
  • TEIL 2: Music Player Daemon (MPD) um auf dem Raspi abgespeicherte Musik abzuspielen. MPD lässt sich wunderbar per Smartphone steuern und beherrscht neben der Wiedergabe lokaler Musikdateien auch die Wiedergabe von Streams, das Anlegen von Playlists, eine einfache Bedienung über das Terminal und noch vieles weitere.
  • TEIL 3: Musik-Streaming per Bluetooth A2DP-Protokoll um bspw. Musik von Android oder iOs auf das Gerät zu streamen. Der große Vorteil besteht darin, dass nahezu jedes Smartphone mit Bluetoothmodul von Haus aus dieses Protokoll spricht und somit ohne zusätzliche App Musik streamen kann. Zusätzlich kann der Pairing-Vorgang mittels eines NFC-Tags vereinfacht und automatisiert werden.
Bevor eine dieser Anleitungen befolgt wird, muss jedoch eingangs die Quelle angegeben werden, aus der der gestreamte Sound aus dem Pi kommen soll. Dies kann über HDMI oder Analog-Klinke erfolgen. Standardmäßig ist der Pi so eingestellt, dass er automatisch erkennt an welchem der beiden Anschlüsse ein entsprechender Stecker eingesetzt wurde. Probleme gibt es jedoch wenn man den Sound altmodisch über den 3,5mm-Klinkenport nutzen möchte aber gleichzeitig einen Monitor über HDMI angeschlossen hat. Dann bleibt der Pi stumm, da er denkt dass das Audiosignal über HDMI übertragen werden soll. In meinem Fall habe ich den Pi so eingestellt, dass alles Audio über den Klinkenport ausgegeben wird. Dies geht folgendermaßen:
sudo amixer cset numid=3 1
Dabei steht die letzte Zahl "1" für den Klinkenport. Soll der Sound über HDMI ausgegeben werden muss hier eine "2" stehen. Steht dort eine "0" ist der bereits erwähnte automatische Modus aktiviert.




Dienstag, 14. Mai 2013

SSH/Mosh verwenden und xRDP installieren

Da mein Pi ohne einen angeschlossenen Monitor und Tastatur betrieben wird, muss eine Möglichkeit geschaffen werden um mit einem weiteren Computer/Smartphone/Tablet etc. auf den Raspi zuzugreifen und ggf. die grafische Oberfläche an einem anderen Bildschirm darzustellen. Für ersteres wird in der Regel das verschlüsselte SSH-Protokoll verwendet. Wichtig hierfür ist, dass die IP-Adresse des Pi's im eigenen Netzwerk bekannt ist. Um eine statische, immer gleich bleibende IP zu erhalten, kann mein vorheriger Post  durchexerziert werden.


SSH

Um SSH verwenden zu können, benötigen wir entsprechende Software:
  • Windows: Putty
  • Mac: Kann bereits SSH über die Terminal-App
  • Linux: Kann bereits SSH über die Terminal-App
  • AndroidConnect Bot (ich empfehle jedoch diese Version von Irssi Connect Bot, da diese ein weiteres Protokoll namens Mosh beherrscht, das grundsätzlich wie SSH funktioniert aber ein paar Vorteile bietet auf die später kurz eingegangen wird.)
In die entsprechende Anwendung wird nun folgendes getippt:
ssh pi@IP-Adresse
Da zu diesem Zeitpunkt keine vorherige Verbindung zwischen dem benutzten Computerund dem Pi bestand wird gefragt, ob ein individueller Schlüssel ausgetauscht werden soll. Dies wird mit Yes bestätigt.


Mosh

Mosh funktioniert grundsätzlich genau wie SSH und verbindet sich auch über den gleichen Port (Standartmäßig 22). Genau wie bei SSH erstellt man über die Kommandozeile eine sichere Verbindung zum Pi her:
mosh pi@IP-Adresse

Vorher muss auf dem Raspberry Pi jedoch noch das entsprechende Paket installiert werden:
sudo apt-get install mosh

Der größte Vorteil von Mosh gegenüber SSH ist, dass beim Verlust der Verbindung zum Pi keine erneute Verbindung hergestellt werden muss. Mosh wartet einfach, bis die Daten wieder strömen. Ich habe meinen Pi am Internet und verwalte ihn des öfteren über mein Nexus 7 und dem oben angesprochenen Irssi Connect Bot. Da dort keine stetiges Handynetz vorhanden ist, ist SSH dort mühsam und nervraubend. Mosh hingegen hat immer eine Verbindung. Zusätzlcih kann Mosh auch beim Wechsel der Internetverbindung - bspw. von 3G auf W-Lan - die Verbindung aufrech erhalten.

Mit SSH und Mosh ist nun also die Möglichkeit gegeben den Pi über einen anderen Computer zu verwalten - jedoch ohne grafische Oberfläche. Alle nötigen Schritte zur Einrichtung eines entfernten Bildschirms werden im nachfolgenden Text beschrieben.



Entfernten Bildschirm einrichten / Remote Desktop

Die meisten Tutorials empfehlen die Benutzung eines VNC-Servers (bspw. TightVNC). Dieser muss jedoch manuell gestartet und beendet werden, was mir zu mühsam erschien. Daher habe ich folgende Alternative im Einsatz, die sich als sehr zuverlässig erwiesen hat. Zur Anwendung kommt das Paket xrdp das eine RDP-Verbindung herstellt. RDP startet sich automartisch, sobald die zugehörige Software auf dem Handy, PC, o.Ä. versucht einen Verbindung herzustellen und beendet sich automatisch sobald man sich über die GUI des Pi's auslaggt.

Das benötigte Paket wird auf dem Raspi installiert:
sudo apt-get install xrdp

Wie schon bei der verwendung von SSH benötigt man auch in diesem Fall entsprechende Software:

Auch hier gilt es, den Benutzernamen (pi), sowie das zugehörige Passwort und die IP-Adresse anzugeben. Nun habt ihr die grafische Oberfläsche des Raspberry Pi's direkt auf einem anderen Bildschirm. Dies ist äußerst praktisch, da einige Aktionen über die GUI deutlich schneller zu erledigen sind, als über die Kommandozeile.


Donnerstag, 2. Mai 2013

Statische IP-Adresse vergeben

Damit der Raspberry stets unter der selben Adresse im Netzwerk erreichbar ist und nicht nach jeder Neuverbindung eine neue IP-Adresse zugewiesen bekommt, sollte eine statische IP vergeben werden. Prinzipiell gibt es dafür zwei Wege:


Statisches DHCP direkt auf dem Pi einrichten und eine manuelle IP-Adresse vergeben

Wird unter anderem in diesem Video erläutert und funktioniert einwandfrei




Statische IP-Adresse über den Router zuweisen lassen

Diese Methode wird bei meinem Raspberry Pi angewandt. Dazu wird die MAC-Adresse des W-Lan-Dongles benötigt. Sollte zuvor meinen Post über die Erstkonfiguration des Pi's gelesen worden sein, dann wurde diese bereits notiert. Ist dies nicht der Fall geben wir in die Kommandozeile
ifconfig
ein und erhalten eine Auflistung in der ein Eintrag namens wlan0 vorhanden ist. Dahinter befindet sich ein Eintrag namens HWaddr der aus Buchstaben und Zahlenkombinationen besteht.
Nun muss in das Konfigurationsmenü des Routers gewechselt werden. Ich habe zur Zeit nur einen Scheißhaufen von Vodafone als Router der sich EasyBox 802 schimpft. Bei der EasyBox ist der nötige Menüpunkt unter LAN -> Statisches DHCP zu finden. Dort wird die gewünschte IP-Adresse und die zugehörige MAC-Adresse eingetragen. Bei den weit verbreiteten Fritz!Boxen funktioniert dies gleichermaßen.

Jetzt erhält der Pi auch bei einer Neuverbindung mit dem Netzwerk immer die selbe IP-Adresse. Ab jetzt beginnt der Spaß, denn nun ist unser Pi eindeutig im Netzwerk ansprechbar, was uns viele vorteile bringt, wie bspw. die Verwendung von SSH, Mosh, RDP aber auch Audiostreaming.

Software-Pakete und die Firmware des Raspberry Pi's aktuell halten

Paketlisten updaten und neuere Versionen installieren
Prinzipiell gibt es zwei Arten um die installierte Software des Raspberry Pi's aktuell zu halten. Entweder man sucht manuell nach neuen Versionen und installiert diese "von Hand" oder man greift auf das in Debian integrierte Paketverwaltungssystem Advaned Packaging Tool (APT) zurück. An dieser Stelle sei jedoch bereits erwähnt, dass nicht jedes Softwarepaket auch in diesem Tool hinterlegt ist und dass manchmal eine manuelle Installation unausweichlich ist. APT verfügt über sogenannte Repositories in denen Pfade zu Softwarepaketen hinterlegt sind. Mit dem folgenden Kommando werden die Paketlisten aktualisiert:
sudo apt-get update
An dieser Stelle erfolgen noch keine upgrades der installierten Pakete. Diese werden erst mit dem Kommando
sudo apt-get upgrade
ausgeführt. Es erscheint eine Auflistung an veralteten Paketen. Um diese zu Upgraden müssen wir mit der Y-Taste (für Yes) und einem anschließenden Druck auf die Entertaste den Upgradevorgang einleiten. Bei einer Erstinstallation kann dies einige Zeit in Anspruch nehmen.
Wie diese Schritte vereinfacht werden können, ist hier beschrieben: http://hackerbeere.blogspot.com/2013/06/einen-alias-anlegen-einen-eigenen.html
 
Firmware aktualisieren
Dies kann mit dem Tool rpi-update sehr einfach erledigt werden. Zur Installationdes Tools unter Raspbian:
sudo apt-get install rpi-update

Zur Installation mit einem anderem Betriebssystem gibt es diese Anleitung.

Um die Firmware nun zu aktualisieren geben wir das Kommando
sudo rpi-update
ein. Der Vorgang dauert ca. 3 Minuten. Anschließend ist ein Neustart mittels
sudo reboot
notwendig.

Raspberry Pi Erstkonfiguration, root und Verbindung mit W-Lan Netzwerk

Da es bereits tausende Anleitung zur Ersteinrichtung des Raspberry Pi's gibt, werde ich hier einen Schnelldurchlauf präsentieren:

Flashen des Betriebssystems auf die SD-Karte

Zum erstellen der SD-Karte mit dem Betriebssystem wird benötigt:
  1. Das aktuelle Debian-Image Raspian Wheezy. Das Image wird als .zip-Datei per Torrent oder Direct Download angeboten und muss anschließend entpackt werden.
  2. Ein Tool zum flashen des Images auf die SD-Karte. Für Windows nehmen wir "Win32 Disk Imager". Für den Mac kann "RPi-SD Card Builder" verwendet werden. Beide Tools besitzen eine grafische Oberfläche und sollten sich von alleine erklären. Es wird einfach die SD-Karte in den PC oder MAC geschoben, das Tool gestartet und anschließend das Image.img ausgewählt und der Pfad zum Laufwerk angegeben in dem die SD-Karte steckt. Flashen - fertig. 
Erstkonfiguration
Nun stecken wir den Wifi-Dongle und die SD-Karte in den Raspberry Pi. Die blanken Kontakte der Speicherkarte zeigen dabei nach oben. Falls das von mir empfohlene Gehäuse verwendet wird ist unbedingt darauf zu achten, dass dabei keine "Gewalt" angewendet wird. Die SD-Karte steht relativ weit aus dem Gehäuse heraus - das ist so gewollt.

Für die Erstinstallation empfehle ich den Pi direkt über HDMI an einen Monitor anzuschließen. Das hat den einfachen Grund, da der Pi zur Zeit zwar ein W-Lan-Modul angeschlossen hat, dieses aber noch nicht mit dem heimischen W-Lan verbunden ist. Des weiteren brauchen wir eine USB-Tastatur. Damit sind auch schon alle zwei USB-Steckplätze belegt. Wichtig ist, dass die beiden USB-Geräte und das HDMI-Kabel vor dem Booten - also bevor der Pi mit Strom versorgt wird, angeschlossen werden (ansonsten startet der Pi direkt neu).
Ist der Pi bestückt, können wir uns an die Erstkonfiguration wagen. Der Monitor wird auf HDMI-Eingang gestellt und der Micro-USB-Stecker an den Pi angeschlossen worauf dieser bootet. Beim ersten Bootvorgang kann dies etwas länger dauern. Anschließend werdet ihr von dem folgenden Bildschirm begrüßt:

Das Konfigurationsmenü

Sollte aus irgendeinem Grund beim booten etwas schief laufen und beim erneuten hochfahren dieses Menü nicht erscheinen, kann es in der Kommandozeile mit dem Befehl
sudo raspi-config
erneut aufgerufen werden. Vorerst sind nicht alle Einträge in diesem Menü von Bedeutung. Die wichtigsten seien im folgenden kurz erklärt:

expand_rootfs : Standartmäßig erkennt der Pi nur einen Bruchteil des verfügbaren Speicherplatzes auf der verwendeten SD Karte, daher ist dieses Kommando unbedingt auszuführen. Die Änderngen sind erst nach einem Neustart wirksam.

overscan : Wenn ihr euren Pi größtenteils mit einer grafischen Oberfläche benutzen wollt und es bei der Darstellung zu schwarzen Balken kommen, kann der Overscan aktiviert (enabled) werden. Anschließend könnt ihr über vier Zahlenwerte (Ränder oben, unten, links, rechts) Einfluss auf die Schwarzen Balken nehmen. Hier muss probiert werden. Eine allgemeingültige Lösung gibt es nicht.

configure-keyboard : Spuckt eine Reihe von Tastaturen aus. Meine war nicht dabei, daher erscheint weiter unten der Abschnitt "Deutsches Tastaturlayout einstellen" mit dem man sich behelfen kann.

change_pass : Hier kann das Standardpasswort für den User Pi geändert werden. Dies sollte unbedingt geschehen. Um möglichen Verwirrungen vorzubeugen wird an dieser Stelle noch kein neues Passwort eingeben, da wir noch kein deutsches Tastaturlayout besitzen und die Buchstaben Z und Y vertauscht sind. Alternativ kann auch ein neues Passwort eingegeben werden dass kein Z und Y enthält.

change_locale : Aufrufen und solange nach unten scrollen bis der Eintrag "de_DE.UTF-8 UTF-8" erscheint. Jetzt die Leertaste einmal drücken. Vor dem Eintrag sollte jetzt ein Sternchen (*) zu sehen sein. Hiermit wird der deutsche Zeichensatz geladen.

memory_split : Der Pi hat einen Chip auf dem Prozessor- (CPU) und Grafikeinheit (GPU) vorhanden sind. Diese Teilen sich insgesamt 512Mb Arbeitsspeicher. Hier kann nun festgelegt werden wieviel von den 512Mb der GPU zur Verfügung gestellt werden sollen. Ich habe hier 16Mb eingetragen, da ich den Pi hauptsächlich ohne grafische Oberfläche betreibe und dem Prozessor mehr Rechenleistungermögliche. Wenn ihr den Pi über eine Oberfläche nutzen wollte, sollte der Wert erhöht werden auf beispielsweise 128Mb.

Das war es vorerst. Im Menü wählen wir unten rechts den Punkt "Finish" aus. An dieser Stelle sollte der Pi neugestartet werden. Dazu geben wir
sudo reboot
in die Kommandozeile ein.

 
Deutsches Tastaturlayout einstellen

Nun stellen wir noch auf das deutsche Tastaturlayout um. Dazu müssen wir eine Datei mit dem Editor Nano bearbeiten. Dieser ist auf dem Pi bereits vorinstalliert. Wir tippen folgendes ein:
sudo nano /etc/default/keyboard
woraufhin folgendes erscheint:


Wichtig ist, dass ihr den Inhalt der Datei so ändert, wie es auf dem Bild angegeben ist - also hinter den Eintrag XKBLAYOUT die Buchstaben "de" schreibt. Anschließend drückt ihr STRG + X (beim Mac: CTRL + X) und bestätigt mit ENTER das Speichern. Nun noch einmal neustarten und ggf. über
sudo raspi-config
ein neues Passwort eingeben, denn nun ist der Buchstabe Y auch wirklich Y wie auf der Tastatur. Das gleiche gilt für den Buchstaben Z.


Rootpasswort:
Dem Raspberry Pi beigelegten Zettel kann man zwar ein passwort für den Benutzer Pi eintnehmen, jedoch fehlt die Angabe für das Rootpasswort. Dieses kann wie folgt fetgelegt werden. Terminal öffnen und folgendes eingeben:
sudo su
anschließend:
passwd
an dieser Stelle werdet ihr nach einem neuen Passwort gefragt. Nun habt ihr ein selbstgewähltes Passwort für den benutzer Root. Ein beliebiges einsetzen und bloß nicht vergessen.


Verbindung zum Heimnetzwerk über W-Lan

Wenn der Pi erneut hochgefahren ist und wir uns mit dem Usernamen "pi" und unserem neugewählten Passwort eingeloggt haben, können wir den Pi mit dem heimischen W-Lan verbinden. Das geht am unkompliziertesten über die grafische Oberfläche. Dazu wird in die Kommandozeile der befehl
startx
eingetipp.
Über das Startmenü unten links wählt ihr Internet -> wpa_gui aus. Es öffnet sich ein Fenster in dem ihr euren W-Lan-Adapter und euer Heimnetzwerk auswählen könnt. An dieser Stelle erscheint auch zugleich die MAC-Adresse eures W-Lan Sticks. Diese sollte notiert werden. Wir brauchen Sie später. Anschließend auf Connect klicken, Passwort eingeben und euer Pi verbindet sich mit dem Netzwerk. Nun können wir uns über die Schaltfläche unten rechts von der grafischen Oberfläche abmelden.
Da der Pi nun über eine Internetverbindung verfügt, können wie die vorinstallierten Softwarepakete und die Firmware auf den neuesten Stand bringen. Siehe dazu meinen Post: Software-Pakete und die Firmware des Raspberry Pi's aktuell halten




Raspberry Pi & Zubehör

Für sämtliche Anleitungen kommt folgendes zum Einsatz:
Sowohl der Bluetooth als auch der Wifi-Dongle funktionieren "out-of-the-box". Es werden keine Treiber benötigt.
Als Stromversorgung verwende ich ein altes USB-Netzteil, dass ursprünglich meinem Nexus S beilag. In vielen Foren wird dazu geraten ein USB-Hub mit eigener Stromversorgung zu verwenden, da der Raspberry Pi bei zu viel USB-Peripherie nicht genügend Output liefert. Bei den von mir verwendeten WiFi- und Bluetooth-Adaptern habe ich jedoch keine Probleme und verzichte daher auf ein HUB.

Solltet ihr auf andere Hardware zurückgreifen wollen, empfiehlt sich ein Blick in die Liste der unterstützten Peripherie unter eLinux.

Heimische Umgebung

Zum besseren Verständnis meiner Vorhaben erfolgt hier eine Geräteauflistung meines digitalen Hausstands. Alle genannten Devices - so zumindest der zukünftige Plan - werden mehr oder weniger mit dem Raspberry Pi kommunizieren: