Wie wird ein Multi-Channel ACARS Decoder auf einem Raspberry Pi Zero W mit Software Defined Radio (SDR) installiert?

Erstellt am 26. August 2017 von It_berater

Flugzeuge senden nicht nur transponder Daten im Bereich von 1090 MHz via ADS-B die mit Dump1090 empfangen werden können.

Auch ACARS Daten auf ca. 130 MHz (3 Meter Band). Auch diese können mit eine Software Radio und eine kleinen Raspberry Pi Zero W empfangen werden. Diese ACARS Meldungen enthalten diverse Infos, wie aus dieser Mindmap hervorgeht:

Vorraussetzung ist ein frisch installiertes Debian Raspbian Stretch Lite Version 2017-08-16 und das ein rtl_test -t ohne Fehler auf der Konsole durchläuft. Das heißt, ein RTL-SDR Software Radio ist erfolgreich installiert.

Wie das installiert wird, habe ich ja ua. hier beschrieben.

Nun compilieren wir uns das Multi-Channel ACARS Programm acarsdec wie folgt:

# zuerst erstellen wir uns ein Verzeichnis
cd ~
mkdir acars
cd acars
# dann clonen wir das Repo von GitHub
git clone https://github.com/TLeconte/acarsdec.git
# installieren noch ein paar benötigte Abhängikeiten
sudo apt-get install libsndfile1-dev
sudo apt-get install libasound2-dev
# evl. auch noch nötig
sudo apt-get install librtlsdr
sudo ldconfig
# wechseln in das Verzeichnis
cd acarsdec
make
# Test Hilfe ausgeben
./acarsdec -h

Das Ergebnis:

./acarsdec: invalid option -- 'h'
Acarsdec/acarsserv 3.4 Copyright (c) 2017 Thierry Leconte

Usage: acarsdec  [-v] [-o lv] [-t time] [-A] [-n ipaddr:port] [-l logfile] -a alsapcmdevice  | -f inputwavfile  | [-g gain] [-p ppm] -r rtldevicenumber  f1 [f2] ... [fN] -R < /stdin@12500:1channel:float32native  |

 -v			: verbose
 -A			: don't display uplink messages (ie : only aircraft messages)

 -o lv			: output format : 0: no log, 1 one line by msg., 2 full (default) , 3 monitor mode, 4 newline separated JSON

 -t time			: set forget time (TTL) in seconds for monitor mode (default=600s)
 -l logfile		: Append log messages to logfile (Default : stdout).
 -n ipaddr:port		: send acars messages to addr:port on UDP in planeplotter compatible format
 -N ipaddr:port		: send acars messages to addr:port on UDP in acarsdev native format
 -i stationid		: station id used in acarsdec network format.

 -a alsapcmdevice	: decode from soundcard input alsapcmdevice (ie: hw:0,0)
 -f inputwavfile	: decode from a wav file at 12500 sampling rate
 -g gain		: set rtl preamp gain in tenth of db (ie -g 90 for +9db). By default use AGC
 -p ppm			: set rtl ppm frequency correction
 -r rtldevice f1 [f2]...[f8]	: decode from rtl dongle number or S/N rtldevice receiving at VHF frequencies f1 and optionally f2 to f8 in Mhz (ie : -r 0 131.525 131.725 131.825 )
 -R 	: decode from stdin at 12500 sampling rate, 1 channel, native float32

For any input source, up to 8 channels may be simultaneously decoded

Jetzt könnte man sich noch eine kleines Startscript start-acars.sh erstellen und mit chmod +x start-acars.sh ausführbar machen:

#!/bin/bash
# (c) 2017 Thomas Wenzlaff

#Frequenz in MHz   Region/Bemerkung
#131,550 	Primär weltweit
#129,125 	Zusätzlich in USA und Kanada
#130,025 	Sekundär in USA und Kanada
#130,425 	Zusätzlich in USA
#130,450 	Zusätzlich in USA und Kanada
#131,125 	Zusätzlich in USA
#131,450 	Zusätzlich in Japan
#131,475 	Air-Canada-Kanal
#131,525 	Sekundär Europa
#131,725 	Primär Europa
#136,700 	Zusätzlich in USA
#136,750 	Zusätzlich in USA
#136,800 	Zusätzlich in USA
#136,900 	Europa Sekundär
#136,850 	SITA Nordamerika
#136,750 	Europa neue Frequenz
#131,850 	Europa neue Frequenz
#131,725        Hannover?

./acarsdec/acarsdec -p -0 -r 0 131.725 131.850

Schon könnten bis zu 8 Kanäle von ACARS-Daten empfangen werden. Wenn man aber z.B. 6 Kanäle gleichzeitig abfragt, ist die CPU des Zero W mit 80 % schon sehr ausgelastet. Aber man könnte ja nur den Kanal abfragen der ein interessiert. Mit dem Programm, können auch Sound-Dateien im WAV-Format ausgewertet werden, aber Echtzeit ist wohl mehr interessant. Auf jeden Fall, müssen die rechlichten Vorraussetzungen für den Empfang beachtet werden, die in jedem Land anders sind.

Man kann auch noch einen extra Server acarsserv installieren, der die Daten dann in eine DB speichert. Dazu aber später mal mehr.

Jetzt noch ein paar infos, zum kompilieren des Kalibrate Programm. Da für das obige Programm, evl. noch ein offset nötig ist, den man mit dem Programm ermitteln kann.

# wir erstellen wieder ein Verzeichnis
mkdir ~/kal
cd ~/kal
# installieren nötige Libs
sudo apt-get install libtool autoconf automake libfftw3-dev
# clonen das GitRepo von kalibrate-rtl
git clone https://github.com/asdil12/kalibrate-rtl.git
# gehen in das install Verzeichnis
cd kalibrate-rtl
git checkout arm_memory		
./bootstrap
./configure
make
sudo make install
# Test der installation
kal -h

Das Ergebnis:

kalibrate v0.4.1-rtl, Copyright (c) 2010, Joshua Lackey
modified for use with rtl-sdr devices, Copyright (c) 2012, Steve Markgraf
Usage:
	GSM Base Station Scan:
		kal <-s band indicator> [options]

	Clock Offset Calculation:
		kal <-f frequency | -c channel> [options]

Where options are:
	-s	band to scan (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)
	-f	frequency of nearby GSM base station
	-c	channel of nearby GSM base station
	-b	band indicator (GSM850, GSM-R, GSM900, EGSM, DCS, PCS)
	-g	gain in dB
	-d	rtl-sdr device index
	-e	initial frequency error in ppm
	-v	verbose
	-D	enable debug messages
	-h	help

Ein Scann des GSM900 Bandes können wir wie folgt starten:

kal -s GSM900 -d 0 -g 40

Ergebnis z.B.:

Found 1 device(s):
  0:  Generic RTL2832U OEM

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 270833.002142 Hz
[R82XX] PLL not locked!
Setting gain: 40.0 dB
kal: Scanning for GSM-900 base stations.
GSM-900:
	chan: 15 (938.0MHz + 31.708kHz)	power: 416392.87

Wir brauchen nur etwas Geduld. Evl. mehrfach starten. Wenn die Ergebnisse vorliegen, kann der gewünschte Kanal mit

kal -c <channel> -d 0 -g 40

abgefragt werden und der Offset ausgegeben werden. Und zwar wird der xx Wert aus der Zeile:

average absolute error: xx.yyy ppm

im obigen Programm als -p xx Parameter angegeben. Zum Flugfunk und den nötigen Lizenzen gibt es hier Infos oder auch die Frequenzdatenbank und Videos zum Thema.

Was alles so für Infos durch den Äther (griech. αἰθήρ [„aithḗr“], der (blaue) Himmel‘) gehen!

Ähnliche Artikel:

  1. Raspberry Pi: Wie kann ein neuer Mode S Decoder für RTLSDR Devices (DUMP1090 fork) dump1090-mutability installiert werden?
  2. Wie kann sysv-rc-conf 0.99 auf einem Raspberry Pi installiert werden?
  3. Raspberry Pi: Wie wird das letztes Update in 2015 für Piaware 2.1.5 installiert