Was macht man mit einem alten Raspberry Pi und einem DVB-T-Stick, die einfach ungenutzt herumliegen? Richtig - man baut einen ADS-B-Empfaenger damit.

Dies ist ein ziemlich langer Beitrag, der erklaert, wie man einen Raspberry Pi von Grund auf mit allem Notwendigen einrichtet, um ADS-B-Daten zu empfangen und an FlightAware zu senden. Wir werden folgende Themen behandeln:

  • Was ist ADS-B?
  • Lass uns einkaufen gehen
  • Den Raspberry Pi einrichten
  • Die Flight Tracking Software installieren
  • Alles hochfahren
  • Ein bisschen Feintuning

Was ist ADS-B

Die meisten Flugzeuge senden Funksignale aus, um ihre Position, Hoehe, Geschwindigkeit und andere Daten zu melden. Wir koennen diese Signale empfangen, dekodieren und die Flugzeuge zusammen mit ihren Informationen auf einer Karte anzeigen.

Schau dir diesen Wikipedia-Eintrag fuer eine detaillierte Erklaerung an.

Lass uns einkaufen gehen

Wir brauchen ein paar guenstige Artikel, damit das funktioniert. Wenn du bereits einen laufenden Raspberry Pi hast, brauchst du im Grunde nur einen DVB-T-Stick, um loszulegen.

  • Raspberry Pi
  • DVB-T-Stick mit Antenne
  • SD-Karte
  • Netzteil
  • Optional: Bandfilter
  • Optional: ADS-B-Antenne

Einen Raspberry Pi einrichten

Zuerst lade das Betriebssystem-Image herunter. Fuer diese Anleitung waehlte ich die Lite-Version von Raspbian Jessie.

Folge diesen Anweisungen, um das Image zu installieren. Bei mir sah es so aus:

diskutil list
diskutil umountDisk /dev/disk2
sudo dd bs=1m if=~/Downloads/2016-03-18-raspbian-jessie-lite.img of=/dev/rdisk2
sudo diskutil eject /dev/rdisk2

Ich startete den Raspberry Pi mit angeschlossener Tastatur und Bildschirm, und ich steckte auch den DVB-T-Stick ein.

Aendere auch das Standardpasswort des Benutzers pi mit passwd.

Danach wurde die mit Raspbian Jessie gelieferte Software auf die neuesten Versionen aktualisiert:

sudo apt-get update
sudo apt-get upgrade

Da ich eine deutsche Tastatur habe, aenderte ich das Layout mit sudo raspi-config.

Pruefe, ob der DVB-T-Stick erkannt wird mit lsusb. Suche nach “wireless” oder “802.11”.

Dann richtete ich meinen WLAN-Adapter ein. Der Befehl ifconfig zeigte den Adapter als wlan0, also wurde er erkannt und musste nur noch konfiguriert werden.

Bearbeite die Konfigurationsdatei: sudo vi /etc/network/interfaces und fuege folgende Zeilen unter iface wlan0 hinzu:

wpa-ssid "thessid"
wpa-psk "thepasswd"

Starte das Netzwerk danach neu mit sudo service networking restart.

Die Flight Tracking Software installieren

Wir haben unseren Raspberry Pi am Laufen; jetzt ist es Zeit, die Flight Tracking Software namens PiAware einzurichten. Diese Software sendet die empfangenen Funksignale an FlightAware, damit sie jeder sehen kann. Vor der Installation der Software registriere dich zuerst und notiere deinen Benutzernamen und dein Passwort.

wget http://flightaware.com/adsb/piaware/files/dump1090_1.2-3_armhf.deb
sudo dpkg -i dump1090_1.2-3_armhf.deb
wget http://flightaware.com/adsb/piaware/files/piaware_2.1-5_armhf.deb
sudo dpkg -i piaware_2.1-5_armhf.deb
sudo apt-get install -fy
sudo piaware-config -autoUpdate 1 -manualUpdate 1
sudo piaware-config -user <yourusername> -password
sudo /etc/init.d/piaware restart

Nachdem ich das alles gemacht hatte, pruefte ich, ob alles in Ordnung war:

piaware-status

Anscheinend war nichts in Ordnung:

dump1090 is not running.
faup1090 is not running.
piaware is running.
no program appears to be listening for connections on port 30005.
faup1090 is NOT connected to port 30005.
piaware is connected to FlightAware.
got 'couldn't open socket: connection refused'
maybe dump1090 is NOT producing data on port 30005.

Dieser Beitrag hier zeigt den Grund, warum das passiert und wie man es loest.

Das Geraet wird bereits vom DVB-T-Treiber verwendet. Eine schnelle Loesung ist, den Treiber zu entladen:

sudo rmmod dvb_usb_rtl28xxu rtl2832

Das ist nicht permanent - nach dem Neustart des Raspberry Pi wird der Treiber wieder geladen. Um es permanent zu machen, fuege Folgendes zu einer Blacklist-Datei hinzu (zum Beispiel /etc/modprobe.d/blacklist-rtl.conf):

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

Alles hochfahren

Lass uns loslegen und alle Softwarekomponenten starten:

dump1090 --quiet --net &
sudo /etc/init.d/piaware restart

Schliesslich zeigt alles OK an:

dump1090 is running.
faup1090 is running.
piaware is running.
dump1090 is listening for connections on port 30005.
faup1090 is connected to port 30005.
piaware is connected to FlightAware.
dump1090 is producing data on port 30005.

Du kannst die Logdatei pruefen, um die aktuelle Aktivitaet zu sehen:

tailf /tmp/piaware.out

Pruefe auch deine Netzwerkports:

sudo netstat -tulpen

Es laeuft ein Webserver auf Port 8080. Oeffne deinen Browser zu http://<yourip>:8080 und geniesse!

Du kannst auch meine FlightAware Statistiken ansehen.

Ein bisschen Feintuning

Das Setup kann sicherlich verbessert werden durch:

  • Automatisches Starten von dump1090 und PiAware nach einem Raspberry Pi Neustart
  • Verwendung eines Bandpassfilters
  • Verwendung einer besseren ADS-B-Antenne und Platzierung auf dem Dach

Nach einer Weile wurden der Raspberry Pi und der DVB-T-Stick ziemlich warm. Ich ueberwache jetzt die Raspberry Pi Temperatur und sende sie an ThingSpeak. Dafuer habe ich einen Cron-Job wie folgt eingerichtet:

*/10 * * * * echo "field1=`vcgencmd measure_temp | grep -o '[0-9]*\.[0-9]*'`" | curl -d "api_key=<your-api-key>" -d @- https://api.thingspeak.com/update.json

Ich werde auch eine SMS erhalten, wenn die Temperatur einen bestimmten Schwellenwert erreicht.

Fertig fuer heute!