An aircraft ”RADAR” plotter and tracker

When it was discovered some years ago that cheap "DVB-T" digital TV tuner dongles based on the Realtek RTL2832U chipset could be hacked into serving as veritable SDR's (software defined radios), covering the entire frequency spectrum from 24 MHz to almost 2 GHz, it suddenly became possible to build very affordable ADS-B receivers/decoders (among other applications). ADS-B stands for Automatic Dependent Surveillance - Broadcast, and its digital signals are transmitted on 1090 MHz.

This is what a typical compatible dongle looks like without its case. The actual tuner is the little R820T2 24-pin chip on the right, and RTL2832U the other.

We happen to live about 20 km from an international airport. Frequently the conditions are such that arriving aircraft are directed to pass more or less overhead as they move into position and line up for the final approach. Here are the official air traffic noise level maps with our position added (red ring).

Meanwhile, at the other end of the spectrum, the usual air traffic control (ATC) voice radio is broadcasted unencrypted in the "aviation band", which are reserved channels between 118 and 134 MHz. So I figured it would be interesting to build a receiving ”rig” which conbined the reception of the typically terse and laconic ATC conversations with realtime "radar" like surveillance through the decoding of ADS-B digital data links.

The components that make up this project, both hardware and software-wise, consists mostly of off-the-shelf (or rather off-the-web) readymade stuff. Practically the only handcrafted parts are the antennas (aerials), their cabling and some proto-board soldering.

For a write-up of the aviation band (voice) receiver see here. A closer description of the ADS-B part follows on this page.

Antennas

The relatively high frequency used for ADS-B transmission (1090 MHz) implies small sized antenna elements, a fact which makes experimenting with alternate antenna designs even easier and cheaper for the DIY-er . There is a bewildering number of ideas and design principles for antennas optimized for 1090 MHz reception. For testing purposes I built several different types, like the "spider", the "cantenna" and the "Slim Jim" made with a (literally) hacked ancient twin-conductor flat TV cable. By coincidence it fit perfectly in the decommissioned ski pole glass fibre rod shown below,

In the end I decided the Slim Jim type, made from a piece of 2.5 mm dia solid copper wire, gave the best reception for our conditions. An additional advantage with this type of antenna is that it is easy to enclose and protect from sun, snow and ice, etc. Since I don't have access to an SWR meter or other proper signal testing equipment, the comparison process was totally subjective and neither rigorous nor systematic, by any standard.

The exact dimensions were determined using this online calculator and assuming a velocity factor of 0.95. In the end the built specimen was not exactly to spec, although evidently ”good enough”. It is worth noticing that in our implementation the feeding point can be easily adjusted for trimming, as the coax is attached with terminal block type screws. Also, the 4-turn balun wrap around the 32mm PVC pipe that serves as the housing, seem to improve the signal/noise ratio.

Type RG59 coaxial was used for both antenna cables. This type has nominally 75 Ohm impedance, while the aviation band receiver expects 50 0hm and the R820T2 receiver suposedly 75 Ohm (even though I have seen 50 Ohms mentioned as well). To somewhat compensate for line loss due to this discrepancy the first cable was carefully cut to a length corresponding to a multiple of a 1/2 wavelength of the target frequency (121 MHz for airband). The rationale behind this trick is described here, for instance.

Receiver

It is always a good idea to protect the receiver chip from as much EM noise as possible. The PCB is housed in a tight aluminium box with only minimum sized holes drilled for the antenna connector and the USB lead. The receiver and the USB chips get quite hot in operation, so lacking ventilation some means of heat dissipation is called for. A large piece of aluminium 120 x 50 mm U-section channel stock is used here as a passive heatsink, with the receiver box thermal-pasted and bolted into a tight contact.

For a CPU we use an original type B Raspberry Pi (512 Mb memory, 700 MHz single-core ARM7). Even though its specs are pedestrian compared to more recent Raspberry Pi models, its performance seems actually just sufficient for the workload it sees in this application, at least at my particular location, where the maximum count of aircraft seen simultaneously rarely exceeds 40. On the other hand, the CPU workload may reach 100% (for short periods of time) on two or three occassions a day, so a better capacity CPU wouldn’t have been overkill. So far (December 2018) this machine has been running practically 24/7 for almost two years, without any noticeable degradation in performance.

The RPi and the SDR dongle is housed in a serious-looking wooden box, an old chest for a first-aid kit. There are three exterior connectors:

    • USB male-A for 5v power lead from a 1.2A wallwart.
    • BNC female for the antenna cable.
    • USB female-A for a small wifi dongle.

To minimise the signal degradation inherent in long coaxial cable runs the box is placed on a bookshelf near the ceiling and as close to the antenna as possible (while still being indoors of course). Total length from junction box on antenna to receiver is 5 m.

As the RPi is running headless, normally only accessed via SSH when "necessary", it is convenient to have a means of directly shutting it down in an orderly and safe manner. To this end a ”halt” button was added to its case. When this is pushed a python script makes a blue LED blink affirmatively five times, then initiates the system halt process with the <shutdown -h now> command. After a few seconds, when first the blue LED goes out and then the built-in green "PWR" light has stopped its final flickering, the power cable can be disconnected.

Software

The RPi runs the Debian (Jessie) based Raspbian OS. As we are setting up a single-purpose machine, not a general purpose PC, it is just as well to uninstall unnecessary and bloaty default applications like Wolfram and LibreOffice, for a start.

The actual software used for presenting the ADS-B data stream is dump1090-mutability. In addition to the ”radar” map web server that shows all the aircraft positions and flight data to the local network only, there are some data feed clients installed. These send the collected raw data to two of the several online real-time flight tracking websites, namely FR24 and PlaneFinder. We also tried to support PiAware (the client for FligthAware) but that proved too much for our humble Pi version.

You can find a selection of our config files in this Github repository, if your interested.

This was quite a fun project to do. The range of reception and general performance and stability of this cheap faux radar with its dinky little aerial made from a piece of scrap wire is really surprising, me thinks. Here are some typical screenshots of what’s to see:

First up is a range-map generated by the PlaneFinder website based on data fed from my station (situated just north of Stockholm) one summer week 2017. It is clear that we can "see" much further towards the North and eastwards towards Finland, than in the opposite directions. This comes as no surprise as there is no high ground or other obstructions towards N and E were I live, wheras the ground rises towards S and W, thereby effectively raising the radio horizon there.

And here are some screenshots of unusually far-off detections. The Aeroflot A320 in the last picture will pass Helsinki in a few minutes...

Comments

You may mail me here: xneb.contact@gmail.com

Resources

You can find a selection of our config files in this Github repo