Skip to content

Directional ADS-B (1090 MHz)

ADS-B (Automatic Dependent Surveillance-Broadcast) operates at 1090 MHz. Aircraft continuously broadcast their GPS-derived position, altitude, velocity, and identification in short 112-microsecond bursts called Extended Squitters. These are unencrypted, omnidirectional, and received by anyone with a compatible receiver.

Standard ADS-B ground stations use omnidirectional or vertically polarized collinear antennas and achieve typical reception ranges of 150-200 nautical miles, limited by line of sight and receiver sensitivity. A directional antenna pointed at a specific sector of sky trades coverage breadth for range — the dish gain extends detection in the pointing direction while rejecting signals from elsewhere.

This experiment uses the dish not to track individual aircraft (dump1090 handles that fine with a simple antenna) but as a measurement tool: mapping how reception range varies with direction, using aircraft at known positions as calibration sources for the positioner’s pointing accuracy, and detecting aircraft that are invisible to omnidirectional setups.

Why aircraft make good calibration targets

Section titled “Why aircraft make good calibration targets”

An aircraft broadcasting ADS-B provides three things simultaneously: a known position (from its GPS-derived latitude, longitude, and altitude), a known frequency (1090 MHz), and a relatively constant transmit power. This combination makes aircraft function as cooperative calibration sources scattered across the sky. Unlike satellites (which require TLE propagation and have uncertain transmit patterns), an ADS-B-equipped aircraft tells you exactly where it is at the moment you receive its signal.

ParameterValueNotes
Aircraft EIRP~21 dBW (125 W)Typical ADS-B transponder into omni antenna
Range (standard)~200 NM / 370 kmOmnidirectional ground station
Range (target)~400 NM / 740 kmWith dish gain, line-of-sight permitting
Free-space path loss (370 km)~144 dBAt 1090 MHz
Free-space path loss (740 km)~150 dBAt 1090 MHz, doubled range
Dish gain (est.)~10 dBiThe dish is only ~3 wavelengths across at 1090 MHz
LNA noise figure1.0 dBFiltered 1090 MHz LNA
Gain advantage over omni~8 dBDirectional vs. 2 dBi omni whip

At 1090 MHz, the 84 cm dish aperture is about 3 wavelengths across. The gain is modest — roughly 10 dBi compared to the 2 dBi of a typical quarter-wave whip. That 8 dB advantage translates to roughly 2.5x range extension (all else equal), pushing theoretical detection from 200 NM to about 500 NM. In practice, Earth curvature limits line of sight to about 250-300 NM for aircraft at typical cruising altitudes (35,000-40,000 ft), so the dish gain helps most for detecting aircraft at lower altitudes or greater distances along the horizon.

See SDR Hardware Setup for the full signal chain, feed mounting, and bias tee safety details.

ComponentRecommendationNotes
FeedHalf-wave dipole or patch antennaSimple to build. Vertically polarized to match aircraft antennas
LNA1090 MHz filtered LNAMany ADS-B-specific options. Cavity or SAW filter strongly recommended
SDRRTL-SDR V4Standard ADS-B receiver. 1090 MHz well within range
Tracking modeStep-and-dwellNot satellite tracking — fixed pointings with timed dwells

A dipole feed for 1090 MHz is about 13.8 cm (5.4 inches) tip to tip — small enough to mount easily at the focal point. A patch antenna is another option and offers cleaner illumination of the reflector. Either way, the feed construction is straightforward.

At 1090 MHz, the dish is electrically small — only about 3 wavelengths across. This means the beam is broad and the feed’s illumination pattern matters less than at higher frequencies. A simple dipole will under-illuminate the dish edges (reducing efficiency) but won’t create severe sidelobe problems. A patch antenna with a ground plane can better control the illumination taper, but the improvement over a dipole may be marginal given the dish’s small electrical size at this wavelength. Start with a dipole for simplicity and upgrade to a patch if the measured antenna pattern reveals room for improvement.

The primary experiment: map ADS-B detection range as a function of dish pointing direction.

  1. Prepare the hardware chain. Mount the dipole or patch feed, connect through the filtered 1090 MHz LNA, run coax to the RTL-SDR. Ensure the LNB bias tee is disconnected or blocked (see SDR Hardware Setup).

  2. Start dump1090 in network mode.

    Terminal window
    dump1090 --device-index 0 --net --net-sbs-port 30003 --quiet

    This decodes ADS-B messages and outputs position reports on TCP port 30003 in SBS (BaseStation) format.

  3. Start the Birdcage rotctld server.

    Terminal window
    birdcage serve --port /dev/ttyUSB2 --baud 115200
  4. Define a survey grid. Choose an azimuth sweep range (e.g., 0 to 355 degrees in 5-degree steps) and one or two elevation angles (5 degrees above the EL floor of 18 degrees, and perhaps 30 degrees for comparison).

  5. Point the dish at the first position and dwell.

    Terminal window
    # Via rotctld
    echo "P 0 20" | nc 127.0.0.1 4533

    Dwell for 2-5 minutes at each position. Log all ADS-B messages received during the dwell with timestamps.

  6. Step to the next azimuth and repeat. A full 360-degree survey at 5-degree steps with 3-minute dwells takes about 3.6 hours. Running at night (when air traffic patterns are more stable) may produce cleaner data.

  7. Collate the results. For each dwell position, calculate: number of unique aircraft detected, maximum range of any detection, average signal level. Plot these as polar maps (AZ angle vs. range or count).

Aircraft at known positions (from decoded ADS-B) provide a way to verify and calibrate the dish’s pointing accuracy.

  1. Pick a distant aircraft at a known position. From the dump1090 output, select an aircraft with a stable track at a large range (100+ NM). Its decoded ADS-B position gives you the true AZ/EL from your ground station.

  2. Calculate expected AZ/EL. From the aircraft’s reported lat/lon/altitude and your ground station coordinates, compute the expected azimuth and elevation.

  3. Point the dish at the calculated AZ/EL. Record the signal strength (dump1090 reports RSSI per message).

  4. Scan around the calculated position. Offset the dish by +/- a few degrees in AZ and EL, recording signal strength at each offset. The peak should correspond to the true direction of the aircraft.

  5. Compare peak position to calculated position. Any systematic offset reveals pointing error in the Birdcage positioner at 1090 MHz.

ToolPurposeProject
dump1090ADS-B message decodingFlightAware
readsbEnhanced ADS-B decoder (dump1090 fork)wiedehopf
tar1090Web-based ADS-B map visualizationwiedehopf
Virtual Radar ServerADS-B logging and range plottingVRS

dump1090 (or readsb) handles the decoding. tar1090 provides a live map in a browser. Virtual Radar Server can generate polar range plots from logged data — exactly what this experiment needs for the coverage survey.

For the calibration use case, a simple Python script that reads SBS-format messages, computes expected AZ/EL from aircraft position, and correlates with dish pointing is all that’s needed. The SBS format is CSV with fields for ICAO hex code, callsign, altitude, ground speed, track, latitude, longitude, and vertical rate — everything needed to compute the aircraft’s bearing and elevation from a known ground station.

For the step-and-dwell survey, each dwell period needs to be tagged with the dish’s current AZ/EL. One approach:

  1. Query the dish position via rotctld (echo "p" | nc 127.0.0.1 4533) at the start of each dwell
  2. Log the position and timestamp to a CSV file
  3. Correlate with the SBS output from dump1090 by timestamp

A wrapper script that steps the dish, waits for settling, queries position, and records the dwell boundaries automates the entire survey. The Birdcage CLI’s pos subcommand also works for position readback.

  • Directional range map. A polar plot showing maximum ADS-B detection range as a function of azimuth. Expect to see clear directional gain — aircraft detectable at 300+ NM in the dish’s pointing direction, fading to near-zero off-axis. Terrain obstructions will show as range shadows.

  • Range extension. With the ~8 dB gain advantage over an omnidirectional antenna, detection of high-altitude aircraft at 300-400 NM should be achievable where line of sight permits. Low-altitude aircraft or those near the horizon benefit most from the gain improvement.

  • Pointing accuracy measurement. The calibration procedure should reveal any systematic AZ/EL offset in the positioner. Sub-degree accuracy should be verifiable using distant aircraft as point sources.

  • Multipath signatures. At low elevation angles, ground reflections create multipath interference. The directional antenna may show elevation-dependent signal level variations that trace out the dish’s vertical beam pattern convolved with the ground reflection geometry.

  • Terrain mapping. The directional range map effectively encodes the local terrain profile. Directions with nearby hills or buildings will show reduced range (RF shadow), while directions with clear line of sight to the horizon will show maximum range. Overlaying the range map on a topographic map should show strong correlation.

  • Time-of-day variation. Running the survey at different times reveals how air traffic patterns shape the detection statistics. Overnight surveys may detect fewer aircraft but with less variability per direction, while daytime surveys near major airports show dense traffic in specific corridors.

  • Optimal dwell time. ADS-B squitters repeat roughly once per second, but aircraft density varies by time and direction. Is 2 minutes enough for a statistically meaningful sample at each azimuth, or does 5 minutes produce significantly better range statistics?

  • Elevation angle selection. The dish’s minimum EL is 18 degrees. Most distant aircraft are near the horizon (low EL). How much does the 18-degree floor limit the effective range extension compared to a ground-level omnidirectional antenna that can see down to 0 degrees?

  • Gain at 1090 MHz. The estimated 10 dBi gain assumes reasonable aperture efficiency with a simple dipole feed. The actual gain depends on the feed’s illumination pattern — an improperly positioned dipole may under-illuminate the dish or cause excessive spillover. Only measurement will tell.

  • Beam width. At 1090 MHz, the 3 dB beam width is roughly 25-30 degrees. The 5-degree survey step size is finer than the beam, which is good for mapping but means adjacent positions are not independent samples. How should the analysis account for this overlap?

  • Simultaneous reference antenna. Running a standard omnidirectional ADS-B receiver alongside the dish provides a control dataset. Aircraft detected by both antennas give direct A/B comparisons of signal level. Aircraft detected only by the dish (at extreme range) confirm the directional gain advantage. Is a second RTL-SDR feeding a separate dump1090 instance the cleanest way to implement this?