READSB(1)

๐Ÿ“ฆ
version 3.16 ยท 3 versions
, in ubuntu resolute, ubuntu stonking

๐Ÿ’– readsb(1) โ€” User Commands ๐Ÿ’–

okay bestie, pull up a chair ๐Ÿซถ because this is the manual page for readsb, version 3.16, compiled on 260209. it's giving "aircraft go brrr" and honestly? we're obsessed. ๐Ÿ’…


โœจ NAME โœจ

readsb โ€” the manual page for readsb version: 3.16 compiled on 260209 ๐Ÿ’–


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

readsb [OPTIONS...]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

readsb is your Mode-S/ADSB/TIS Receiver, periodt. ๐Ÿ‘‘

Build options that got baked into this build: ENABLE_RTLSDR ENABLE_BLADERF ENABLE_PLUTOSDR ENABLE_SOAPYSDR โœจ

okay so real talk, bestie: every option is listed below, and you're gonna wanna read the ones with defaults because those defaults are doing a lot of heavy lifting. no cap.

๐ŸŽ€ General options: ๐ŸŽ€

  • --lat=<lat> โ€” the reference/receiver surface latitude. where you at, literally. ๐Ÿ“
  • --lon=<lon> โ€” the reference/receiver surface longitude. the other half of where you at. ๐Ÿ“
  • --no-interactive โ€” disable interactive mode, just print to stdout.
  • --interactive-ttl=<sec> โ€” remove an aircraft from the list if it's been idle for <sec> (default: 60).
  • --modeac โ€” enable decoding of SSR Modes 3/A & 3/C.
  • --modeac-auto โ€” enable Mode A/C if requested by a Beast connection.
  • --max-range=<dist> โ€” the absolute maximum range for position decoding (in nm, default: 300).
  • --fix โ€” enable CRC single-bit error correction (this is the default, bestie).
  • --no-fix โ€” disable CRC single-bit error correction.
  • --no-fix-df โ€” disable CRC single-bit error correction on the DF type so you produce more DF17 messages (and yeah, disabling it reduces CPU usage).
  • --metric โ€” use metric units. ๐ŸŒ
  • --show-only=<addr> โ€” show only messages by the given ICAO on stdout.
  • --process-only=<addr> โ€” process only messages by the given ICAO.
  • --filter-DF=<type> โ€” when displaying decoded ModeS messages on stdout, only show this DF type.
  • --device-type=<type> โ€” select the SDR type. โš ๏ธ this one needs to be placed on the command line before any SDR type specific options, so don't be chaotic about it.
  • --gain=<db> โ€” set gain (default: auto gain, possible values for rtl-sdr devices: auto auto-verbose 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 58)
  • --freq=<hz> โ€” set frequency (default: 1090 MHz).
  • --interactive โ€” interactive mode, refreshing data on screen. implies --throttle.
  • --raw โ€” show only messages hex values.
  • --preamble-threshold=<40-400> โ€” lower threshold โ†’ more CPU usage (default: 58, pi zero / pi 1: 75, hot CPU 42).
  • --forward-mlat โ€” forward received beast mlat results to beast output ports.
  • --forward-mlat-sbs โ€” forward received mlat results to sbs output ports.
  • --stats โ€” print stats at exit. no other output whatsoever.
  • --stats-range โ€” collect/show the range histogram.
  • --stats-every=<sec> โ€” show and reset stats every <sec> seconds (rounded to the nearest 10 seconds due to implementation, first interval can be up to 5 seconds shorter).
  • --auto-exit=<sec> โ€” run for X seconds, then exit (default: run indefinitely).
  • --range-outline-hours=<hours> โ€” make the range outline retain data for the last X hours (float, default: 24.0).
  • --onlyaddr โ€” show only ICAO addresses.
  • --gnss โ€” show altitudes as GNSS when available.
  • --snip=<level> โ€” strip the IQ file, removing samples < level.
  • --debug=<flags> โ€” debug mode (verbose): n: network, P: CPR, S: speed check.
  • --devel=<mode> โ€” development debugging mode, see source for options, and it can be specified more than once.
  • --receiver-focus=<receiverId> โ€” only process messages from receiverId.
  • --cpr-focus=<hex> โ€” show CPR details for this hex.
  • --leg-focus=<hex> โ€” show leg marking details for this hex.
  • --trace-focus=<hex> โ€” show traceAdd details for this hex.
  • --quiet โ€” disable output (default).
  • --write-json=<dir> โ€” periodically write json output to <dir>.
  • --write-prom=<file> โ€” periodically write prometheus output to <file>.
  • --write-globe-history=<dir> โ€” write traces to this directory, 1 gz compressed json per day and airframe. ๐Ÿ—‚๏ธ
  • --write-state=<dir> โ€” write state to disk so you have traces after a restart.
  • --write-state-every=<seconds> โ€” continuously write state to disk every X seconds (default: 3600).
  • --write-state-only-on-exit โ€” don't continuously update state.
  • --heatmap-dir=<dir> โ€” change the directory where heatmaps are saved (default is in the globe history dir).
  • --heatmap=<interval in seconds> โ€” make Heatmap, each aircraft at most every interval seconds (creates historydir/heatmap.bin and exits after that). ๐Ÿ”ฅ
  • --dump-beast=<dir>,<interval>,<compressionLevel> โ€” dump compressed beast files to this directory, start a new file every interval seconds.
  • --write-json-every=<sec> โ€” write json output and update API json every sec seconds (default 1).
  • --json-location-accuracy=<n> โ€” accuracy of receiver location: 0: no location / internal use only, 1: 2 decimals, 2: exact (default), 3: 1 decimal, 4: 0 decimals.
  • --ac-hash-bits=<n> โ€” main hash map size: 2^n entries (default: AIRCRAFT_HASH_BITS).
  • --write-json-globe-index โ€” write specially indexed globe_xxxx.json files (for tar1090).
  • --write-receiver-id-json โ€” write receivers.json.
  • --json-trace-interval=<seconds> โ€” interval after which a new position will guaranteed be written to the trace and the json position output (default: 30).
  • --json-trace-hist-only=1,2,3,8 โ€” don't write recent(1), full(2), either(3) traces to /run, only archive via write-globe-history (8: irregularly write limited traces to run, subject to change).
  • --full-trace-dir=<dir> โ€” when using globe-index, write full traces to this directory instead of the --write-json dir (typically /run/readsb); this can be used to reduce memory usage at the cost of roughly 100 IOPS for global traffic.
  • --write-json-gzip โ€” write aircraft.json also as aircraft.json.gz.
  • --write-json-binCraft-only=<n> โ€” use only binary binCraft format for globe files (1), for aircraft.json as well (2).
  • --write-binCraft-old โ€” write old gzipped binCraft files.
  • --json-reliable=<n> โ€” minimum position reliability to put it into json (default: 1, globe options will default set this to 2, disable speed filter: -1, max: 4).
  • --position-persistence=<n> โ€” position persistence against outliers (default: 4), incremented by json-reliable minus 1.
  • --jaero-timeout=<n> โ€” how long in minutes JAERO positions remain valid and on the map in tar1090 (default: 33).
  • --db-file=<file.csv.gz> โ€” default: "none" (as of writing a compatible file is available here: https://github.com/wiedehopf/tar1090-db/tree/csv).
  • --db-file-lt โ€” aircraft.json: add long type as field desc, add field ownOp for the owner, add field year.

๐Ÿ’œ Network options: ๐Ÿ’œ

  • --net-connector=<ip,port,protocol> โ€” establish a connection, and yeah it can be specified multiple times (e.g. 127.0.0.1,23004,beast_out). Protocols: beast_out, beast_in, raw_out, raw_in, sbs_in, sbs_in_jaero, sbs_out, sbs_out_jaero, vrs_out, json_out, gpsd_in, uat_in, uat_replay_out, planefinder_in, asterix_in, asterix_out (one failover ip/address,port can be specified: primary-address,primary-port,protocol,failover-address,failover-port) (any position in the comma separated list can also be either silent_fail or uuid=<uuid>). she's flexible. ๐Ÿ’…
  • --net โ€” enable networking.
  • --net-only โ€” legacy option, enable networking, use --net instead.
  • --net-bind-address=<ip> โ€” IP address to bind to (default: Any; use 127.0.0.1 for private).
  • --net-bo-port=<ports> โ€” TCP Beast output listen ports (default: 0).
  • --net-bi-port=<ports> โ€” TCP Beast input listen ports (default: 0).
  • --net-ro-port=<ports> โ€” TCP raw output listen ports (default: 0).
  • --net-ri-port=<ports> โ€” TCP raw input listen ports (default: 0).
  • --net-uat-replay-port=<ports> โ€” UAT replay output listen ports (default: 0).
  • --net-uat-in-port=<ports> โ€” UAT input listen ports (default: 0).
  • --net-sbs-port=<ports> โ€” TCP BaseStation output listen ports (default: 0).
  • --net-sbs-in-port=<ports> โ€” TCP BaseStation input listen ports (default: 0).
  • --net-sbs-jaero-port=<ports> โ€” TCP SBS Jaero output listen ports (default: 0).
  • --net-sbs-jaero-in-port=<ports> โ€” TCP SBS Jaero input listen ports (default: 0).
  • --net-asterix-out-port=<ports> โ€” TCP Asterix output listen ports (default: 0).
  • --net-asterix-in-port=<ports> โ€” TCP Asterix input listen ports (default: 0).
  • --net-asterix-reduce โ€” apply beast reduce logic and interval to ASTERIX outputs.
  • --net-vrs-port=<ports> โ€” TCP VRS json output listen ports (default: 0).
  • --net-vrs-interval=<seconds> โ€” TCP VRS json output interval (default: 5.0).
  • --net-json-port=<ports> โ€” TCP json position output listen ports, sends one line with a json object containing aircraft details for every position received (default: 0) (consider raising --net-ro-size to 8192 for less fragmentation if this is a concern).
  • --net-json-port-interval=<seconds> โ€” set minimum interval between outputs per aircraft for TCP json output, default: 0.0 (every position).
  • --net-json-port-include-noposition โ€” TCP json position output: include aircraft without position (state is sent for aircraft for every DF11 with CRC if the aircraft hasn't sent a position in the last 10 seconds and interval allowing).
  • --net-api-port=<port> โ€” TCP API listen port (in contrast to other listeners, only a single port is allowed) (update frequency controlled by write-json-every parameter) (default: 0).
  • --api-shutdown-delay=<seconds> โ€” shutdown delay to server remaining API queries, new queries get a 503 response (default: 0).
  • --tar1090-use-api โ€” when running with globe-index, signal tar1090 to use the readsb API to get data; requires webserver mapping of /tar1090/re-api to proxy_pass the requests to the --net-api-port, see nginx-readsb-api.conf in the tar1090 repository for details.
  • --net-beast-reduce-out-port=<ports> โ€” TCP BeastReduce output listen ports (default: 0).
  • --net-beast-reduce-interval=<seconds> โ€” BeastReduce data update interval, longer means less data (default: 0.250, valid range: 0.000 - 14.999).
  • --net-beast-reduce-optimize-for-mlat โ€” BeastReduce output: keep all messages relevant to mlat-client.
  • --net-beast-reduce-filter-dist=<distance in nmi> โ€” beast-reduce: remove aircraft which are further than distance from the receiver.

okay and we're not done yet bestie, this page keeps going ๐Ÿ’€ โ€” more parts coming. ๐Ÿฆ‹

  • --net-beast-reduce-filter-alt=<pressure altitude in ft> โ€” the beast-reduce filter that yeets any aircraft flying above that altitude out of the feed. bye bestie ๐Ÿ’…
  • --net-sbs-reduce โ€” applies the beast reduce logic and interval to SBS outputs too โœจ
  • --net-receiver-id โ€” forward the receiver ID ๐ŸŽ€
  • --net-ingest โ€” marks this node as the primary ingest node ๐Ÿ‘‘
  • --net-garbage=<ports> โ€” times out receivers, and spits out messages from those timed-out receivers as beast on <ports> ๐Ÿ’€
  • --decode-threads=<n> โ€” how many decode threads you want, and it's either 1 or 2 (default: 1). Only reach for 2 when you're pushing beast traffic > 200 MBit/s โ€” you get expect 1.4x speedup for 2x CPU ๐Ÿซ 
  • --uuid-file=<path> โ€” path to the UUID file ๐Ÿฆ‹
  • --net-ro-size=<size> โ€” TCP output flush size, aka the maximum amount of internally buffered data before it gets written to the network (default: 1280) ๐ŸŒธ
  • --net-ro-interval=<seconds> โ€” TCP output flush interval, in seconds โ€” the maximum delay between data landing in the output buffer and it actually being sent (default: 0.05, valid values 0.0 - 1.0) โฐ
  • --net-ro-interval-beast-reduce=<seconds> โ€” same deal, TCP output flush interval in seconds, but for beast-reduce outputs (default: whatever value came from --net-ro-interval, valid values 0.0 - 1.0) ๐Ÿ’œ
  • --net-connector-delay=<seconds> โ€” outbound re-connection delay (default: 15) ๐Ÿ”Œ
  • --net-heartbeat=<rate> โ€” TCP heartbeat rate in seconds (default: 60 sec; 0 to disable) ๐Ÿ’“
  • --net-buffer=<n> โ€” controls some buffer sizes: 8KB * (2^n) (default: n=1, 16KB) ๐Ÿงบ
  • --net-verbatim โ€” forwards messages unchanged, no edits no notes, straight through ๐Ÿ“จ
  • --sdr-buffer-size=<KiB> โ€” SDR buffer / USB transfer size in kibibytes (default: 256, which is equivalent to around 54 ms using rtl-sdr โ€” heads up, this option might be ignored in future versions) ๐Ÿ™ˆ

โœจ RTL-SDR options โœจ

use with --device-type rtlsdr

  • --device=<index|serial> โ€” pick your device by index or serial number ๐Ÿ’ซ
  • --enable-agc โ€” enable digital AGC (not tuner AGC, keep those vibes separate bestie) ๐ŸŽš๏ธ
  • --ppm=<correction> โ€” set the oscillator frequency correction in PPM ๐ŸŽฏ

๐ŸŒˆ BladeRF options ๐ŸŒˆ

use with --device-type bladerf

  • --device=<ident> โ€” pick your device by bladeRF 'device identifier' ๐Ÿฆ‹
  • --bladerf-fpga=<path> โ€” use an alternative FPGA bitstream ('' to disable FPGA load) ๐Ÿงฉ
  • --bladerf-decimation=<N> โ€” assume the FPGA decimates by a factor of N ๐Ÿ“‰
  • --bladerf-bandwidth=<hz> โ€” set LPF bandwidth ('bypass' to bypass the LPF) ๐ŸŽ›๏ธ

๐ŸŽ€ HackRF options ๐ŸŽ€

use with --device-type hackrf

  • --device=<ident> โ€” pick your device by serial number ๐Ÿ”–
  • --hackrf-enable-ampgain โ€” enable amp gain (RF stage) (~11 dB) (default: disabled) ๐Ÿ”ฅ
  • --hackrf-vgagain=<db> โ€” set gain (baseband stage) (default: 48, valid: 0-62, 2 dB steps) ๐Ÿ“ถ

๐Ÿ‘‘ Modes-S Beast options ๐Ÿ‘‘

use with --device-type modesbeast:

  • --beast-serial=<path> โ€” path to Beast serial device (default /dev/ttyUSB0) ๐Ÿ”Œ
  • --beast-df1117-on โ€” turn ON the DF11/17-only filter โœ…
  • --beast-mlat-off โ€” turn OFF MLAT time stamps โฑ๏ธ
  • --beast-crc-off โ€” turn OFF CRC checking ๐Ÿงพ
  • --beast-df045-on โ€” turn ON DF0/4/5 filter โœ…
  • --beast-fec-off โ€” turn OFF forward error correction ๐Ÿšซ
  • --beast-modeac โ€” turn ON mode A/C ๐Ÿ…ฐ๏ธ
  • --beast-baudrate=<baud> โ€” override the baudrate (default rate 3000000 baud, try 1000000 / 921600 as alternatives) ๐ŸŽ๏ธ

๐Ÿฆ‹ GNS HULC options ๐Ÿฆ‹

use with --device-type gnshulc:

Beast binary and HULC protocol input with hardware handshake enabled. ๐Ÿค

  • --beast-serial=<path> โ€” path to GNS HULC serial device (default /dev/ttyUSB0) ๐Ÿ”Œ

๐Ÿ’œ ifile-specific options ๐Ÿ’œ

use with --device-type ifile:

  • --ifile=<path> โ€” read samples from the given file ('-' for stdin) ๐Ÿ“‚
  • --iformat=<type> โ€” set the sample format (UC8, SC16, SC16Q11) ๐Ÿงฎ
  • --throttle โ€” process samples at the original capture speed ๐Ÿข

โญ ADALM-Pluto SDR options โญ

use with --device-type plutosdr

  • --pluto-uri=<USB uri> โ€” create a USB context from this URI. (eg. usb:1.2.5) ๐Ÿ”—
  • --pluto-network=<hostname or IP> โ€” hostname or IP to create networks context. (default pluto.local) ๐ŸŒ

๐ŸŒธ SoapySDR options ๐ŸŒธ

use with --device-type soapysdr

  • --soapy-device=<ident> โ€” pick your device by SoapySDR key pair (ex. driver=lime) ๐Ÿ‹
  • --soapy-antenna=<channel> โ€” select an antenna ๐Ÿ“ก
  • --soapy-bandwidth=<bandwith> โ€” select bandwidth ๐ŸŽš๏ธ
  • --soapy-enable-agc โ€” enable AGC โœจ
  • --soapy-gain-element=<gain> โ€” set SoapySDR gain element ๐ŸŽ›๏ธ

๐Ÿ’… Help options ๐Ÿ’…

  • --help โ€” give this help list ๐Ÿ†˜
  • --usage โ€” give a short usage message ๐Ÿ“

๐Ÿซถ Credits ๐Ÿซถ

No cap, this thing stands on the shoulders of absolute legends, and we are obsessed:

  • antirez (original dump1090)
  • Malcom Robb (work on his dump1090 fork)
  • mutability (forked to dump1090-mutability and further to dump1090-fa)
  • Mictronics (readsb as a fork of dump1090-fa)
  • wiedehopf (this fork of Mictronics readsb)

๐Ÿ˜ญ REPORTING BUGS ๐Ÿ˜ญ

Found a bug? Do not suffer in silence bestie, report bugs to Matthias Wirth <matthias.wirth@gmail.com> ๐Ÿ’Œ


okay that's the whole page, we ate and left no crumbs ๐Ÿ’… readsb version 3.16, compiled... February 2026, and it goes by READSB(1) if you need to cite it in your essay ๐ŸŽ€ byeee ๐Ÿซถ

๐Ÿ“ฆ where this page comes from