Software-defined radio (SDR) allows you to create radio receivers (and transmitters) with a few simple (and relatively inexpensive) add-on components for your computer:
- RF tuning card/dongle
- an antenna
The hardware componentry that traditionally was required to tune to a specific frequency and use a particular modulation technique has been moved to a malleable software implmentation. In additon, with the higher bandwidth, you can capture (and tune/demodulate) multiple signals simultaneously with enough computing power.
I’ve been exploring SDR for a while as a hobby, first with the FUNcube Dongle, but have moved into newer data acquistion devices that can capture more RF bandwidth at higher bitrates than that device.
One of my first experiments was with decoding airplane transponder data (ADS-B) which is broadcast mosty by commercial air traffic at 1090 MHz.
There are various examples available that show exactly how to do this:
- Cheap ADS-B Aircraft Radar
- ADS-B with RTL-2832 based USB TV dongles made asy
- ADSBox: New ADS-B Decoding Software for Linux
In July, I purchased a SDR kit for abour $24. This kit includes:
- A USB tuner dongle (based in the Realtek RTL2832U and Rafael Micro R820T chips)
- Two antennas (one suited for capturing VHF frequencies and the other for capturing shorter wavelengths)
The tuner is designed to capture 8 MHz of bandwidth, which is the allocation bandwidth for television signals in the US. However, it can be programmed to collect 8-bit radio spectrum (I/Q) data at up to 3.2 MSamples/second between 24 and 1766 MHz, which gives you a wide range of radio spectrum to collect and experiment with.
Since the ADS-B broadcasts at a frequency centered at 1090 MHz with the right antenna (the shorter one in the kit), the low-cost tuner can easily handle collecting RF data.
Since I use Macs as my primary machines, I found a software product called Cocoa1090 from black cat systems, which was (relatively) easy to install and run.
The steps to install this were:
- Use MacPorts to install rtl-sdr, which contains the tools to communicate with dongle.
sudo port install rtl-sdr
- Download Cocoa1090 and open the .zip file to a folder.
- Insert the USB tuner dongle into an open USB slot on your Mac. Make sure the shorter antenna is attached.
- Open Terminal.
From Terminal, run rtl_test to test the connection to the USB tuner dongle.
A successful run should display a message similar to this:
Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Supported gain values (29): 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 [R82XX] PLL not locked! Sampling at 2048000 S/s. Info: This tool will continuously read from the device, and report if samples get lost. If you observe no further output, everything is fine. Reading samples in async mode...
Press Control-C to exit.
From Terminal, run rtl_tcp and tune it to frequency 1090 MHz.
rtl_tcp -f 1090000
You should see the following output:
Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner [R82XX] PLL not locked! [R82XX] PLL not locked! Tuned to 1090000 Hz. listening... Use the device argument 'rtl_tcp=127.0.0.1:1234' in OsmoSDR (gr-osmosdr) source to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).
From the Cocoa1090 folder that you downloaded in Step 2, open the Cocoa1090 app. If all is working well and your antenna has clear sight to commercial aircraft, you shoudl start seeing incoming data in a few minutes.
Here’s an example of data I collected. Note that all of the air traffic shown is east of my location. This is because my office window only has clear visibility to the east. Also, I was receiving ADS-B location data from aircraft that were over 100 miles away from my location.