Coder Social home page Coder Social logo

dump978's Introduction

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 my fork of dump1090's map html/javascript.

To set up a live map feed:

  1. Get a copy of this dump1090 repository. We're going to reuse its mapping html/javascript:
$ git clone https://github.com/mutability/dump1090 dump1090-copy
  1. Put the html/javascript somewhere your webserver can reach:
$ mkdir /var/www/dump978map
$ cp -a dump1090-copy/public_html/* /var/www/dump978map/
  1. Create an empty "data" subdirectory
$ mkdir /var/www/dump978map/data
  1. Feed uat2json from dump978:
$ rtl_sdr -f 978000000 -s 2083334 -g 48 - | \
  ./dump978 | \
  ./uat2json /var/www/dump978map/data
  1. 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

dump978's People

Contributors

fasiha avatar mutability avatar toofishes avatar zaitcev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.