READSB(1)
๐ 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:1090MHz).--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 CPU42).--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 nearest10seconds due to implementation, first interval can be up to5seconds 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 fromreceiverId.--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,1gz 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 (createshistorydir/heatmap.binand 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 (default1).--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^nentries (default:AIRCRAFT_HASH_BITS).--write-json-globe-indexโ write specially indexedglobe_xxxx.jsonfiles (for tar1090).--write-receiver-id-jsonโ writereceivers.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-jsondir (typically/run/readsb); this can be used to reduce memory usage at the cost of roughly100IOPS for global traffic.--write-json-gzipโ writeaircraft.jsonalso asaircraft.json.gz.--write-json-binCraft-only=<n>โ use only binary binCraft format for globe files (1), foraircraft.jsonas 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 to2, disable speed filter:-1, max:4).--position-persistence=<n>โ position persistence against outliers (default:4), incremented by json-reliable minus1.--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 fielddesc, add fieldownOpfor the owner, add fieldyear.
๐ 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 eithersilent_failoruuid=<uuid>). she's flexible. ๐--netโ enable networking.--net-onlyโ legacy option, enable networking, use--netinstead.--net-bind-address=<ip>โ IP address to bind to (default:Any; use127.0.0.1for 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-sizeto8192for 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 last10seconds 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 a503response (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-apitoproxy_passthe requests to the--net-api-port, seenginx-readsb-api.confin 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 either1or2(default:1). Only reach for2when 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 values0.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 values0.0-1.0) ๐--net-connector-delay=<seconds>โ outbound re-connection delay (default:15) ๐--net-heartbeat=<rate>โ TCP heartbeat rate in seconds (default:60sec;0to 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 ofN๐--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 dBsteps) ๐ถ
๐ 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 rate3000000baud, try1000000/921600as 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. (defaultpluto.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
- ubuntu resolute: readsb 3.16-2build1 ยท BSD-3-Clause OR GPL-2.0-or-later
- ubuntu stonking: readsb 3.16-2build1 ยท BSD-3-Clause OR GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms