ADS-B

Z Poznámkový blok
Verze z 6. 1. 2017, 18:06, kterou vytvořil Tydyt (diskuse | příspěvky) (Odkazy)
Přejít na: navigace, hledání

Raspberry Pi

Modely

Raspberry Pi se vyrábí v několika provedení které se liší jak výkonem, tak počtem interface. Český e-shop: rpishop.cz mohu plně doporučit.

Raspberry Pi Model B+ V1.2

pi@raspberrypi:~ $ lscpu                                       pi@raspberrypi:~ $ cat /proc/cpuinfo
Architecture:          armv6l                                  processor       : 0
Byte Order:            Little Endian                           model name      : ARMv6-compatible processor rev 7 (v6l)
CPU(s):                1                                       BogoMIPS        : 2.00
On-line CPU(s) list:   0                                       Features        : half thumb fastmult vfp edsp java tls
Thread(s) per core:    1                                       CPU implementer : 0x41
Core(s) per socket:    1                                       CPU architecture: 7
Socket(s):             1                                       CPU variant     : 0x0
Model name:            ARMv6-compatible processor rev 7 (v6l)  CPU part        : 0xb76
CPU max MHz:           700.0000                                CPU revision    : 7
CPU min MHz:           700.0000
                                                               Hardware        : BCM2708
                                                               Revision        : 0010
                                                               Serial          : 000000008bdc96fc

Raspberry Pi2 Model B V1.1

pi@raspberrypi:~ $ lscpu                                       pi@raspberrypi:~ $ cat /proc/cpuinfo
Architecture:          armv7l                                  processor       : 0
Byte Order:            Little Endian                           model name      : ARMv7 Processor rev 5 (v7l)
CPU(s):                4                                       BogoMIPS        : 38.40
On-line CPU(s) list:   0-3                                     Features        : half thumb fastmult vfp edsp neon vfpv3   
Thread(s) per core:    1                                                         tls vfpv4 idiva idivt vfpd32 lpae evtstrm
Core(s) per socket:    4                                       CPU implementer : 0x41
Socket(s):             1                                       CPU architecture: 7
Model name:            ARMv7 Processor rev 5 (v7l)             CPU variant     : 0x0
CPU max MHz:           900.0000                                CPU part        : 0xc07
CPU min MHz:           600.0000                                CPU revision    : 5
                                                                        .
                                                                        .                                                                         .
                                                                        .
                                                               Hardware        : BCM2709
                                                               Revision        : a01041
                                                               Serial          : 000000002e97c5ef

Raspberry Pi3 Model B V1.1

pi@raspberrypi:~ $ lscpu                                       pi@raspberrypi:~ $ cat /proc/cpuinfo
Architecture:          armv7l                                  processor       : 0
Byte Order:            Little Endian                           model name      : ARMv7 Processor rev 4 (v7l)
CPU(s):                4                                       BogoMIPS        : 38.40
On-line CPU(s) list:   0-3                                     Features        : half thumb fastmult vfp edsp neon vfpv3 tls  
Thread(s) per core:    1                                                         vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
Core(s) per socket:    4                                       CPU implementer : 0x41
Socket(s):             1                                       CPU architecture: 7
Model name:            ARMv7 Processor rev 4 (v7l)             CPU variant     : 0x0
CPU max MHz:           1200.0000                               CPU part        : 0xd03
CPU min MHz:           600.0000                                CPU revision    : 4
                                                                        .
                                                                        .                                                                         .
                                                                        .
                                                               Hardware        : BCM2709
                                                               Revision        : a02082
                                                               Serial          : 00000000bd487497

Image

Vlastní stránky Raspberry Pi se nachází na www.raspberrypi.org. Zde v sekci "Downloads" můžeme stáhnout image pro microCD kartu. Ta slouží jako disk na kterém je vlastní systém ktrý se zní spustí. Pro přehrání image na microSD kartu můžeme použít program Win32 Disk Image (není možné jen překopírovat, neboť je potřeba zajistit z karty bootování). Pro příjem signálů ADS-B a distribuci na flightradar24 je možné též použít hotový image přímo z flightradar24.com. Obdobně je také možné stáhnou další image z FlightAware kde je i postup instalace.

První spusštění - Debian

V případě balíčků Debian je ve výchozím nastavení nastaven DHCP klient a přístup přes SSH. Vychozí login je "pi" a heslo "raspberry". U instalace FlightAware je heslo "flightaware".

Po prvním spuštění je vhodné spustit příkaz "sudo raspi-config" pro dokončení plného nastavení vlastního Raspberry.

┌───────────────────────────┤ Raspberry Pi Software Configuration Tool (raspi-config) ├────────────────────────────┐
│                                                                                                                  │
│    1 Expand Filesystem                                Ensures that all of the SD card storage is availabl        │
│    2 Change User Password                             Change password for the default user (pi)                  │
│    3 Enable Boot to Desktop/Scratch                   Choose whether to boot into a desktop environment,         │
│    4 Internationalisation Options                     Set up language and regional settings to match your        │
│    5 Enable Camera                                    Enable this Pi to work with the Raspberry Pi Camera        │
│    6 Add to Rastrack                                  Add this Pi to the online Raspberry Pi Map (Rastrac        │
│    7 Overclock                                        Configure overclocking for your Pi                         │
│    8 Advanced Options                                 Configure advanced settings                                │
│    9 About raspi-config                               Information about this configuration tool                  │
│                                                                                                                  │
│                                 <Select>                                 <Finish>                                │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘


┌───────────────────────────┤ Raspberry Pi Software Configuration Tool (raspi-config) ├────────────────────────────┐
│                                                                                                                  │
│          A1 Overscan     You may need to configure overscan if black bars are present on display                 │
│          A2 Hostname     Set the visible name for this Pi on a network                                           │
│          A3 Memory Split Change the amount of memory made available to the GPU                                   │
│          A4 SSH          Enable/Disable remote command line access to your Pi using SSH                          │
│          A5 Device Tree  Enable/Disable the use of Device Tree                                                   │
│          A6 SPI          Enable/Disable automatic loading of SPI kernel module (needed for e.g. PiFace)          │
│          A7 I2C          Enable/Disable automatic loading of I2C kernel module                                   │
│          A8 Serial       Enable/Disable shell and kernel messages on the serial connection                       │
│          A9 Audio        Force audio out through HDMI or 3.5mm jack                                              │
│          A0 Update       Update this tool to the latest version                                                  │
│                                                                                                                  │
│                                 <Select>                                 <Back>                                  │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Pokud se rozhodneme používat grafické rozhraní a chceme se na něj vzdáleně připojit, můžeme nainstalovat RDP server který je následně přístupný na portě 3389:

sudo apt-get install xrdp

Napájení

Raspberry Pi je napájeno přes USB mini kde jsou zapojené jen napájecí piny. Proto je potřeba mít zdroj 5V. Je také potřeba aby byl zdroj dostatečně "stabilní". Při testech u 2A zdroje nastávalo odpojení USB donglu. Při výměně jen za 1A se tento problém neprojevil a bylo vše v pořádku ! Z toho plyne že i 1A zdroj může plně dostačovat, pokud je ale stabilní a nijak na výstupu nekolísá.

Odpojení USB zařízení bylo signalizované v dmesg výpisem "USB disconnect, device number 35".


Flightradar24

Server Flightradar24.com zobrazuje jednotlivá letadla na obloze. Využívá dobrovolníků, kteří přijímají ADS-B data vysílané letadly a tyto data předávají.

Pokud chceme sdílet svoje data, je nutné se zaregistrovat. Zda zadáme svoji email adresu a souřadnice umístění přijímače. Následně bude na uvedenou adresu zaslán registrační klíč a kód radaru.


Nastavení:

Prvotní nastavení přijímače provedeme příkazem "sudo fr24feed --signup". Následně jsme vyzváni k nastavení:

	Než budete pokračovat, prosím ujistěte se, že: 
	 1 - Vaše ADS-B přijímač připojen k tomuto počítači, nebo je přístupná po síti. 
	 2 - Znáte zeměpisné souřadnice vaše antény na 4 desetinná místa a nadmořskou výšku ve stopách. 
	 3 - Máte pracovní emailovou adresu, která bude použita pro korespondenci s vámi.
	 4 - Služba fr24feed je zastavena. Pokud tomu tak není, spusťte: sudo service fr24feed stop

	Krok 1.1 - Zadejte vaší emailovou adresu (username@domain.tld)
	$:
	
	Krok 1.2 - Pokud jste použili FR24 s ADS-B údajů dříve, zadejte váš klíč sdílení.
	Pokud si nepamatujete svůj klíče pro sdílení, použijte prosím formulář pro vytvoření:
	http://feed.flightradar24.com/forgotten_key.php

	V opačném případě nechte pole prázdné a pokračovat.
	$:

	Krok 1.3 - Chtěli byste se podílet na matematických výpočtů? (yes/no) $:

	Krok 2 - Zadejte nejbližší kód letiště (IATA or ICAO)
	
	Potřebujeme znát vaše antény přibližnou polohu filtrovat falešnou provoz, jakož i k tomu, 
	 aby pozemní pozice dekódování. Můžete buď zadat nejbližší kód letiště nebo ponechte pole prázdné,
	 aby přesnou polohu antény. Pokud je vaše anténa je dál než 20 mil od nejbližšího letiště důrazně
	 doporučujeme poskytovat svou pravou pozici, místo, jak to může ovlivnit výkon dekodér.
	
	Zadejte kód letiště nebo nechte prázdné
	$:

	DŮLEŽITÉ: Při výpočtech MLAT umístění antény by měly být zapsány velmi přesný!
	Krok 3.A - Vložte zeměpisnou šířky umístění antény (DD.DDDD) $:

	Krok 3.B - Vložte zeměpisnou délku umístění antény (DDD.DDDD) $:

	Krok 3.C - Vložte nadmořskou výšku umístění antény (ve stopách) $:

	Flightradar24 může, v případě potřeby, použijte emailovou adresu, aby vás kontaktovat ohledně zdroji dat.

	Chtěli byste i nadále používat toto nastavení?

	Zadejte svou volbu (ano / ne)
	$:


Případné přenastavení, jen vlastního zdroje dat lze provést příkazem "sudo fr24feed --reconfigure --fr24key=0123456789ABCDEF" kde samozřejmě key odpovídá dříve přiřazenému kódu. Toto přenastavení je také možné provést přes web rozhraní a to na adrese přijímače na portě 8754.

	 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)

	Zadejte typ vašeho přijímače (1-5)

 	Krok 4.2 - Vyberte dump1090 variantu: 
	1 - Původní Salvatore Sanfilippo Varianta 
	2 - Malcolma Robb je vidlice


	Krok 4.3 - Zadejte své další dump1090 argumenty nebo nechte prázdné

	....

FlightAware

Dalším serverem který také zobrazuje data z ADS-B přijímači je FlightAware. Navíc ale poskytuje zpětně dobrovolníkům informace vypočítané na základě informaci MLAT. Také je zde funkční webové rozhraní kde je přehled stavu a také mapa ze zobrazením letadel. Postup zprovoznění přijímače nalezneme též na jejich stránkách. Vlastní instalace SDmicro image je stejná pro všechny Raspberry.

Je zde ale rozdíl v přihlášení, kdy login je opět "pi", ale heslo je "flightaware". To ale po spuštění není přímo třeba. Data jsou po zapnutí ihned posílána na server. To že je vše v pořádku se dá podívat na přehledu. Přesto aby jsme měli práva, jakožto naši odměnu za poslaná data je dobré si založit účet.

Pokud se nepovede automatické spárování (probíhá na základě veřejné IP adresy), je možné nastavení ruční. Po přihlášení na Raspberry zadáme:

sudo piaware-config flightaware-user <username> flightaware-password 

poté budeme vyzváni k zadání hesla pro FlightAware. Verze 3.1 je již přednastavená aby poskytla všechny dostupné informace. Proto není potřeba ji standardně přenastavovat. Přesto můžeme přenastavit potřebné parametry. Jejich seznam a aktuální nastavení získáme příkazem:

sudo piaware-config

Poté by se již měly informace párovat na náš účet. To vše je v pořádku bude také potvrzeno emailem.

Pokud bude vše v pořádku, tak jsou následně otevřené porty:

TCP 30002 Raw - netříděná data ve formátu AVR (Beast Raw Feed)  (dump1090, bez MLAT)
TCP 30003 Zpracovaná data ve formátu BaseStation                (dump1090, bez MLAT)
TCP 30005 Raw - netříděná data ve formátu Beast Raw Feed        (dump1090, bez MLAT)

TCP 30105 Pouze MLAT data ve formátu Beast Raw Feed         (pro FlightFeeders od verze 7.x)
TCP 30106 Pouze MLAT data v rozšířeném formátu BaseStation  (pro FlightFeeders od verze 7.x)

TCP    22 - SSH připojení
TCP    80 - Pro webový přístup
TCP  8080 - Pro webové sledování letadel

TCP 30104 - pro příjem dat z jiných zařízení ve formátu Beast Raw Feed. Data budou přidány do mapy, na port 30005 a PiAware. Nebude ale z nich počítám MLAT)

Nová verze image PiAware má podporu IP6. Bohužel v tomto případě ale není funkční přeposílání dat z MLAT informacemi přes IP4 pro další zpracování. Proto je nutné IP6 zakázat. To se dá docílit několika způsoby. Zde jeden přikládám, který zablokuje přímo načtení modulu pro IP6:

sudo echo "blacklist ipv6" > /etc/modprobe.d/blacklist.conf

Pokud chceme data poskytovat i sdružení HKFree, můžeme doinstalovat mlat klienta, který odesílá potřebná data. Na oplátku nám pak doplňuje informace o pozici letadel. Doinstalování můžeme provést:

sudo apt-get install python3-dev
wget http://radar.slapnet.cz/deb/mlat-client_0.2.6_armhf.deb
sudo dpkg -i mlat-client_0.2.6_armhf.deb

Následně je potřeba samozřejmě provést provést nastavení v souboru /etc/default/mlat-client. Viz Mlat Client

RTL-SDR

Prvně si stáhneme nejaktuálnější image distribuce pro Raspberry. V našem případě nám postačuje verze "Lite". Tu nakopírujeme na SD kartu a spustíme vlastní Raspberry. Po přihlášení (login: pi / raspberry) doporučuji provést prvotní nastavení:

sudo raspi-config

Zde nastavíme "1 Expand Filesystem" aby byla k dispozici celá kapacita SD karty. Dále provedeme lokalizaci v "4 Internationalisation Options". Komu se nelíbí původní heslo, tak jej může změnit "2 Change User Password".

Jakmile budeme mít připravenou distribuci musíme doinstalovat programy které nám umožní vlastní instalaci ovladačů rtl-sdr:

sudo apt-get install git 
sudo apt-get install cmake
sudo apt-get install libusb-1.0-0.dev
sudo apt-get install build-essential

Zkráceně: " sudo apt-get install git cmake libusb-1.0-0.dev build-essential ". Je samozřejmě možné že některé programy mohou být již v distribuci zahrnuty.

Pak pokračujeme vlastní instalací ovladačů rtl-sdr:

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
sudo cp rtl-sdr.rules /etc/udev/rules.d/

Nakonec zablokujeme načtení původních ovladačů rtl v souboru raspi-blacklist.conf a vše restartujeme:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830

sudo reboot

Po znovu přihlášení můžeme příkazem rtp_test -t ověřit, že je vše v pořádku.

Bohužel součástí instalace není skript, který by zajistil automatické spuštění po startu. Proto jsem se pokusil vytvořit následující. Jeho podstatnou výhodou je, že umožňuje spuštění RTL TCP serveru pro všechny klíčenky, které jsou připojeny.

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO

# Author skriptu: Tydyt

# Nastaveni adresy na ktere RTL TCP server posloucha:
# 0.0.0.0   - server nasloucha na vsech svych adresach
# 127.0.0.1 - server posloucha jen na adrese lokalhost (nelze se vzdalene pripojit)
# x.x.x.x   - server nasloucha na konkretni adrese (adresa musí byt k dispozici)
# auto      - skript nastavi automaticky vnejsi IP adresu z eth0
# hostname  - skript nastavi automaticky IP adresu z hostname
NET="0.0.0.0"

# Seznam RTL SDR zarizeni ktere se maji pouzit
# Jednotlive ID oddelit mezerou
# 0      - pouzije se prvni zarizani ID 0
# 0 4 5  - pouziji se zrizeni ID 0, 4, 5
# all    - pouziji se vsechny zarizeni
DEVICE="all"

# Vychozi TCP port pro server
PORT="1234"

# Zpusob vytvoreni TCP portu pro jednotlive zarizani
# sum - k vychozimu portu je pricteno ID zarizeni ($PORT + $DEVICE)
# add - k vychozimu portu je pridano ID zarizeni ($PORT$DEVICE)
PORT_ADD="sum"

# Moznost pridani dalsich parametru pro server. Tyto hodnoty mohou byt
# zmeneny vlastni aplikaci ktera se k RTL RTP serveru pripoji.
#        -f frequency to tune to [Hz]
#        -g gain (default: 0 for auto)
#        -s samplerate in Hz (default: 2048000 Hz)
#        -b number of buffers (default: 15, set by library)
#        -n max number of linked list buffers to keep (default: 500)
#        -P ppm_error (default: 0)
#
PROG_ARGS=""

# Nazev vlastniho skriptu rtl_tcp
PROGRAM=rtl_tcp

# Cesta k vlastnimu skriptu rtl_tcp
PROGDIR=/usr/local/bin

# Adresar ze seznamem spustenych programu
PIDDIR=/var/run

# Zacatek skriptu
PATH=/sbin:/usr/sbin:/bin:/usr/bin

if [ ! -f $PROGDIR/$PROGRAM ]; then
    echo "Nebyl nelezen skript rtl_tcp !"
    exit 0
fi

# Zjisteni IP adresy
if [ "$NET" = "auto" ]; then
    NET=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
fi
if [ "$NET" = "hostname" ]; then
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
        NET=$_IP
    else
        NET="0.0.0.0"
    fi
fi

# Nastav id z prikazovaho radku jsouli zadane
if [ $# -gt 1 ]; then
    DEVICE=""
    for ID in $@; do
        if [ ! "$ID" = "$1" ]; then
            DEVICE="$DEVICE $ID"
        fi
    done
fi

# Zjisteni vsech SDR zarizeni jeli nastaveno all
if [ "$DEVICE" = "all" ]; then
    DEVICE=`$PROGDIR/rtl_test -t 2>&1 | grep 'Realtek' | cut -d: -f1 | awk '{ print $1}'`
fi

start(){
    for ID in $DEVICE; do
        if [ "$PORT_ADD" = "sum" ]; then
            PORT_ID=$(($PORT+$ID))
        else
            PORT_ID="$PORT$ID"
        fi
        if [ "$PROG_ARGS" ]; then
            ARGS="-a $NET -p $PORT_ID $PROG_ARGS"
        else
            ARGS="-a $NET -p $PORT_ID"
        fi
        startone $ID $PORT_ID
    done
}

stop(){
    for ID in $DEVICE; do
        stopone $ID
    done
}

startone(){
    PIDFILE="$PIDDIR/$PROGRAM-$1.pid"
    if [ -f $PIDFILE ]; then
        echo "Server RTL TCP na zarizeni ID $1 JE jiz spusten !"
        return
    else
        echo -n "Server RTL TCP na zarizeni ID $1 ... "
        $PROGDIR/$PROGRAM -d $1 $ARGS >> /dev/null 2>&1 &
        PID=$!
        sleep 1
        PIDR=`pidof $PROGRAM`
        if [ "$PIDR" ]; then
            for ID in $PID; do
                if [ $ID = $PID ]; then
                    echo $PID > "$PIDFILE"
                    echo "Je spusten na porte TCP $2"
                    return
                fi
            done
        fi
        echo "Se nepodarilo spustit ! ($ARGS)"
    fi
}

stopone(){
    PIDFILE="$PIDDIR/$PROGRAM-$1.pid"
    if [ ! -f $PIDFILE ]; then
        echo "Server RTL TCP na zarizeni ID $1 NENI spusten !"
        return
    else
        echo -n "Server RTL TCP na zarizeni ID $1 ... "
        pid2kill=`cat $PIDFILE`
        kill -9 $pid2kill
        rm $PIDFILE
        echo "Je ukoncen."
    fi
}

killall(){
    echo -n "Ukonceni vsech RTL TCP serveru: "
    PID=`pidof $PROGRAM`
    echo "pid: $PID"
    if [ "$PID" ]; then
        for ID in $PID; do
            kill -9 $ID
        done
    fi
    PIDFILE="$PIDDIR/$PROGRAM-*.pid"
    rm $PIDFILE
}

case "$1" in
   start)
        start
        ;;
   stop)
        stop
        ;;
   restart)
        killall
        start
        ;;
    kill)
        killall
        ;;
   *)
    echo $"Moznosti: $0 {start|stop|restart|kill} [ID_zarizeni] [ID_zarizeni_1] [ID_zarizeni_2]"
    retval=1
esac

Dump1090

Jedná se o vlastní program, který snímá data z ADS-B vysílačů a následně provede jejich zpracování a dekódování. Originální informace jsou na https://github.com/mutability/dump1090

Prvně se doinstaluje odkaz zdroje dat včetně platných klíčů. Pak teprve provedeme vlastní instalaci:

wget https://github.com/mutability/mutability-repo/releases/download/v0.1.1/mutability-repo_0.1.1_armhf.deb
sudo dpkg -i mutability-repo_0.1.1_armhf.deb

sudo apt-get update && sudo apt-get install dump1090-mutability

Po nainstalování je vhodné provést konfiguraci

sudo dpkg-reconfigure dump1090-mutability

Případně pak můžeme editovat soubor "/etc/default/dump1090-mutability" kde jsou uložené hodnoty pro dump1090-mutability.


Vlastní Image

Pro ty, kteří se bojí vytváření a instalace jednotlivých programů pod Linuxem a přesto si chtějí vytvořit ADS-B postavený na Raspberry jsem připravil nový image SD karty pro tento účel. Popis jak provést vlastní instalaci a nastavení je věnována vlastní stránka ADS-B Image.

Virtual Radar

Pro tento pěkná program je vyhrazena samostatná stránka: Vizualizace leteckého provozu.

FlightAirMap

Další zajímavý radar: https://github.com/Ysurac/FlightAirMap

ACARS

Odkazy

Odkazy které mi pomohli k zprovoznění ADS-B příjmu a souvisejícím tématům:


Stránky na kterých též je možné sledovat vlastní letecký provoz, nebo mají na dané téma přímou vazbu:


A takto může vypadat vlastní přijímač:

Adsb-prijimac.jpg