dump1090 decoder with High Precision Timestamping (http://eprints.networks.imdea.org/1768/)
Permalink
Failed to load latest commit information.
Deps multi-threading high precision TOA added Apr 5, 2018
cmake/Modules multi-threading high precision TOA added Apr 5, 2018
compat fixed a tiny change to an #ifndef comment Mar 31, 2016
debian Revise init script to follow Debian interpretation of LBS standards -… Feb 9, 2017
hp-toa integrated hptoa in raw/beast output #3 Sep 11, 2018
public_html Remove wac, add helicopter instead. WAC no longer supported by chartb… Oct 19, 2017
tools Add a port-30003 regression diff script. Oct 2, 2016
.gitattributes Compress vrs.csv since it's basically readonly. Sep 10, 2016
.gitignore Rebuild a basic faup1090 using the reworked network services bits. Jun 26, 2015
.travis.yml Add fakeroot to travis build (not sure why this broke) Jan 10, 2018
CMakeLists.txt multi-threading high precision TOA added Apr 5, 2018
COPYING GPL. Jan 20, 2015
LICENSE GPL. Jan 20, 2015
README-dump1090.md GPL. Jan 20, 2015
README-json.md More CPR stats. Feb 19, 2015
README.md networks issue causing crashes Apr 6, 2018
anet.c IPv6 support (in theory). Feb 16, 2016
anet.h IPv6 support (in theory). Feb 16, 2016
convert.c Always measure noise power, silently ignore --measure-noise if given. May 31, 2016
convert.h Always measure noise power, silently ignore --measure-noise if given. May 31, 2016
cpr.c Fix decoding of even lat=0 + odd lat=0 which can have 3 results (-90,… Aug 17, 2015
cpr.h Import CPR changes from experimental branch. Jan 20, 2015
cprtests.c Fix some format strings that pass an unsigned int but use %d Apr 5, 2016
crc.c Add some testing code that looks for ambiguous syndromes that Jan 23, 2015
crc.h CRC reimplementation to be byte-at-a-time table-driven. Jan 20, 2015
demod_2400.c multi-threading high precision TOA added Apr 5, 2018
demod_2400.h Experimental 2.4MHz Mode A/C demodulator. Mar 20, 2016
dump1090.c multi-threading high precision TOA added Apr 5, 2018
dump1090.h multi-threading high precision TOA added Apr 5, 2018
faup1090.c Don't touch the GPS setting (I had it backwards anyway). Jul 13, 2016
icao_filter.c Don't hang if the ICAO hashtable fills up. May 30, 2015
icao_filter.h icao_filter.[ch] from the experimental branch. Jan 20, 2015
interactive.c Adjust precision of feet -> meters conversion Oct 22, 2016
mode_ac.c WIP big rewrite of message decoding / aircraft tracking. Aug 27, 2016
mode_s.c integrated hptoa in raw/beast output #3 Sep 11, 2018
mode_s.h multi-threading high precision TOA added Apr 5, 2018
net_io.c integrated hptoa in raw/beast output #3 Sep 11, 2018
net_io.h Support multiple listening ports per listener type. Jan 24, 2016
stats.c Disable the internal webserver at build time. Jul 10, 2016
stats.h Disable the internal webserver at build time. Jul 10, 2016
track.c Track CPR encoding type directly rather than inferring it from airgro… Oct 1, 2016
track.h Track CPR encoding type directly rather than inferring it from airgro… Oct 1, 2016
util.c uint64_t (even at 12MHz) isn't going to overflow any time soon, don't… Feb 8, 2015
util.h uint64_t (even at 12MHz) isn't going to overflow any time soon, don't… Feb 8, 2015
view1090.c Add --max-range to view1090, use the same defaults as dump1090. Aug 26, 2016

README.md

dump1090-hptoa

This is a fork of Mutability's version of dump1090 that adds a novel method to compute high-precision Time-of-Arrival (ToA) timestamps of the Mode S / ADS-B packets. The actual precision is in the order of a few nanoseconds, depending on the packet strength. Original README

This version is licensed under the GPL (v2 or later). See the file COPYING for details.

This new version is based on the work named 'Nanosecond-precision Time-of-Arrival Estimation for Aircraft Signals with low-cost SDR Receivers' published in ACM/IEEE IPSN 2018 conference and made by Roberto Calvo-Palomino, Fabio Ricciato, Blaz Repas, Domenico Giustiniano, Vincent Lenders.

Precise Time-of-Arrival (TOA) estimations of aircraft and drone signals are important for a wide set of applications including aircraft/drone tracking, air traffic data verification, or self-localization. Our focus in this work is on TOA estimation methods that can run on low-cost software-defined radio (SDR) receivers, as widely deployed in Mode S / ADS-B crowdsourced sensor networks such as the OpenSky Network. We evaluate experimentally classical TOA estimation methods which are based on a cross-correlation with a reconstructed message template and find that these methods are not optimal for such signals. We propose two alternative methods that provide superior results for real-world Mode S / ADS-B signals captured with low-cost SDR receivers. The best method achieves a standard deviation error of 1.5 ns.

Features

  • High Precision Time-of-Arrival (ToA) timestamps for Mode-S packets.
  • Upsampling performs in the GPU (root is needed).
  • A free-lock system queue (based on moodycamel) to parallelize message processing.
  • Tested in extensively RaspberryPi-3 model B.
  • Compilation process integrated with cmake.

How to run

This new version adds a new parameter to enable the high precision timestamp method.

--enable-hptoa <method>  Enable High Precision TimeStamping: PeakPulse (default), CorrPulse or None
  • PeakPulse: The default method with lower computation cost (no correlations are performed, only upsampling). The maximum message rate supported on RaspberryPi-3 model B on RPi 3 is estimated to be c.ca 2000 msg/sec. We strongly recommend to use this method.

  • CorrPulse: Alternative method, slightly more precise than the previous one, but heavier on computation resources (CPU, memory). The maximum message rate supported on RaspberryPi-3 model B on RPi 3 is estimated around 700 msg/sec. This option is provided to support future testing and research, we do not recommend to use it for production deployments.

  • None: No high-precision timestamp computed, fallback to the legacy timestamp of the mutability version.

The detailed description of both methods can be found on the paper: 'Nanosecond-precision Time-of-Arrival Estimation for Aircraft Signals with low-cost SDR Receivers'

Run as root

Since the high precision timestamp estimation requires FFT/IFFT computation in the GPU, it is needed to run dump1090 process as root. This applies to both PeakPulse and CorrPulse method.

sudo dump1090 --enable-hptoa PeakPulse --interactive