Installationsanleitung

Dies ist ein erster Wurf einer Installationsanleitung – nicht perfekt, aber zumindest eine Hilfe. Sie wird sukzessive verbessert.

Da ich selbst Linux-Laie bin, ist viel aus dem Netz zusammenkopiert – danke an die (oft anonymen) Wissensspender! Sollte etwas redundant oder auch nur ungeschickt sein, bin ich für eine Info dankbar.

GPSPi ist ein Python-Skript – nicht mehr und nicht weniger. (Python ist eine Programmiersprache, die sich in der Raspberry-Welt als Standard herauskristallisiert.) Es läuft also theoretisch in jeder Python-Umgebung. Da es aber den raspberry-spezifischen GPIO-Port und die linux-spezifische Implementierung des 1wire-Bus voraussetzt, müsstest Du es anpassen, bevor es auf einem Windows-PC laufen würde.

Ich habe mich bewusst dafür entschieden, als Standard-Basis für GPSPi das Betriebssystem RaspBMC zu wählen. Dieses System ist in erster Linie ein Mediaplayer, der Videos und Musik von der SD-Karte, aus dem Netzwerk oder von angeschlossenen USB-Geräten wiedergeben kann (auch bspw. Fernsehen vom DVB-T- oder DVB-S-Stick). Durch die Installation von GPSPi wird diese Eigenschaft nicht beeinträchtigt. Damit kann der Raspberry an Bord optimal weiter als Fernseher / Musik- / Videoplayer dienen. Allerdings ist die Konfiguration des RaspBMCs als Mediaplayer nicht Inhalt meiner Dokumentation, aber es gibt hunderte Quellen dazu im Internet. Inzwischen habe ich es auch mit NOOBS und Raspbian probiert, und das funktioniert natürlich auch – mit ein paar Extraaufgaben (s.u.).

Im Folgenden beschreibe ich sehr detailliert den Weg zum lauffähigen GPSPi, auch für Linux-Unerfahrene (wie ich einer bin). Für den Profi mag das etwas ermüdend sein – da musst Du jetzt leider durch.

Schritt 1a: Standard-RaspBMC installieren
http://www.raspbmc.com/

Das hier redundant zu erläutern, macht wenig Sinn. Letztendlich bedeutet es, dass Du an einem PC ein RaspBMC-Image auf die SD-Karte kopierst, nachdem Du sie entsprechend formatiert hast. Dazu gibt es Dutzende unterschiedliche Tools; ich verwende Win32 DiskImager (Open Source Software).

Schritt 1b: der erste Login
Ab hier ist es erforderlich, den RasPi mit einem Netzwerkkabel mit dem Router zu verbinden, denn eine Reihe der nächsten Schritte erfordern einen Internetzugang, weil eine Reihe von Softwarekomponenten nachinstalliert wird.

Für den ersten Login auf den Raspberry Pi gibt es zwei Möglichkeiten: entweder Du hast einen Monitor (HDMI oder Video-Out, wobei letzteres ein sehr schlechtes Bild ergibt), eine Tastatur und ggfs. eine Maus angeschlossen. Dann kannst Du drauf lostippen.

Mit langfristig weniger Aufwand ist es aber verbunden, wenn Du den RasPi nicht direkt, sondern über Deinen existierenden PC bedienst. Dazu kannst Du eine SHH-Session verwenden – das bedeutet (plump formuliert) nichts anderes, als dass Du den RasPi “fernsteuerst”. Dazu brauchst Du ein SSH-Tool (für Windows bspw. PuTTY) und die IP-Adresse Deines Raspberry Pi. Letztere verrät Dir ggfs. Dein Router (bspw. Fritzbox), sobald der Raspberry Pi läuft. Ansonsten ist 192.168.0.x (mit x irgendwas zwischen 2 und 10) immer ein vielversprechender Kandidat. Das funktioniert natürlich nur, wenn sowohl Dein PC als auch der RasPi im (gleichen) Netzwerk sind.

So oder so – logge Dich ein, mit Benutzername “pi” und Kennwort “raspberry”.

Jetzt folgt ein länglicher, teilweise fenstergestützter Dialog, der das Betriebssystem für Dich lokalisiert und ggfs. aktualisiert. Ist das abgeschlossen, gebe ein:

sudo apt-get dist-upgrade

“sudo” heißt “superuser do” und weist den RasPi (resp. jedes Linux-System) an, den darauf folgenden Befehl als Superuser auszuführen. Alle Einstellungen am System erfordern in der Regel, dass Du als Superuser agierst. Dieser Befehl hier aktualisiert das Betriebssystem, sofern erforderlich, und das kann sich gut einige Minuten hinziehen.

Dann gebe ein:

sudo apt-get update

Gleiche Logik wie eben – diesmal aktualisieren wir alle Tools, die es erfordern. Es kann sein, dass das ergebnislos verläuft, wenn Du ein sehr frisches Image verwendet hast.

Jetzt hast Du ein topaktuelles, “nacktes” RaspBMC-System vor Dir. Glückwunsch!

Schritt 2a: Python 3 installieren
Die Interpretersprache Python ist zwar standardmäßig installiert, aber möglicherweise nicht in dem Umfang, den wir benötigen. Daher gebe nacheinander folgende Befehle ein:

sudo apt-get install python-dev python3-dev
sudo apt-get install python-pip
sudo pip install rpi.gpio
sudo pip install pyserial

Das installiert die Entwicklungsumgebung für Python3 sowie den Modulmanager “PIP”, mit dem wir dann zwei Module, nämlich rpi.gpio für den RasPi-spezifischen GPIO (General Purpose Input/Output) und pyserial für eine serielle Schnittstelle für den GPS-Empfänger, installieren. Der erste Befehl kann lange dauern, der dritte und vierte sind ggfs. unnötig, aber schaden in keinem Fall.

Voila – die Basis ist geschaffen.

Schritt 2b: 1-Wire aktivieren
Diesen Schritt brauchst Du nur, wenn Du mit den Temperatursensoren arbeiten willst – was viel Sinn macht. Gebe ein:

sudo nano /etc/modules

Ergänze am Ende der Datei folgende zwei Zeilen:

w1-gpio
w1-therm

Und/oder – ich bin mir diesbezüglich noch nicht sicher – rufe eine weitere Konfigurationsdatei auf:

sudo nano /boot/config.txt

und ergänze folgende Zeile am Ende:

dtoverlay=w1-gpio

Du hast dem RasPi gerade erklärt, dass er zukünftig bei jedem Start die Module w1-gpio, das den 1-Wire-Bus per GPIO anbindet, und 1w-therm, das speziell die Temperatursensoren der DS18(B)20-Familie ausliest, laden soll. Das schadet übrigens auch dann nicht, wenn Du keinen 1-wire-Bus installiert hast.

Schritt  2c: GPS-Empfänger anschließen
Jetzt schließe den USB-GPS-Empfänger an einen der beiden USB-Ports an, wenn Du es noch nicht getan hast. Gebe folgendes ein:

cd /dev
ls

“ls” listet alle Schnittstellen auf, denn /dev ist das Verzeichnis, in dem alle angeschlossenen devices geführt werden. Du solltest in der möglicherweise langen Liste auch folgende finden: “ttyUSB0” – das ist Dein GPS-Empfänger. Gebe ein:

sudo stty 4800 -F /dev/ttyUSB0
cat /dev/ttyUSB0

Ersteres setzt die Kommunikationsparameter der Schnittstelle zum GPS-Empfänger auf 4.800 Baud – das ist der NMEA-Standard. Der zweite Befehl führt dazu, dass der GPS-Empfänger seine Datensätze auf den Bildschirm spuckt. Spätestens nach ein paar Sekunden “Eingewöhnung” müsstest Du pro Sekunde eine Handvoll wirrer Textzeilen sehen, die mit $GP… beginnen. Je nach Empfangslage des GPS-Empfängers kannst Du in den Zeilen, die mit “$GPRMC” beginnen, sogar Datum, Uhrzeit und Deinen geografischen Standort erkennen. Du kannst (und musst) das mit Strg-C abbrechen.

Glückwunsch – alle Voraussetzungen für GPSPi sind erfüllt! Dein GPS-Empfänger ist per virtueller serieller Schnittstelle über den USB-Port ansprechbar und liefert NMEA-Datensätze, aus denen Position, Geschwindigkeit, Fahrtrichtung, Datum und Uhrzeit hervorgehen.

Schritt 3a: GPSPi auf den RasPi bringen
Als nächstes muss das GPSPi-Skript auf den RasPi. Das einfachste ist, mit einem FTP-Client, bspw. FileZilla, alle Dateien aus dem Download-ZIP-Archiv per FTP (wieder als “pi” / “raspberry” anmelden) in das Verzeichnis /home/pi zu kopieren. Dazu gehört auch die Datei Adafruit_CharLCD.py, auf die ich zurückgreife, um das LC-Display anzusteuern.

Exkurs: FTP
Sollte der Zugriff per FTP scheitern, ist vielleicht kein FTP-Server installiert (das ist bspw. bei NOOBS der Fall, während RaspBMC den FTP-Server bereits an Bord hat). Das lässt sich aber beheben:

sudo apt-get install vsftpd

Dann muss noch der Login für lokale User ermöglicht werden, das machst Du so:

sudo nano /etc/vsftpd.conf

Dort dann in den Zeilen “#local_enable=YES” und “#write_enable=YES” jeweils das führende “#” löschen und die Datei speichern; damit werden die Zeile nicht mehr auskommentiert, sondern aktiv, und erlaubt lokalen Nutzern (und damit auch dem Nutzer “pi”), sich per FTP mit dem RasPi zu verbinden und Dateien hochzuladen. Danach muss der FTP-Server neu gestartet werden:

sudo /etc/init.d/vsftpd restart

Dann die Dateien auf den RasPi kopieren, bspw. in ein Unterverzeichnis “gpspi” in “/home/pi”.

Jetzt könntest Du das Skript schon von Hand anwerfen:

sudo python gpspi.py

Allerdings musst Du dazu irgendwann zwischendurch mal neu gestartet haben, da die 1-wire-Module ja noch nicht geladen sind – Du hast bisher nur verfügt, dass der RasPi es bei jedem zukünftigen Start tun soll. Mit “sudo restart” löst Du einen Neustart aus.

Da der manuelle Start aber bedeuten würde, dass Du immer Tastatur und Monitor mitschleppen müsstest, um das Skript zu starten, richten wir jetzt noch ein, dass es automatisch startet:

Schritt 3b: automatischen Start einrichten
Gebe folgendes ein:

cd /home/pi
sudo nano /home/pi/rungpspi.sh

Schreibe folgende zwei Zeilen in diese (neue, leere) Datei:

cd /home/pi
python gpspi.py

Das weist den RasPi an, bei Aufruf dieses Shell-Skripts (das ist sowas wie eine Batch-Datei zu DOS-Zeiten) in das Verzeichnis zu wechseln und das GPSPi-Skript zu starten. Speichere die Datei, und verlasse Nano. Gebe jetzt folgendes ein:

sudo chmod 777 rungpspi.sh
sudo nano /etc/rc.local

Der erste Befehl macht das eben erstellte Shell-Skript ausführbar. Mit dem zweiten öffnest Du die Datei, die dem RasPi sagt, was er beim Start so alles zu tun hat. Ergänze hier am Ende folgende Zeile:

/home/pi/rungpspi.sh

Der RaspPi wird also demnächst nach dem Start sofort das Shell-Skript ausführen und damit den GPSPi starten – was Du auf dem LC-Display sehen solltest.

Voila – that’s it. Mit den Standardwerten des Downloads läuft es jetzt schon mal – jetzt mag es sinnvoll und notwendig sein, dass Du die gpspi.conf an Deine individuelle Umgebung anpasst, insb. hinsichtlich der Adressen der DS18B20-Temperatursensoren.

Schritt 4a: die Kür – DVB-T
Schon mal erwähnt, schnell wieder verdrängt: ich habe RaspBMC als Basis gewählt, weil der Raspberry Pi damit parallel zum GPSPi ein vollwertiger Mediaplayer ist (und bleibt!). Wenn Du einen DVB-T-USB-Stick an den RasPi anschließt, wird daraus ein Fernseher! Allerdings musst Du dafür einen aktiven USB-Hub nutzen, weil der Strom, den der RasPi an den USB-Ports bereitstellt, nicht für GPS und DVB-T reicht. Schließe den Stick an und gebe folgendes ein:

sudo service tvheadend start

Das startet einen Service namens “TVHeadend”. Jetzt kannst Du per Browser einen Sendersuchlauf starten (nur einmalig erforderlich) und Kanäle zuordnen, und ab dann fernsehen (auf dem HDMI-Ausgang des RasPi). Du kannst sogar, wenn Du noch einen WLAN-Stick an den RasPi anschließt, mit den Smartphone oder dem Tablet via WLAN fernsehen, weil der RasPi das Videosignal streamt. Also irgendwo an Deck sitzen und auf dem Tablet Fußball gucken, während der RasPi drinnen schwitzt. Cool, oder? 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.