* Switch all conversion routines to use starch.
main user-visible changes:
* ensure you check out submodules ('git clone --recurse-submodules")
* --version shows the CPU features and DSP implementations in use
* --wisdom allows overriding of the built-in architecture wisdom
* --dcfilter no longer supported
* "starch-benchmark" binary will benchmark all options on the
current machine and can produce a wisdom file to feed to
the --wisdom option
If you have a usecase for --dcfilter, please get in touch and
let me know - it's an edge case and for now there's no starch/DSP
support for it, but support can be written if needed.
In almost all cases the new conversion routines are slightly or
substantially faster than the old conversion routines. The only case
that is slower is SC16/SC16Q11 on a Pi 0, which is around 10% slower
due to changing from heavily approximated lookup tables to higher
quality results (but SC16 is probably already out of reach of a Pi 0)
* No need to build with SC16Q11_TABLE_BITS any more
* Add oneoff/uc8_capture_stats
(reads a UC8 capture; measures min/max/mean I and Q)
* Switch UC8 conversion to 127.4 center, 128 range.
Looking at actual UC8 captures from a RTL2832, the mean I and Q
are actually at 127.4, so use that as the zero point.
This means that the resulting I/Q maximum values could be as large as
127.6. Switch to 128 for simplicity.
* Switch to the new UC8 zero offset in benchmarks, fix some bugs
* Fix some bugs in SC16/SC16Q11 validation, tighten the max error requirements
* Ditch UC8 approximation path, add a NEON VRQSQRTE path.
* Tweak the SC16 exact path, add a new impl that uses a mix of
u32 & floats.
* SC16Q11 impl tweaks:
* add a u32->float exact path
* ditch the approximation path
* add a NEON VRSQRTE path
* add a 12-bit table path (using the full signed I/Q value, not absolute value)
* Ditch SC16 approximation path, add NEON vrsqrte path
* Add oneoff/dsp_error_measurement
This runs sample input through the DSP functions that are
allowed to be inexact and dumps the results as a TSV suitable for
feeding to gnuplot to look at the actual errors.
* Update make clean, make wisdom targets
* Update wisdom based on benchmarking
* Preserve the raw wisdom benchmark data
* Update to latest starch
* Update .gitignore for new wisdom files
* Update starch generated code
* Build starch-benchmark as part of the 'all' target
* Use wisdom from /etc/dump1090-fa/wisdom.local if present
* Package starch-benchmark and a helper script to generate local wisdom data
* Remove submodules in preparation for importing them directly
* Import cpu_features v0.6.0 from https://github.com/google/cpu_features/releases/tag/v0.6.0
* Import starch at commit a725c8491dc33a321565d451b385131e589d8490
from https://github.com/flightaware/starch
|
||
|---|---|---|
| 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.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