Mes passions, le boulots, mes coups de gueule...




Raspberry Pi : DUMP1090 & FlightRadar24 : Surveiller l’espace aérien avec une clef DVB-T

Catégories : Geek, Informatique, Raspberry Pi · par 30 Jan 2015

FlightRadar-01

La plus part des avions civils sont équipés d’un système de surveillance ADS-B (Automatic Dependent Surveillance-Broadcast) permettant au contrôle aérien de connaître la position des appareils en temps réel avec plus de précision que les informations rapportées par le radar. En effet, c’est l’avion lui même qui va envoyer régulièrement sa position GPS aux stations sol et aux autres appareils équipés de l’ADS-B évoluant dans la zone.

La liaison ADS-B qui nous intéresse est appelée 1090ES (1090 MHz Extended Squitter – Une extension des transpondeurs radar mode S) et émet un signal non crypté à 1090 MHz. Celui-ci contient, entre autre, la latitude, la longitude, l’altitude, la vitesse, la vitesse verticale, le cap, le numéro du vol, le code transpondeur, …

« En Février 2012Antti Palosaari, développeur du noyau Linux, a découvert que certains tuners TV USB pouvaient être configurés pour envoyer le signal radio brut, non traité, directement à l’ordinateur pour être décodé par un logiciel. […] Palosaari s’est alors rendu compte qu’en exécutant un logiciel adéquat, presque tous les signaux radio pouvaient être reçus par ces tuners. Peu de temps après, le projet RTLDTS était né, permettant à ces tuners d’être utilisés sous Linux. » [Extrait de www.irrational.net]

Début 2013, Salvatore Sanfilippo (antirez), développe dump1090 et poste son projet sur GitHub. Dump1090 est, suivant la définition de son créateur, « un simple décodeur du Mode S utilisable avec un SDR« . Son projet repose sur le pilote de Palosaari et affiche la position des avions repérés sur une carte Google Maps (cfr. la photo d’illustration ci-dessus).

Afin de rassembler les données collectées par les « flightspotters« , des sites comme FlightRadar24 ou FlightAware on vu le jour.

Matériel nécessaire

Idéalement, un Tuner DVB-T USB basé sur le composant Realtek RTL2832U et utilisant un Tuner Elonics E4000 permettant de capter un spectre de fréquences allant de 50 à 2200 MHz.

FlightRadar-02

FlightRadar-03Une liste du matériel compatible est disponible sur le site d’OsmoSDR.

Vous trouverez facilement de nombreuses références de produits adéquats sur eBay ou sur AliExpress pour des prix inférieurs à 20€ (frais de port compris).

J’ai opté pour une clef vendue sur eBay à 8.18€ (port gratuit). La boîte comprend la clef, l’antenne et son support avec un câble de ~1m ainsi qu’une petite télécommande.

Installation

Vous trouverez de nombreux tutoriels expliquant comment compiler et installer dump1090 et le driver RTL-SDR pour la puce Realtek RTL2832U. Et aussi comment envoyer les données collectées vers FlightRadar24 ou FlightAware.

Mais nous allons voir la méthode la plus simple et la plus rapide : l’installation d’un package Debian dévelopé par FlightRadar24.

Celui-ci comprend le pilote pour la clef USB, dump1090 pour afficher une carte Google Maps dans le navigateur et un module pour alimenter le site FlightRadar24 avec les données que vous récolterez.

Cette installation est détaillée dans la documentation disponible en PDF sur FlightRadar24.

On commence par brancher la clef DVB-T USB sur un hub équipé d’une alimentation électrique propre car le port USB du Raspberry Pi ne pourra pas délivrer les 500mA nécessaires au bon fonctionnement du récepteur.

FlightRadar-04

Dans le terminal, nous allons commencer par effectuer les dernières mises à jour du système :

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

Puis, nous allons afficher la liste des périphériques USB connectés :

$ lsusb

Vous devriez obtenir une liste similaires à ceci :

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 001 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 006: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 009: ID 05ac:0221 Apple, Inc. Aluminum Keyboard (ISO)

Le recepteur DVB-T est bien reconnu (en rouge ci-dessus) !

Ensuite, on va vérifier quelle est la dernière version du packet Debian ? Pour cela, rdv avec votre navigateur sur : http://feed.flightradar24.com/raspberry-pi/

Sur la page, on trouve :

Latest Raspberry-Pi package:

fr24feed_1.0.11-3_armhf.deb - 2015-01-20

On note ne nom du fichier *.deb, puis, on se place sur le bureau du Raspberry Pi où on va charger le package Debian.

$ cd ~/Desktop
$ wget http://feed.flightradar24.com/raspberry-pi/fr24feed_a.b.c-d_armhf.deb

Où « a.b.c-d » correspond à la version trouvée ici plus haut : « 1.0.11-3 »

Puis, on va installer le package Debian :

$ sudo dpkg -i fr24feed_a.b.c-d_armhf.deb

Puis, toujours dans votre navigateur internet, rdv à cette adresse pour obtenir la latitude et la longitude de l’endroit d’où votre Raspberry Pi « observera » le ciel : http://www.latlong.net/
Entrez votre adresse et vous obtiendrez la Latitude et la Longitude de votre position.

Puis, on lance la configuration de fr24feed. C’est le nom du service installé qui regroupe dump1090 et le feed (le petit programme qui va envoyer les données à FlightRadar24).

$ sudo fr24feed --signup

Là, vous devrez répondre à tout un tas de questions.

 [main][i]FR24 Feeder/Decoder [0x02117000]
 [main][i]Version: 1.0.11-3/generic
 [main][i]Built on 20150120-1045 (r:master-5bbce8d.git/Linux/armv6l)
 [main][i]Copyright 2008-2015 (c) Piotr Pawluczuk
 [main][i]Flightradar24 AB(http://flightradar24.com)
Welcome to the FR24 Decoder/Feeder sign up wizard!
Before you continue please make sure that:
 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's coordinates up to 1 decimal point
 3 - You have a working email address that will be used to contact you
To terminate - press Ctrl+C at any point
Step 1.1 - Enter your email address (username@domain.tld)
 $:monmail@domaine.tld
Step 1.2 - If you used to feed FR24 with ADS-B data before enter your sharing key.
 If you don't remember your sharing key, pelase use the retrival form:
 http://feed.flightradar24.com/forgotten_key.php
Otherwise leave this field empty and continue.
 $:
Step 2 - Enter Latitude  (DD.DDDD)
 $:50.868636
Step 3 - Enter Longitude (DD.DDDD)
 $:4.334883
Validating email/location information...OK
The closest airport found is ICAO:EBBR IATA:BRU near Brussels.
 Latitude: 50.901379
 Longitude: 4.484444
 Country: Belgium
Flightradar24 may, if needed, use your email address to contact you regarding your data feed.
Would you like to continue using these settings?
Enter your choice (yes/no)$:yes
Step 4.1 - Receiver selection:
 1 - DVBT Stick (USB)
 -----------------------------------------------------
 2 - SBS1, SBS1er or SBS3 (USB/Network)
 3 - ModeS Beast (USB/Network)
 4 - AVR Compatible (DVBT over network, etc)
 5 - microADSB (USB/Network)
Enter your receiver type (1-5)$:1
Step 4.2 - Please select dump1090 variant:
 1 - Original Salvatore Sanfilippo's variant
 2 - Malcolm Robb's fork
Enter your connection type (1-2)$:2
 Checking for dump1090...FOUND
Step 4.3 - Enter your additional dump1090 arguments or leave empty
 $:--net
Step 5.1 - Would you like to enable RAW data feed on port 30002 (yes/no)$:no
Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:no
Step 6A - Please select desired logfile mode:
 1 -  Disabled
 2 -  48 hour, 24h rotation
 3 -  72 hour, 24h rotation
 Select logfile mode (1-3)$:1
Step 6B - Please enter desired logfile path (/var/log):
 $:
Saving settings to /etc/fr24feed.ini...OK
Settings saved, please run "sudo service fr24feed restart" to use new configuration.

A la question 4.3, « --net » active le serveur web qui permet d’afficher la carte dans le navigateur.

Après avoir rempli le formulaire, vous devriez recevoir un mail (peut-être classé dans les spams) contenant votre clef.
Une fois reçue, on édite le fichier de configuration :

$ sudo nano /etc/fr24feed.ini

Dans le fichier on ajoute ou on modifie la ligne fr24key avec la clef reçue :

fr24key="0123456789ABCDEF"

Puis, on redémarre le service :

$ sudo service fr24feed restart

Vous devriez pouvoir accéder à la page web en tapant : « AdresseIPduRaspberryPi:8080 »

Ex: 192.168.0.250:8080

La page de configuration se trouvera à la même adresse, mais sur le port 8754.

Ex: 192.168.0.250:8754

Il peut-être utile d’ouvrir certains port dans le firewall.

Grâce à un petit logiciel d’écoute, j’ai pu remarquer que le « feed » avait besoin de s’authentifier sur un port source compris entre 49700 et 49900 et destination 8099.

FlightRadar-05

Nous allons configurer IPtable comme suit :

$ sudo nano /etc/init.d/firewall
# HTTP (8080 - FlightRadar24 - WebInterface)
iptables -A INPUT -s 192.168.0.1/24 -p tcp -m tcp --dport 8080 -j ACCEPT

# HTTP (8754 - FlightRadar24 - Settings)
iptables -A INPUT -s 192.168.0.1/24 -p tcp -m tcp --dport 8754 -j ACCEPT

# HTTP (8099 & 49700:49900 - FlightRadar24 - Feeder)
iptables -A OUTPUT -p tcp -m tcp --dport 8099 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 8099 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 49700:49900 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 49700:49900 -j ACCEPT

Et on relance le firewall :

$ /etc/init.d/firewall

Il peut-être utile de créer un proxypass dans Nginx pour rediriger le sous-domaine vers le port 8080 :

sudo nano /etc/nginx/sites-available/default
# FlightRadar24
# -------------

server {
        listen 80;
        server_name  sous-domaine.domaine.tld;

        location / {
            proxy_pass  http://localhost:8080;
        }
}

Et on redémarre Nginx :

sudo service nginx restart

Inscription

Ne reste plus qu’à s’inscrire sur FlightRadar24 pour obtenir un compte premium gratuit.

Rendez-vous sur https://www.flightradar24.com/premium/

FlightRadar-06

Cliquez sur « I feed data to Flightradar24 and want to go Premium for free » et enregistrez-vous avec la même adresse email que celle renseignée au cours de l’installation de fr24feed. Vous obtiendrez alors un compte premium qui se prolongera dans le temps tant que vous enverrez des données.

Démo

Mon site : http://flightradar.fanjoe.be


Edit 20 janvier 2018

Suite à la mise à jour de fr24feed, voici de quoi compléter cet article :

Installation

Pour installer fr24feed, il suffit d’exécuter le script disponible à cette adresse : https://www.flightradar24.com/share-your-data

sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"

Version 1.0.19-5 (2018-01-19)

Comme indiqué dans le changelog, voici les principaux changements et leurs conséquences :

### Added
– added support for systemd [debian ARM]
– dump1090-mutability is installed automatically on fr24feed start [debian ARM]
– enabled web-server map by dump1090-mutablity by default on ARM/Linux: http://DEVICE_IP/dump1090 [debian ARM]

### Removed
– removed support for init.d [debian ARM]
– dump1090-mr removed from the fr24feed package [debian ARM]

Dump1090 original est remplacé par le fork de mutability qui utilise le serveur web lighttpd.

Problèmes et solutions

Le port d’écoute de lighttpd (80 par défaut) peut entrer en conflit avec un serveur web existant.
On remplacera la ligne server.port = 80 par, par exemple, server.port = 8181 dans le fichier /etc/lighttpd/lighttpd.conf

Dans le fichier /etc/fr24feed.ini, on pourra définir le port d’écoute (en 8080 par exemple) en modifiant cette ligne comme ceci :
procargs="--net --net-http-port 8080"

On peut configurer l’affichage de certaines options (centre de la carte, position du radar, …), de dump1090 dans ce fichier :
/usr/share/dump1090-mutability/html/config.js

D’autres options dans ces fichiers :

/etc/default/dump1090-mutability

/etc/lighttpd/conf-enabled/89-dump1090.conf

/etc/lighttpd/conf-enabled/90-javascript-alias.conf

(2) comments

Pour installer DUMP1090 sur un Raspberry Pi3 et éventuellement apporter des modifications sur la portée et la réception des balises, vous pouvez suivre le tutoriel ci-contre : http://f4ffd.hamstation.eu/

    fanjoe
    7 ans ago · Répondre

    Bonjour,

    Merci pour le lien.
    Malheureusement, je vis dans un appartement situé au RDC d’un immeuble entouré d’autres bâtiments.
    Pas idéal pour une bonne réception.

    Didier.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.