ADS-B am Raspberry Pi: dump1090-mutability

Bereits seit einigen Jahren setze ich einen DVB-T Stick zum Empfang von ADS-B Daten an einem Raspberry Pi ein. Damals habe ich erklärt, wie man die Linux Software dump1090 dafür verwendet. Der seit dem von mir verwendete Fork auf GitHub von MalcolmRobb wird allerdings seit Jahren nicht mehr weiterentwickelt. Nach einiger Recherche bin ich auf den Fork dump1090-mutability gestoßen, welcher sich von MalcolmRobbs ableitet. “It adds new functionality and is designed to be built as a Debian/Raspbian package.”

Tatsächlich lässt sich dieses Tool sehr einfach installieren, was ich nachfolgend gerne erläutern möchte. Die erweiterten Funktionlitäten sind z.B: die Logging-Möglichkeiten, mit denen sich Statistiken erzeugen lassen. Hierüber wird es einen extra Blogpost geben.

Dieser Beitrag ist Teil einer Serie über ADS-B. Hier gibt es eine strukturierte Übersicht.

Installation

Ich habe diese Variante von dump1090 nicht auf dem bereits vorhandenen Raspberry Pi installiert, sondern gleich komplett neu formatiert um auch das aktuellste Raspbian am laufen zu haben. Die Installation von dump1090-mutability war dann tatsächlich sehr einfach indem nur die bereits auf GitHub gelisteten Befehle ausgeführt werden mussten: (Das jeweils aktuelle Downloadpaket findet man hier: https://github.com/mutability/dump1090/releases.)

Die Frage nach “Start dump1090 automatically …” wurde natürlich mit Yes beantwortet. Um darüberhinaus alle Optionen anpassen zu können habe ich den folgenden Befehl abgesetzt, welcher in einer Art Menü durch alle Parameter lotst:

Die meisten Optionen kann man auf den Default Einstellungen lassen. Ich habe lediglich folgende Sachen angepasst:

  • Latitude: <entsprechend der Position>
  • Longitude: <dito>
  • Port for internal webserver: 8080
  • Interface address to bind to (blank for all interfaces): <leer>

Sprich: Der Webserver soll auf Port 8080 lauschen und außerdem sollen Verbindungen von überall (also aus dem lokalen Netz bzw. dem Internet, insofern ein Port-Forwarding am Router eingerichtet ist) möglich sein. (Man kann auch ohne diesen dpkg-reconfigure Befehl manuell die Konfigurationsdatei anschauen oder editieren: sudo nano /etc/default/dump1090-mutability.)

Google ist dein Freund …

Leider lief das Programm zwar direkt, allerdings wurde nichts empfangen. Ein Blick in die Logdatei offenbarte folgendes:

Also irgendetwas mit den permissions bzw. den udev rules. Aha. Google hat da wie immer geholfen und mich zu diesem Blogpost gebracht. Folgendermaßen konnte ich demnach das Problem lösen. Per lsusb  habe ich die Device ID herausgefunden:

In meinem Fall also 0bda:2832. Danach diese Datei erstellt und das System neugestartet:

Nach dem Neustart sah das Log schon besser aus:

Außerdem konnten die eingehenden Verbindung jetzt auch Daten bekommen. Per netstat sieht man die geöffneten Ports sowie bereits vorhandene Verbindungen:

Installation des Webservers

Möchte man den Pi nicht nur als Empfänger für ADS-B Daten (als externe Station via Port 30005 o.ä.), sondern auch autark als Webserver betreiben, muss man noch den folgenden Befehl ausführen, welcher lighttpd installiert und entsprechend konfiguriert:

[UPDATE: Ich habe die Schose jetzt noch mal auf einem anderen Pi installiert. Dort lief der Webserver bereits ohne dass ich ihn mit den beiden folgenden Befehlen installiert hatte. Warum auch immer. Scheint wohl ein in dump1090-mutability eingebauter Server zu sein.] Unmittelbar danach kann man unter der IP Adresse des Pis auf Port 8080 (welchen ich oben so konfiguriert hatte) den Webserver sehen. Sehr cool. Sieht bei mir wie folgt aus:

Deutlich erhöhter Load-Average

Interessanter Fakt meines (in die Jahre gekommenen) Raspberry Pi 1 B bzgl. des Load-Average, also der Durchschnitts-Last ist wie folgt: Von lässigen 0.3 zu quasi überstrapazierten 1.2! Bei der reinen CPU stieg es von ca. 32 % zu 65 %, also ebenfalls deutlich. (Die Differenz lässt sich wie gewohnt durch Lese-/Schreibzugriffe auf die SD-Karte, IO und Co. erklären.)

Ich kann allerdings nicht genau sagen, ob das eher a) an dem FlightAware Pro Stick liegt, welcher den Empfangsbereich deutlich vergrößerte (siehe vorheriger Post) oder b) an dump1090-mutability, welches erweiterte Techniken bzgl. der Fehlererkennung usw. verwendet oder c) an dem Statisik Modul dump1090-tools, welches alle 5 Minuten eine ganze Reihe schöner rrdtool Grafiken erzeugt (siehe nachfolgendem Blogpost). In jedem Fall ist mein alter Pi mit 900 MHz (Übertaktung) bei einem Core jetzt tatsächlich mal überlastet. Egal. ;)

[UPDATE: Da mir bei meinem Pi 1 B nun auch noch die SD-Karte flöten gegangen ist, habe ich ihn kurzerhand durch einen aktuellen Pi 3 B ausgetauscht. Jetzt also vier Kerne bei 1,2 GHz. Sehr gut. Die Load Average liegt jetzt wieder bei gemächlichen 0.3.]

Ich freue mich mal wieder über dieses Projekt, welches ohne viele Fehler weiterhin fleißig interessante Daten empfängt. Viel Spaß euch ebenso!

Featured image: “Miniatur Wunderland: Flughafen – Lufthansa A380” by Kevin Hackert is licensed under CC BY-NC 2.0.

18 thoughts on “ADS-B am Raspberry Pi: dump1090-mutability

  1. jprochazka/adsb-receiver automatisiert alle genannten Schritte und verbesserte die graphischer Weboberfläche sogar noch. Leider können auch dort noch keine Informationen zur Flugroute und Fotos zum Flugzeug angezeigt werden. Hoffentlich tut sich da bald noch was in der Open-Source-Landschaft.

  2. Hallo,

    ich habe lighttpd und dump1090-mutability installiert wie beschrieben.

    Auf http://luftraum.südliches.nrw lässt sich das Ergebnis betrachten. Mein Problem ist, dass keine Flugzeuge angezeigt werden. Mein Konto auf Flightaware zeigt aber, dass Daten übermittelt werden.

    Könntet Ihr mir bitte helfen? Ich weiß nicht, was da nicht stimmt.

    1. Hey Florian,

      puh, ich fürchte ich kann dir da nicht so ad hoc weiterhelfen. Bist du sicher, dass Flightaware von dir Daten bekommt? Wenn ja, dann könnte es irgendwie an dem lokalen http Server liegen. Sorry, weiter weiß ich so ohne Details auch nicht.

      Johannes

  3. Hallo,
    ich bin noch recht neu mit dem Raspberry Pi unterwegs. Versuche gerade nach o.g. Anleitung auf einem Raspberry Pi 3 B mit Raspbian Stretch “dump1090-mutability” zu installieren.
    Das gelingt mir leider nicht weil vermutlich der Link zu “https://github.com/mutability/mutability-repo/releases/download/v0.1.1/mutability-repo_0.1.1_armhf.deb” nicht mehr funktioniert.
    Einen passenden Link konnte ich leider nicht finden.
    Gibt es für mich eine Lösung?

    Gruß Heinz

    1. Hallo Heinz,
      jeder hat mal klein angefangen. In der Tat geht der Link nicht mehr. Es wäre aber auch gar nicht die aktuelle Version gewesen.

      Bei GitHub kannst du dich relativ einfach durch die Profile klicken. Wenn du also auf die Startseite von dem Kerl “mutability” gehst (https://github.com/mutability/), dann kannst du sehen, welche Projekte er hat. Du brauchst das dump1090 Projekt (https://github.com/mutability/dump1090). Dort scrollst du runter zur Projektbeschreibung, in der sich ein Absatz “Manual installation” befindet. Dort findest du den Link zu den Paketen.

      Es *könnte* sein, dass sich die Installationsroutine etwas geändert hat. Evtl. braucht du noch vorher ein anderes “librtlsdr0” Paket. Zumindest redet er bei den Installationsanweisungen davon. Das müsstest du dann vorher ebenfalls per “sudo dpkg -i ” installieren.

      Viel Erfolg,
      Johannes

  4. Hallo und herzlichen Dank für die Infos.

    Ich konnte “librtlsdr0” und “dump1090-mutability (1.14)” mit Link auf 1.14 installieren wobei allerdings scheinbar Version 1.15 installiert wurde. Aber egal, es läuft erst mal.
    Mit einem auf einem Windows PC installierten “Virtual Radar Server” kann ich über Port 30005 auf den Raspberry Pi zugreifen und die Darstellung zeigt mir bis zu 100 Flugzeuge. Soweit sieht das also recht gut aus.

    Dann habe ich noch Punkt 8 aus der Anleitung “Dump1090 ADS-B Stats” installiert. Aber das läuft nur teilweise. Diagramme welche den Raspberry betreffen (CPU-Last, Memory, ect) funktionieren. Diagramme welche den DVB-T Stick betreffen bleiben leer.

    Ich habe dann noch etwas geforscht und bin an der zerschossenen Ausgabe hängen geblieben die oben in der Anleitung mit “cat /var/log/dump1090-mutability.log” generiert wurde. Die sieht bei mir genau so daneben aus. “lsusb” sagt mir aber dass ich einen RTL2838 und keinen RTL2832 habe. Beim Kauf stand aber eindeutig RTL2832 dabei. Wahrscheinlich funktioniert auch deshalb der Patch mit “sudo nano /etc/udev/rules.d/rtl-sdr.rules” nicht. Auch nicht wenn ich im Patch 2838 statt 2832 eintrage. Auch ein Windows PC sagt mir dass ein RTL2838 im Stick verbaut ist.

    Soweit diese kurze Rückmeldung.

    Wahrscheinlich mache ich die ganze Installation wieder “platt” und gehe es wieder von vorne an. Ich will einen Versuch mit dem [url=https://github.com/flightaware]FlightAware[/url] Paket machen und dann auch noch den “Virtual Radar Server” mit auf den Raspberry Pi packen. Vielleicht funktioniert diese Version dann auch sauber mit dem “Dump1090 ADS-B Stats” Paket.

    Viele Grüße
    Heinz

  5. Hallo,
    ich kann nicht über das I-Net über Port 8080 auf die grafische Webseite zugreifen.
    lighttpd ist installiert und entsprechend konfiguriert.
    Können Sie mir bitte helfen?

    Übrigens, ein klasse Blog den ich gerne lese

    1. Hallo Michael,

      der Zugriff innerhalb deines Netzwerks zu Hause funktioniert? Also du siehst Flugzeuge? Das ist schon mal gut.

      An dieser Stelle endet dann tatsächlich dieser Blogpost hier. Du brauchst dafür nun einen DynDNS-Account (o.ä.) sowie ein Port-Forwarding auf deinem Router zu Hause. Beides kannst du relativ einfach Googeln, da es viele Anleitungen hierfür gibt. Viel Erfolg!

      Johannes

  6. Hallo Johannes,

    ich hab es versucht nachzubauen, aber irgendwie ist der Wurm drin.

    pi@halva:~ $ lsusb
    Bus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
    Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
    Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Der Cat sagt dann:
    pi@halva:~ $ cat /var/log/dump1090-mutability.log
    Mon Jun 4 17:32:31 2018 CEST dump1090-mutability v1.14 starting up.
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001 (currently selected)
    Detached kernel driver
    Found Rafael Micro R820T tuner
    Max available gain is: 49.60 dB
    Setting gain to: 49.60 dB
    Gain reported by device: 49.60 dB
    Error opening the listening port 30002 (Raw TCP output): bind: Cannot assign requested address

    Hast du eine Idee, was schief gelaufen sein kann? Oder hab ich nur Tomaten auf den Augen?

    Viele Grüße

    Elmar

  7. Hallo Johannes,

    es war mein Fehler. Ne Nacht schlafen, hat mich zu der Erkenntnis gebracht, dass ein “sudo /etc/init.d/dump1090-mutability force-reload” Abhilfe schaffen könnte.

    Irgendwie hatte er die aktualisierte Konfig-Datei noch nicht geschluckt.

    Viele Grüße

    Elmar

  8. Hallo Johannes,

    super Projekt!
    Ich habe seit einer knappen Woche auf meinem Raspberry Pi3 ein Pi24-Image von Flightradar24 mit dem FR24-Feeder, der die Daten an Flightradar24 übermittelt.

    Kann ich auf dem gleichen Raspberry Pi nun auch den dump1090-mutability installieren und diesen dann von einem Win7-Rechner mit VRS anzapfen oder verträgt sich das nicht mit dem FR24-Feeder?

    Lg Daniel

    1. Hi Daniel,

      das kommt drauf an. Ich kenne den FR24-Feeder nicht. Vermutlich nimmt er das Dongle am USB Interface für sich in Anspruch. Du müsstest also gucken, ob du dump1090 so aufrufen kannst, dass du auf einen von FR24 geöffneten Port zugreifst?
      Alternativ genau andersherum: Schließe den FR24-Feeder, starte dump1090 (welches per Default ja einige Ports öffnet damit andere Services darauf zugreifen können) und schaue nach, mit welchen Optionen du FR24 aufrufen kannst, damit dieser nicht das USB Interface anzapft, sondern eine andere lokale Applikation, eben dump1090. Auf einem Windows PC hatte ich das vor Jahren genau so gemacht: https://blog.webernetz.net/10-e-flightradar24-stick-ads-b-via-dvb-t/
      Unter Linux musst du das natürlich anders bauen, aber das technische Prinzip ist das gleiche.

      Viel Erfolg! Und ansonsten weiter googeln! Es gibt bestimmt einige Anleitungen, die das gleichzeitig machen.

Leave a Reply

Your email address will not be published. Required fields are marked *