dump1090_rs
dump1090_rs copied to clipboard
Multi-SDR supported Rust translation of the popular dump1090 project for ADS-B demodulation
dump1090_rs
Demodulate a ADS-B signal from a software defined radio device tuned at 1090mhz and forward the bytes to applications such as adsb_deku/radar.
See quickstart-guide for a quick installation guide.
See rsadsb-v0.5.0 for latest major release details.
Tested Support
Through the use of the rust-soapysdr project,
we support many different software defined radio devices.
If you have tested this project on devices not listed below, let me know!
(you will need to add gain settings to config.toml or use --custom-config)
| Device | Supported/Tested | Recommend | argument |
|---|---|---|---|
| rtlsdr | x | x | --driver rtlsdr |
| HackRF | x | --driver hackrf |
|
| uhd(USRP) | x | --driver uhd |
Usage
Minimum Supported Rust Version: 1.63.0
Build
Install soapysdr drivers and library and libclang-dev.
Note
Using debug builds will result in SDR overflows, always using --release for production.
Ubuntu
> apt install libsoapysdr-dev libclang-dev
Cross Compile
Use hub.docker.com/r/rsadsb for cross compiling to the following archs.
These images already have soapysdr installed with the correct cross compilers.
This uses cross-rs.
> cargo install cross
> cross build --workspace --target x86_64-unknown-linux-gnu --relese
# Used for example in Raspberry Pi (raspios) 32 bit
> cross build --workspace --target armv7-unknown-linux-gnueabihf --release
# Used for example in Raspberry Pi (raspios) 64 bit
> cross build --workspace --target aarm64-unknown-linux-gnu --release
Release Builds from CI
Check the latest release for binaries built from the CI.
Run
Run the software using the default rtlsdr.
> cargo r --release
help
See --help for detailed information.
dump1090_rs 0.5.1
wcampbell0x2a
ADS-B Demodulator and Server
USAGE:
dump1090_rs [OPTIONS]
OPTIONS:
--custom-config <CUSTOM_CONFIG> Filepath for config.toml file overriding or adding sdr config values for soapysdr
--driver <DRIVER> Soapysdr driver name (sdr device) from default `config.toml` or `--custom-config` [default: rtlsdr]
-h, --help Print help information
--host <HOST> Ip Address to bind with for client connections [default: 127.0.0.1]
--port <PORT> Port to bind with for client connections [default: 30002]
-V, --version Print version information
Performance tricks
To enable maximum performance, instruct rustc to use features specific to your cpu.
> RUSTFLAGS="-C target-cpu=native" cargo r --release
Always use the latest rust releases including nightly, currently this gives around a 5-10% performance boost.
Testing
> cargo t --workspace --release
Benchmark
Reading from a 512KB iq sample to ADS-B bytes takes ~3.0 ms, but feel free to run benchmarks on your own computer.
> RUSTFLAGS="-C target-cpu=native" cargo bench --workspace
Intel i7-7700K CPU @ 4.20GHz
stable (rustc 1.62.0 (a8314ef7d 2022-06-27))
01 time: [3.0255 ms 3.0315 ms 3.0391 ms]
02 time: [2.9595 ms 2.9647 ms 2.9710 ms]
03 time: [2.8904 ms 2.8931 ms 2.8960 ms]
nightly (rustc 1.64.0-nightly (87588a2af 2022-07-13))
01 time: [3.0763 ms 3.0919 ms 3.1202 ms]
02 time: [3.0075 ms 3.0113 ms 3.0157 ms]
03 time: [2.9437 ms 2.9465 ms 2.9495 ms]
Changes
See CHANGELOG.md