kopia lustrzana https://github.com/cyoung/stratux
125 wiersze
3.2 KiB
Markdown
125 wiersze
3.2 KiB
Markdown
|
# dump978
|
||
|
|
||
|
Experimental demodulator/decoder for 978MHz UAT signals.
|
||
|
|
||
|
## A note about future development
|
||
|
|
||
|
I'm in Europe which doesn't use UAT, so there won't be much spontaneous
|
||
|
development going on now that the demodulator is at a basic "it works" stage.
|
||
|
|
||
|
I'm happy to look at signal or message captures and help with further
|
||
|
development, but it really needs to be driven by whoever is actually using the
|
||
|
code to receive UAT!
|
||
|
|
||
|
## Demodulator
|
||
|
|
||
|
dump978 is the demodulator. It expects 8-bit I/Q samples on stdin at
|
||
|
2.083334MHz, for example:
|
||
|
|
||
|
````
|
||
|
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | ./dump978
|
||
|
````
|
||
|
|
||
|
It outputs one one line per demodulated message, in the form:
|
||
|
|
||
|
````
|
||
|
+012345678..; this is an uplink message
|
||
|
-012345678..; this is a downlink message
|
||
|
````
|
||
|
|
||
|
For parsers: ignore everything between the first semicolon and newline that
|
||
|
you don't understand, it will be used for metadata later. See reader.[ch] for
|
||
|
a reference implementation.
|
||
|
|
||
|
## Decoder
|
||
|
|
||
|
To decode messages into a readable form use uat2text:
|
||
|
|
||
|
````
|
||
|
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2text
|
||
|
````
|
||
|
|
||
|
## Sample data
|
||
|
|
||
|
Around 1100 sample messages are in the file sample-data.txt.gz. They are the
|
||
|
output of the demodulator from various RF captures I have on hand. This file
|
||
|
can be fed to uat2text etc:
|
||
|
|
||
|
$ zcat sample-data.txt.gz | ./uat2text
|
||
|
|
||
|
When testing, this is much easier on your CPU (and disk space!) than starting
|
||
|
from the raw RF captures.
|
||
|
|
||
|
## Filtering for just uplink or downlink messages
|
||
|
|
||
|
As the uplink and downlink messages start with different characters, you can
|
||
|
filter for just one type of message very easily with grep:
|
||
|
|
||
|
````
|
||
|
# Uplink messages only:
|
||
|
$ zcat sample-data.txt.gz | grep "^+" | ./uat2text
|
||
|
# Downlink messages only:
|
||
|
$ zcat sample-data.txt.gz | grep "^-" | ./uat2text
|
||
|
````
|
||
|
|
||
|
## Map generation via uat2json
|
||
|
|
||
|
uat2json writes aircraft.json files in the format expected by dump1090's
|
||
|
map html/javascript.
|
||
|
|
||
|
To set up a live map feed:
|
||
|
|
||
|
1) Get a copy of dump1090, we're going to reuse its mapping html/javascript:
|
||
|
|
||
|
````
|
||
|
$ git clone https://github.com/mutability/dump1090 dump1090-copy
|
||
|
````
|
||
|
|
||
|
2) Put the html/javascript somewhere your webserver can reach:
|
||
|
|
||
|
````
|
||
|
$ mkdir /var/www/dump978map
|
||
|
$ cp -a dump1090-copy/public_html/* /var/www/dump978map/
|
||
|
````
|
||
|
|
||
|
3) Create an empty "data" subdirectory
|
||
|
|
||
|
````
|
||
|
$ mkdir /var/www/dump978map/data
|
||
|
````
|
||
|
|
||
|
4) Feed uat2json from dump978:
|
||
|
|
||
|
````
|
||
|
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | \
|
||
|
./dump978 | \
|
||
|
./uat2json /var/www/dump978map/data
|
||
|
````
|
||
|
|
||
|
5) Go look at http://localhost/dump978map/
|
||
|
|
||
|
## uat2esnt: convert UAT ADS-B messages to Mode S ADS-B messages.
|
||
|
|
||
|
Warning: This one is particularly experimental.
|
||
|
|
||
|
uat2esnt accepts 978MHz UAT downlink messages on stdin and
|
||
|
generates 1090MHz Extended Squitter messages on stdout.
|
||
|
|
||
|
The generated messages mostly use DF18 with CF=6, which is
|
||
|
for rebroadcasts of ADS-B messages (ADS-R).
|
||
|
|
||
|
The output format is the "AVR" text format; this can be
|
||
|
fed to dump1090 on port 30001 by default. Other ADS-B tools
|
||
|
may accept it too - e.g. VRS seems to accept most of it (though
|
||
|
it ignores DF18 CF=5 messages which are generated for
|
||
|
non-ICAO-address callsign/squawk information.
|
||
|
|
||
|
You'll want a pipeline like this:
|
||
|
|
||
|
````
|
||
|
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | \
|
||
|
./dump978 | \
|
||
|
./uat2esnt | \
|
||
|
nc -q1 localhost 30001
|
||
|
````
|