git clone mutability-dump978_-_2016-08-31_11-25-22.bundle -b master
Experimental demodulator/decoder for 978MHz UAT signals.
I'm in Europe which doesn't use UAT, so there won't be much spontaneousdevelopment 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 furtherdevelopment, but it really needs to be driven by whoever is actually using thecode to receive UAT!
dump978 is the demodulator. It expects 8-bit I/Q samples on stdin at2.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 thatyou don't understand, it will be used for metadata later. See reader.[ch] fora reference implementation.
To decode messages into a readable form use uat2text:
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | ./dump978 | ./uat2text
Around 1100 sample messages are in the file sample-data.txt.gz. They are theoutput of the demodulator from various RF captures I have on hand. This filecan be fed to uat2text etc:
$ zcat sample-data.txt.gz | ./uat2text
When testing, this is much easier on your CPU (and disk space!) than startingfrom the raw RF captures.
As the uplink and downlink messages start with different characters, you canfilter 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
To set up a live map feed:
$ git clone https://github.com/mutability/dump1090 dump1090-copy
$ 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/
Warning: This one is particularly experimental.
uat2esnt accepts 978MHz UAT downlink messages on stdin andgenerates 1090MHz Extended Squitter messages on stdout.
The generated messages mostly use DF18 with CF=6, which isfor rebroadcasts of ADS-B messages (ADS-R).
The output format is the "AVR" text format; this can befed to dump1090 on port 30001 by default. Other ADS-B toolsmay accept it too - e.g. VRS seems to accept most of it (thoughit ignores DF18 CF=5 messages which are generated fornon-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