OGN-Receiver

Derzeit hat mich der Segelflug-Sport ganz in seinen Bann bezogen. Tatsächlich ist es jedoch nicht das klassische Fliegen, sondern das Themenfeld “Technik”. Neben meinem Arduino Segelflugsimulator beschäftige ich mich derzeit mit dem Open Glider Network (OGN) und entsprechenden DIY-Raspberry Geräten.

Wir haben bereits seit einigen Jahren auf dem Flugplatz Berliner Heide eine sogenannte OGN-Station installiert, jedoch habe ich mich nicht weiter damit beschäftigt. Durch die steigenden Abdeckung und auch die Integration in unsere Software Vereinsflieger.de habe ich mich dazu entschlossen selber eine Station einzurichten.

Bei der Installation (Ready-2-Use Image) auf einer SD-Karte und einem Raspberry, waren im wesentlichen alle Details geklärt und das Projekt nach 15 Minuten abgeschlossen. Jedoch gibt es ein paar weitere Aspekte, die mich beschäftigt haben und die ich hier gerne kurz ausführen möchte.

Gekaufte Hardware (Keine Affiliate-Programm):

Raspberry 3b Starter-Set, ca. 65,00€
Antennenkabel N-Stecker auf SMA, 5 Meter, ca. 12,00€
9db 868 MHz Antenne, ca. 96,00€
Filter and Amplifier 15 dB, ca. 32,00€ (geplant, noch nicht verbaut!)
FlightAware Pro Stick, ca. 30,00€

Überprüfung der Frequenzen

Nach der Installation wird der Raspberry am Netzwerk angeschlossen. Der weitere Zugriff erfolgt im wesentlichen über einen SSH Zugriff. Der User ist pi und das Passwort steht in der OGN-receiver.conf Datei (siehe SD-Karte). Über einen Scan kann die Antenne geprüft werden, damit die Empfangsleistung optimal eingestellt werden kann:

cd rtlsdr-ogn
./gsm_scan --ppm 0 --gain 20
Frequency = 920.000MHz..960.200MHz 2.000MHz step, 20 scans
Sampling rate    =    2000000Hz =    2.000MHz
0.250sec per scan
FFT: 1024 bins, 1953.1Hz/bin, 0.256ms/slide
Found Rafael Micro R820T tuner
Exact sample rate is: 2000000.052982 Hz
RTLSDR::Open(0,940100000,2000000) 
=> Generic RTL2832U,  940.100 MHz, 2.000 Msps
RTLSDR::Gain[29] =  +0.0  +0.9  +1.4  +2.7  +3.7  +7.7  +8.7 +12.5 +14.4 +15.7 +16.6 +19.7 +20.7 +22.9 +25.4 +28.0 +29.7 +32.8 +33.8 +36.4 +37.2 +38.6 +40.2 +42.1 +43.4 +43.9 +44.5 +48.0 +49.6 [dB]
Open(0, 940100000, 2000000) OK
Tuner crystal correction set to 0 ppm
Tuner gain set to 20.0 dB (device reports 20.0 dB)

921.400MHz:   +6.6dB:  +0.24  +0.28  +0.33  +0.24 [ppm]
921.600MHz:  +11.9dB:  +0.26  +0.26  +0.26  +0.33 [ppm]
922.200MHz:   +8.4dB:  +0.18  +0.19  +0.07  +0.16 [ppm]
922.800MHz:   +4.5dB:  +0.12  +0.30  +0.09  +0.05 [ppm]
923.000MHz:   +1.6dB:  +0.14  +0.17  -0.02  +0.10 [ppm]
924.200MHz:   +4.8dB:  +0.35  +0.32  +0.23  +0.30 [ppm]
924.800MHz:   +1.8dB:  +0.28  +0.23  +0.30  +0.01 [ppm]
925.400MHz:  +10.3dB:  +0.29  +0.22  +0.16  +0.10 [ppm]
925.600MHz:  +22.6dB:  +0.25  +0.27  +0.29  +0.26 [ppm]
926.400MHz:  +18.5dB:  +0.14  +0.15  +0.19  +0.13 [ppm]
926.600MHz:  +10.4dB:  +0.41  +0.13  +0.09  +0.21 [ppm]
926.800MHz:  +13.3dB:  +0.22  +0.24  +0.17  +0.20 [ppm]
927.600MHz:  +12.3dB:  +0.39  +0.01  +0.33  +0.27 [ppm]
928.000MHz:  +21.0dB:  +0.18  +0.21  +0.24  +0.27 [ppm]
928.400MHz:  +16.7dB:  -0.76  -0.78  -0.73  -0.74 [ppm]
928.600MHz:  +19.0dB:  -0.78  -0.77  -0.75  -0.79 [ppm]
929.400MHz:  +10.8dB:  -0.74  -0.69 [ppm]
930.000MHz:  +43.6dB:  -0.66  -0.68  -0.69  -0.68 [ppm]
930.400MHz:  +18.5dB:  +0.16  +0.09  +0.12  +0.17 [ppm]
931.400MHz:  +11.9dB:  +0.19  +0.25  +0.26  +0.14 [ppm]
931.800MHz:  +12.1dB:  +0.21  +0.30  +0.16  +0.20 [ppm]
932.000MHz:  +32.2dB:  +0.28  +0.27  +0.25  +0.28 [ppm]
932.200MHz:   +9.3dB:  +0.20  -0.07 [ppm]
932.400MHz:  +16.7dB:  +0.07  +0.10  +0.22  +0.16 [ppm]
932.800MHz:  +18.2dB:  +0.20  +0.19  +0.21  +0.16 [ppm]
934.600MHz:  +31.9dB:  +0.11  +0.09  +0.10  +0.13 [ppm]
935.200MHz:  +33.8dB:  +0.16  +0.16  +0.12  +0.17 [ppm]
935.400MHz:  +23.9dB:  +0.14  +0.16  +0.24  +0.22 [ppm]
935.800MHz:  +24.3dB:  +0.12  +0.15  -0.07  +0.15 [ppm]
936.200MHz:  +18.5dB:  -0.75  -0.89  -0.77  -0.92 [ppm]
937.400MHz:  +11.5dB:  -0.80  -0.79  -0.75  -0.81 [ppm]
943.800MHz:  +21.8dB:  +0.32  +0.22  +0.11  +0.25 [ppm]
944.600MHz:  +34.7dB:  +0.09  +0.07  +0.08  +0.13 [ppm]
944.800MHz:  +19.1dB:  +0.21  +0.02  +0.04 [ppm]
945.400MHz:   +9.6dB:  +0.03  -0.03  +0.02  +0.08 [ppm]
946.000MHz:  +15.1dB:  +0.19  +0.33  -0.28 [ppm]
946.600MHz:  +21.2dB:  -0.80  -0.74  -0.78  -0.92 [ppm]
947.000MHz:  +17.4dB:  -0.79  -0.83  -0.72  -0.80 [ppm]
947.400MHz:  +22.5dB:  -0.76  -0.74  -0.75  -0.75 [ppm]
947.800MHz:  +11.4dB:  -0.75  -0.66  -0.73  -0.77 [ppm]
948.200MHz:  +19.2dB:  +0.11  +0.08  +0.09  +0.09 [ppm]
948.400MHz:  +15.9dB:  -0.02  +0.17  +0.08  +0.15 [ppm]
948.600MHz:   +9.5dB:  +0.07  +0.14  +0.15  +0.27 [ppm]
948.800MHz:  +16.9dB:  +0.03  +0.04  +0.23  +0.11 [ppm]
949.200MHz:  +18.7dB:  +0.13  +0.20  +0.10  +0.14 [ppm]
949.400MHz:  +20.5dB:  +0.18  +0.14  +0.14  +0.13 [ppm]
959.000MHz:   +7.5dB:  -0.08  +0.12  -0.06  -0.04 [ppm]
959.200MHz:   +8.5dB:  +0.20  +0.15  +0.05  +0.12 [ppm]
959.600MHz:  +12.1dB:  +0.13  +0.05  +0.71  +0.32 [ppm]
Receiver Xtal correction 
= 0+0.041 = +0.041 (0.287) ppm [180]
Note: when the receiver warms up 
the Xtal may drift 5-10ppm

Mit den folgenden Befehlen könnt ihr den Scan per SSH auf dem Raspberry ausführen. Solltet Ihr dabei Probleme haben, dann muss der wahrscheinlich der OGN Dienst kurzzeitig beendet werden. Wichtig! Bitte am Ende nicht vergessen die Dienste wieder zu aktivieren!

sudo service rtlsdr-ogn stop
cd rtlsdr-ogn
./gsm_scan
sudo service rtlsdr-ogn start

Eingabe von Korrekturwerten:

Bei der Eingabe der korrekten Daten für die OGN-receiver.conf Datei muss im Ergebnis auf die Zeile 66 geschaut werden. Hier wird ausgegeben, welcher Korrekturwert “empfohlen” wird. Danach wird geschaut, welche Frequenz die Beste ist – Dies wird in Abhängigkeit der Fehlerwerte in den weiteren Spalten abgelesen. Für unser Beispiel ist die Zeile 57 am Besten. Darauf ergeben sich dann folgende Werte für die Konfiguration:

FreqCorr=+0.041
GSMCenterFreq=948.4
GSMGain=15

SSH und HTTP Aufrufe:

Mittels SSH kann die Funktionsfähigkeit des Raspberry und von OGN getestet werden. Im wesentlichen werden die folgenden Befehle verwendet: telnet localhost 50000 und telnet localhost 50001 Hiermit lässt sich die Konfiguration und auch die Empfangenen Daten einsehen. Darüberhinaus kann über [IP Adresse]:8080 oder [IP Adresse]:8081 die Informationen ebenfalls über einen Broswer einsehen. Ein tolles Feature wird unter dem zweiten Link versteckt, hier kann eine Liste eingesehen werden mit allen getrackten Flugzeugen in der letzten Zeit. Damit werden jetzt die Stationen ALMHORST und ELDINGEN von mir betrieben.

FlightRadar 24 – Easy as it is!

Ein weiteres Technisches Gadget ist in dem Zusammenhang, dass ich mir ebenfalls eine DIY FlightRadar24 (FR24) Station eingerichtet habe. Hier war die Umsetzung noch leichter und mit wenigen Klicks wurden Daten übertragen. Infolge der neuen FR24 Station erhält man kostenlos einen FR24-Business Account (for free!). Sehr empfehlenswert!

Hierzu wurde jedoch ein anderer Receiver verwendet, ich habe mich für eine gut und günstig Version bei Amazon entschieden.

Weitere Anleitungen zum OGN-Receiver:

GitHub – Sebastian Chaumontet – OGN-receiver-RPI-Image
glidernet.org – Manuel Installation Guide (all plattforms)
glidernet.org – Raspberry Installation Guide
glidernet.org – Software TroubleShooting Guide
glidernet.org – Receiver Configuration File
glidernet.org – Prevent SD-Card Corruption
gildernet.org – Downloads

FlightLGo – Beta-Phase

Wenn man sich mit dem Thema OGN beschäftigt und sich die Live Daten über Glidertracker.de anschaut, stellt man schnell fest das es noch andere Dienste gibt. Neben dem Reichweiten-Tool gibt es noch den Anbieter KTraxx die bisher kostenlos sogenannte Logbooks für Flugplätze angelegt hat. Mit der Veröffentlichung im Juli 2020 wird dieser kostenloses Dienst kostenpflichtig. Dies führt jedoch dazu, dass sich die OGN Community um eine OpenSource Lösung kümmert.

Die Entwickler und die Gruppe hinter dem Ready-2-Use Image (siehe oben!) haben daher ein zweites Projekt gestartet: FlightLGo. Dieses kleine Tool erhält über eine Konfiguration die Informationen über den nahegelegenen Airport und senden die lokalisierten Starts und Landungen an https://flightlog.glidernet.org. Wir möchten auch dieses Projekt unterstützen und ich habe mich dazu entschlossen auch an der Beta-Version teilzunehmen! Entsprechend lese ich mich in die minimalistische Anleitung ein und werde auf den bestehenden OGN-Stationen das neue Tool installieren. Hierbei bin ich an einige Hürden gestoßen, die ich gerne auch hier nachhalten und dokumentieren möchte.

Ein herzliches Dankeschön an die Community, die mir bei einigen Startschwierigkeiten helfen konnte. Ohne den Support hätte ich die erste Beta-Version nicht lauffähig auf dem Raspberry installieren können 🙂

Installationsscript aus der Community

Die Installation und das vorgehen sind noch nicht perfekt, da es sich um die erste Version von FlightLGo handelt. Dennoch konnte ich dank des Users Steve aus der OGN-Community auch die Software installieren. Jedoch gibt es ein wenig zu beachten, wenn man das Ready-2-Use Image verwendet, wie ich es tue! Wichtig: Der OVERLAY Modus muss deaktiviert werden, sonst setzt sich das System nach jedem Reboot wieder zurück!

# Deaktivierung des Read-Only Modus
sudo overlayctl disable
# Bedingt einen Neustart des Systems
sudo reboot
# Status des Read-Only Modus (Sollte deaktiviert sein!)
sudo overlayctl status
# Installation eines benötigten Pakets
sudo apt-get install libfap6
# Öffnen des Boot-Verzeichnis
cd /boot
# Anlegen des Anwendungs-Verzeichnisses
mkdir FlightLGo
# Öffnen des neuen Anwendungs-Verzeichnisses
cd FlightLGo
# Download des benötigten Codes für FlightLGo
sudo wget https://github.com/snip/flightLGo/releases/download/v0.0.0b1/flightLGo.arm
# Erstellung einer Datei mit den benötigten Parametern
sudo nano /boot/FlightLGo/.env or sudo nano /boot/.env

Mit dem Befehl nano wird ein interner Text-Editor geöffnet. Ich habe mich für diese Version entschieden, da er einfach zu bedienen ist. Den Texteditor vi kann ich persönlich nicht empfehlen! In die neue Datei müssen vier Zeilen eingegeben werden. Beispiel für den Airport in Hannover / EDDV:

export LAT= 52.46203
export LNG= 09.68456
export RADIUS=5
export ICAO=EDDV

Danach müssen noch weitere Einstellungen und Anpassungen durchgeführt werden. Diese Zeile (runAtBoot=”/boot/flightLGo/flightLGo.bash) muss in der OGN-receifer.conf ergänzt / angepasst werden.

sudo nano /boot/OGN-receiver.conf
sudo nano /boot/flightLGo/flightLGo.bash

Ebenfalls muss in der bash-Datei für FlightLGo dieser Text eingefügt werden. Hier verwende ich wieder den nano Texteditor:

#!/bin/bash
export LD_LIBRARY_PATH=/boot/flightLGo:$LD_LIBRARY_PATH
cd /boot/flightLGo
./flightLGo.arm 2>/dev/null >/dev/null &

Damit sind in wenigen Schritten alle wesentlichen Schritte erledigt. Über die manuelle Ausführung des Jobs kann eingesehen werden, wie FlightLGo arbeitet und wie die Daten erfasst werden. Sobald jeder Job vom root User gestartet wird (beim Systemstart) werden keine Daten ausgegeben. Lediglich das Ergebnis ist auf der Webseite zu sehen.

# Read-Only Modus wieder aktivieren!
sudo overlayctl enable
# Bedingt einen Neustart.
sudo reboot
# Öffnen des FlightLGo Verzeichnisses
cd /boot/FlightLGo/
# Manuelles Starten des Scripts
./FlightLGo.arm

Die einzige Variante um zu schauen, dass der Dienst ordnungsgemäß gestartet wurde ist über den Taskmanager. Hier muss in der Befehlszeile einfach top eingegeben werden und es folgt die Übersicht. Bei mir wird ganz am Ende der Liste der Satz (PID 1762) angezeigt, der auf die aktiven Prozess hinweist.

Nützliche Raspberry und SSH Befehle

Bei der versträkten Arbeit mit dem Raspberry und dem Zugriff über SSH habe ich einige weitere nützliche Tipps zusammengetragen. Sie dienen im wesentlichen dazu die eigenen OGN-Station besser zu verstehen und ggfs auch zu erweitern:

# Übersicht der hinterlegten Cron-Jobs
crontab -l
# Anlegen / Ändern / Löschen eines neuen Cron-Jobs
crontab -e
# Zeile für einen täglichen Reboot:
0 6 * * * sudo reboot
# Anzeige des aktuellen Datums
date
# Anzeige der aktuellen Laufzeit
uptime
# Anzeige des verfügbaren Speichers
df -Bm
# Basis Konfiguration des Raspberry
sudo raspi-config
Weitere Anleitungen zum Raspberry:

simsalabim-solution.net – Reboot via Cron Job
machs-smart.de – Raspberry Pi täglich neustarten!
edchen.org – How to resolve Crontab Error
raspberrypi.stackexchange.com – Edited Crontab aber Reboot gone!
makeuseof.com – Manually extend Filesystem
raspberrypi.org – How to check free disc space?
doenselmann.org – Richtige Uhrzeit am Raspberry
electrodome.net – Laufzeit und Startzeit vom Raspberry anzeigen

Schreibe einen Kommentar

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