Radio Redefined
Some of us at Fathom are easily sucked into geeky hobbies. When I first came across a site dedicated to SDR, or software defined radio, I turned my desk into a makeshift communication outpost for several days to learn the basics. It turned out to be surprisingly relevant to our core interests of data visualization and programming.
A farmer listens to an early radio broadcast. While communication technology has evolved, radio remains a critical medium today. Photo courtesy of the National Archives and USDA.

In recent years, software defined radio (SDR) has become a popular pastime among a small but enthusiastic community of hobbyists. SDRs are radios enmeshed with computers. Software that runs on a standard personal computer can replace parts of the radio that we typically think of as physical objects with wires and knobs—like amplifiers, filters and so on.

We used this small, inexpensive USB dongle to scan a wide range of radio transmissions.

Integration with the computer makes SDRs extremely versatile. They can be applied to a variety of projects, such as building a simple FM tuner, receiving broadcasts from satellites, and even DIY radio astronomy. Best of all, they’re cheap! So we purchased an SDR kit for the office, opting for the extra large whip antenna, and took it for a spin.

Our setup included a laptop, SDR dongle and a 5-ft antenna. High-end equipment is available, but this was enough to have some fun.

SDRs are relatively new and still a niche interest, so the available software is predominantly developed by the user community. Several applications are available for specialized purposes, but it seems the largest platform for developing custom tools is GNU Radio.

A small radio tuner script written in GNU Radio Companion's visual programming environment

GNU Radio offers a collection of software blocks written in C++ that handle low-level functions like signal processing. It's packaged in Python for a convenient and approachable API. With GNU Radio, applications can quickly be written in Python, or using the convenient node-based visual development environment in the GNU Radio Companion.

Following some readily-available tutorials, the first program we made was a basic FM receiver. Here it is tuned to WMBR, the MIT campus radio station.

Of course, dedicated members of the SDR community have written much more sophisticated applications. One of them is GQRX, a free and open source project built on the GNU Radio platform. Its basic workflow features a precise tuner augmented by visualizations of real-time activity on the radio spectrum. As with any radio, users can only listen to one frequency at a time, but a Fourier transform graph shows activity across the entire bandwidth of the range the radio is receiving. Simultaneously, a waterfall graph ticks along below it, showing broadcast strength at each frequency over time. Aside from the geeky coolness factor, this is also a great application of visual design to a technical challenge. The visualizations let users examine a broad range of frequencies at a glance to find active stations, rather than having to blindly try each frequency one at a time. The program is immensely useful when exploring frequencies outside the well-known commercial radio range.

The GQRX Fourier transform graph (top) and waterfall (bottom) showing two broadcast stations.

While we were considering other SDR projects to try, we discovered that it is possible to download imagery from NOAA weather satellites as they pass by. We've been doing quite a bit of cartography lately (see No Ceilings, All Streets, Urban Agriculture) so this seems like a natural next step, and we hope to have some weather maps ready to share soon!

People may not be listening to music on the radio as much as they once did, but our electronic devices are constantly “on the air,” transmitting and receiving data via radio waves to keep us connected. One reason why we are interested in SDR is because it lets people peek into those layers of data, which would otherwise be inaccessible. And making the inaccessible accessible—or the invisible visible—is the goal of data visualization.

So don’t touch that dial! We’ll be back with more after the break.