Major changes:
Try to error-correct all messages that potentially could be DF11/17/18
even if the original DF value is different. This allows messages with
correctable damage in the first 5 bits to be correctable.
Track recently-seen DF18 addresses separately to DF17 addresses.
DF18 does not imply Mode S support, so we don't want to treat it like
a known Mode S emitter, but once we've heard some DF18 for an aircraft
we can be more confident about future DF18 messages for the same
address.
Rework the scoring system so it's just a big enum that lists all the
possible outcomes in the order that we want. This makes the relative
ordering of different messages clearer, and makes it easier to move
messages above/below the accept thresholds as needed.
Don't accept 2-bit-error-corrected messages that are from aircraft we
have not previously seen. This greatly reduces the number of garbage
messages when using 2-bit error correction.
Overall results are:
* more CPU required for decoding (approx 30% increase in my tests)
as we're doing a lot more speculative CRC-checking work
* no significant change to message rates with error correction off
* about 5% more 1-bit-corrected DF17 decodes, with a
disproportionate increase in those messages contributing to
successful position decodes / unique aircraft counts
* _fewer_ decodes with 2-bit correction (versus old code with 2-bit
correction), but the message quality is substantially improved,
the rate of garbage decodes / phantom aircraft is greatly reduced
sample stats:
1-bit correction, old code:
141158 total usable messages
137852 accepted with correct CRC
3306 accepted with 1-bit error repaired
27446 DF17 messages
51 unique aircraft tracks
1-bit correction, new code:
141296 total usable messages
137854 accepted with correct CRC
3442 accepted with 1-bit error repaired
27528 DF17 messages
55 unique aircraft tracks
2-bit correction, old code:
142656 total usable messages
137809 accepted with correct CRC
3283 accepted with 1-bit error repaired
1564 accepted with 2-bit error repaired
28803 DF17 messages
349 unique aircraft tracks (<- note that most of these are garbage)
2-bit correction, new code:
142426 total usable messages
137822 accepted with correct CRC
3420 accepted with 1-bit error repaired
1184 accepted with 2-bit error repaired
28666 DF17 messages
55 unique aircraft tracks
|
||
|---|---|---|
| bladerf | ||
| compat | ||
| cpu_features | ||
| debian | ||
| debian-jessie | ||
| debian-stretch | ||
| dsp | ||
| oneoff | ||
| public_html | ||
| starch | ||
| testfiles | ||
| tools | ||
| wisdom | ||
| .gitattributes | ||
| .gitignore | ||
| .travis.yml | ||
| COPYING | ||
| Jenkinsfile | ||
| LICENSE | ||
| Makefile | ||
| Makefile.cpufeatures | ||
| README-json.md | ||
| README.md | ||
| ais_charset.c | ||
| ais_charset.h | ||
| anet.c | ||
| anet.h | ||
| comm_b.c | ||
| comm_b.h | ||
| convert.c | ||
| convert.h | ||
| cpr.c | ||
| cpr.h | ||
| cprtests.c | ||
| cpu.c | ||
| cpu.h | ||
| crc.c | ||
| crc.h | ||
| demod_2400.c | ||
| demod_2400.h | ||
| dsp-types.h | ||
| dump1090.c | ||
| dump1090.h | ||
| faup1090.c | ||
| fifo.c | ||
| fifo.h | ||
| icao_filter.c | ||
| icao_filter.h | ||
| interactive.c | ||
| mode_ac.c | ||
| mode_s.c | ||
| mode_s.h | ||
| net_io.c | ||
| net_io.h | ||
| prepare-build.sh | ||
| sdr.c | ||
| sdr.h | ||
| sdr_bladerf.c | ||
| sdr_bladerf.h | ||
| sdr_hackrf.c | ||
| sdr_hackrf.h | ||
| sdr_ifile.c | ||
| sdr_ifile.h | ||
| sdr_limesdr.c | ||
| sdr_limesdr.h | ||
| sdr_rtlsdr.c | ||
| sdr_rtlsdr.h | ||
| stats.c | ||
| stats.h | ||
| track.c | ||
| track.h | ||
| util.c | ||
| util.h | ||
| view1090.c | ||
| wisdom.aarch64 | ||
| wisdom.arm | ||
| wisdom.generic | ||
| wisdom.x86 | ||
README.md
dump1090-fa Debian/Raspbian packages
dump1090-fa is a ADS-B, Mode S, and Mode 3A/3C demodulator and decoder that will receive and decode aircraft transponder messages received via a directly connected software defined radio, or from data provided over a network connection.
It is the successor to dump1090-mutability and is maintained by FlightAware.
It can provide a display of locally received aircraft data in a terminal or via a browser map. Together with PiAware it can be used to contribute crowd-sourced flight tracking data to FlightAware.
It is designed to build as a Debian package, but should also be buildable on many other Linux or Unix-like systems.
Building under buster
$ sudo apt-get install build-essential debhelper librtlsdr-dev pkg-config dh-systemd libncurses5-dev libbladerf-dev libhackrf-dev liblimesuite-dev
$ dpkg-buildpackage -b --no-sign
Building under stretch
$ sudo apt-get install build-essential debhelper librtlsdr-dev pkg-config dh-systemd libncurses5-dev libbladerf-dev
$ dpkg-buildpackage -b --no-sign
Building under jessie
Dependencies - bladeRF
You will need a build of libbladeRF. You can build packages from source:
$ git clone https://github.com/Nuand/bladeRF.git
$ cd bladeRF
$ git checkout 2017.12-rc1
$ dpkg-buildpackage -b
Or Nuand has some build/install instructions including an Ubuntu PPA at https://github.com/Nuand/bladeRF/wiki/Getting-Started:-Linux
Or FlightAware provides armhf packages as part of the piaware repository; see https://flightaware.com/adsb/piaware/install
Dependencies - rtlsdr
This is packaged with jessie. sudo apt-get install librtlsdr-dev
Actually building it
Nothing special, just build it (dpkg-buildpackage -b)
Building with limited dependencies
The package supports some build profiles to allow building without all required SDR libraries being present. This will produce a package with limited SDR support only.
Pass --build-profiles to dpkg-buildpackage with a comma-separated list of
profiles. The list of profiles should include custom and zero or more of
rtlsdr, bladerf, hackrf, limesdr depending on what you want:
$ dpkg-buildpackage -b --no-sign --build-profiles=custom,rtlsdr # builds with rtlsdr support only
$ dpkg-buildpackage -b --no-sign --build-profiles=custom,rtlsdr,bladerf # builds with rtlsdr and bladeRF support
$ dpkg-buildpackage -b --no-sign --build-profiles=custom # builds with _no_ SDR support (network support only)
Building manually
You can probably just run "make" after installing the required dependencies. Binaries are built in the source directory; you will need to arrange to install them (and a method for starting them) yourself.
make BLADERF=no will disable bladeRF support and remove the dependency on
libbladeRF.
make RTLSDR=no will disable rtl-sdr support and remove the dependency on
librtlsdr.
make HACKRF=no will disable HackRF support and remove the dependency on
libhackrf.
make LIMESDR=no will disable LimeSDR support and remove the dependency on
libLimeSuite.
Building on OSX
Minimal testing on Mojave 10.14.6, YMMV.
$ brew install librtlsdr
$ brew install libbladerf
$ brew install hackrf
$ brew install pkg-config
$ make
Building on FreeBSD
Minimal testing on 12.1-RELEASE, YMMV.
# pkg install gmake
# pkg install pkgconf
# pkg install rtl-sdr
# pkg install bladerf
# pkg install hackrf
$ gmake