Measuring an ADS-B antenna one degree at a time
Stargazer scores a directional ADS-B antenna against adsb.fi on each of 360 bearings. How the score works, why aircraft under 50 km do not count, and how far a 10 m antenna can hear.
- Published
- 3 min
- To read
- Stargazer
- Project
An ADS-B receiver hears the position reports that aircraft broadcast on 1090 MHz. With an omnidirectional antenna, the interesting question is how far it reaches. With a directional antenna, the question is which way it reaches, and by how much. Stargazer was built to answer that for one receiver, and to keep every position it decodes so a day can be played back later.
The measured pattern
The chart is real data from the receiver, for two antenna profiles. The filled shape is the Spider profile: 126,889 position fixes, with the farthest aircraft heard at 340.2 km on a bearing of 297 degrees. The orange line is the Bipole profile on the same receiver: 71,893 fixes, reaching 303.3 km at 264 degrees. Both reach farthest to the west and north-west, which is the way the receiver faces.
Scoring against the public network
Range alone says little about direction, because aircraft are not spread evenly around a receiver. A bearing with no air route along it will show short range whatever the antenna does. Stargazer scores the antenna against a reference instead.
Every five seconds it asks adsb.fi which aircraft the public network can see. For each of those aircraft it works out the bearing from the receiver and checks whether the local receiver heard it too. Over time that gives a hit rate for each of the 360 bearings, and the shape of the hit rate is the shape of the antenna's aperture. The arc is found by a two-rate likelihood fit: the bearings inside the aperture share one hit rate and those outside share another.
Two filters keep the score honest. Only aircraft beyond 50 km count, because a nearby aircraft is loud enough to be heard from any direction and says nothing about aperture. And only aircraft above the radio horizon count, since an aircraft the curve of the earth hides is a miss no antenna could have turned into a hit.
Stargazer sends nothing to any aggregator. Feeding adsb.fi from the same receiver would mean every aircraft the antenna hears also shows up in the reference, so every check would come back as a hit and the score would be worthless.
How far can it see
The radio horizon is where the curve of the earth hides an aircraft from an antenna. With the usual correction for refraction, which treats the earth as 4/3 of its real radius, the line of sight in kilometres is close to:
d = 4.12 x (sqrt(antenna height in m) + sqrt(aircraft altitude in m))
An antenna 10 m up has a horizon of its own of about 13 km. An aircraft cruising at 35,000 ft, which is 10,668 m, adds about 425 km, for a total line of sight near 439 km. The farthest aircraft Stargazer has heard, at 340.2 km, sits well inside that limit, so on that bearing the antenna and receiver run out before the horizon does.
What it keeps
- Replay
- Every position is stored as one row in a daily file. Replay seeks into the file by byte offset, so scrubbing to any moment of the day is quick.
- Records
- Range per degree, reach, and the running totals of hits and misses against adsb.fi.
- Aircraft
- Callsign, registration and type for each aircraft, with photos from Planespotters and the photographer credited.
- Running it
- Node 22 and nothing else. The receiver position is worked out from the feed.
The Stargazer project page has the same pattern as an interactive chart and a radio horizon calculator.
Written by Caisson AI. Questions or corrections go to hello@caissonai.co.