ADS-B antenna on stand    ADS-B antenna: The idea for this project sprang from a published list of interesting things to do with a Raspberry Pi. One suggestion was to receive and decode navigational information transmitted by aircraft using a system called ADS-B. The ADS-B system operates at 1090 MHz (or 1.090 GHz). By way of comparison, the AIS system used by ships operates at 161.975 MHz, not very far above marine VHF frequencies and the 2 meter ham band. 

    Out of curiosity I tuned SDR# to 1090 MHz using a 2-meter antenna. With this arrangement I could see occasional activity above the noise in the SDR’s spectrum display, especially when an aircraft was near enough to hear its engines. A quick Google search yielded several excellent ‘how to’ articles for making a 1090 MHz antenna, for example, and From these and similar articles it seemed the design of choice for this frequency and service is a collinear, made from 75-ohm coax.

    In less time than a typical search consumes I found a piece of RG6X that was still in a sealed plastic wrapper—it must have belonged to some appliance from years ago, maybe a TV or video player. Being unsure what sort of precision was needed I looked up the velocity factor for RG6X and found that published values vary by manufacturer and type, but hover around 80%. Thus, at 1090 MHz a half wavelength is about 11 centimeters, which is not coincidentally the value cited in construction articles.

    I clipped the F connectors off the ends of the 4-foot length of RG6X, and cut the remainder into 15 cm pieces. Following published guidance, I trimmed 2 centimeters of braid and foam from each end of the cut pieces.

Section of RG8X

    Unfortunately I did not take photos of construction in progress.  The piece shown above was left over, as I used only 8 segments in making the antenna. Construction was simple, though. The center conductor of one piece gets connected to the outer shield of the next, by pushing the solid center conductor between the shield and outer plastic jacket. A couple of details may be worth noting.  First after cutting, I cleaned the cut ends carefully to ensure that no stray ‘hairs’ from the shield could short to the center conductor. Then on joining each segment I tested the entire length up to that point with an ohmmeter, both for continuity and the absence of a short. Articles I’d read suggested wrapping the joints with electrical tape. I did this and also covered the tape with shrink wrap. When finished the total length of the 8 connected half-wave segments came to approximately 35 inches.

    The next problem was to figure out how to make the antenna stand straight up, while avoiding the use of metal parts. To this end I spent $2.00 for a 10 foot length of CPVC, and from that cut a 35 inch piece.  The blue plastic cap at the top (photo) came from the ‘strings too short to use’ jar. Two questions still confused me. Should the end of the antenna be terminated with a 75 ohm resistor or not? I had a 75 ohm resistor but couldn’t think why it would be needed, so I did not use it. The second question was whether or not to make a 75 ohm to 50 ohm transformer. At least one article suggested connecting two 1/12 wavelength pieces of coax (75 ohm and 50 ohm) for impedance matching. One twelfth wavelength would be less than 1-inch at 1090 MHz, but how would that differ from connecting the 50 ohm coax directly to the 75 ohm antenna? It is surely different in some way that escapes my understanding. However, I did not do this.

Collinear at 1090 MHz in SDR#

    On placing the 1090 MHz collinear antenna on the balcony outside and connecting it to the NooElec RTL-SDR, I found that 1090 MHz was alive with some sort of signal, but what? Through earphones it sounded like a mix of tones and static. I didn’t know what modulation mode or bandwidth to set in the SDR, but surely these signals must be ADS-B because they were the right frequency, and much stronger and more continuous than those previously observed with the 2-meter antenna.

    Yet another Google search led to several ADS-B decoding accessories, including RTL 1090, DUMP 1090, ADS-B#, FlightAware ProStick, MATLAB(!), and the one I ended up using for this test ModeSDeco2.

Eample data display from modeSDeco2

    Figuring out how to run ModeSDeco2 was a little tricky. The supplied example .bat file referenced a couple of databases that were not included. However, I found through experimentation that the program would start and run without these databases. In retrospect, it would have been beneficial to have read the ‘Help’ file before starting! I had expected at first to use an SDR program, such as SDR# to receive the signal, and then pipe audio to the decoding program. However, ModeSDeco2 does not work this way. Rather it receives the signal itself directly from the RTL. Thus this program can be used without an SDR program. In fact, it is not possible to monitor the signal concurrently (using the same physical device) with another SDR application, as the decoder ‘owns’ the RTL-SDR.

    At first I did not believe the displayed data, thinking both quantity and quality were too good to be true. However, upon disconnecting the antenna decoding stopped completely.  Moreover, the information being displayed described flights that were currently within about 50 nautical miles of my location. There could be no question that the program was decoding real-time radio transmissions as received by the antenna that was sitting out on the balcony table.

    ModeSDeco2 serves decoded data as HTML pages, over whatever TCP/IP port was specified when starting the program. In addition to the tabular form illustrated above, the program also produces a Google maps projection, showing the current position and direction of flight for tracked aircraft (video demo below). Other pages show charts and statistics, such as the number of messages decoded per second or per hour, and a graph of contacts by distance. Based on data from the latter chart, the most distant messages decoded in the first day of testing were 80 nautical miles away.

    Collinear demo (with assist of RTL-SDR and ModeSDeco2): ADS-B.mp4

Projects Home

Project descriptions on this page are intended for entertainment only. The author makes no claim as to the accuracy or completeness of the information presented. In no event will the author be liable for any damages, lost effort, inability to carry out a similar project, or to reproduce a claimed result, or anything else relating to a decision to use the information on this page.