Software radio is amazing, no matter how you slice it. It represents many distinct fields of science and engineering working in concert to realize a technology that sounds almost too sci-fi to be real. Software radio quite literally gives you the power to write a bit of code to manipulate one of the Fundamental Forces of the Universe.

Not only is it an incredible achievement, but it's easily and broadly available. You can buy a receive-only SDR for $20 an Amazon, and put it to use immediately with open-source software. (N.B. There is no difference between Software-Defined Radio, SDR, and Software Radio. I generally use SDR for brevity.)

This post is an attempt to convey the sheer breadth of SDR in its technical underpinnings, impact, and potential. I very strongly believe that there is something for everyone in SDR; whether you're a physicist or a web developer, a grade school student or a professor of mathematics - there is something amazing you can do.

This post is not meant to be an SDR tutorial, but I'll provide a very brief description in case you're unfamiliar. My favorite analogy for explaining SDR is actually the evolution of computing. Going back to the 1940s, the first computers were programmed in hardware. More specifically, for a programmer to implement an algorithm, she quite literally flipped switches and connected cables to create an electrical circuit that represented the desired computation. You can see an example of this in the photo below of two programmers working on an ENIAC.

Programmers Betty Jean Jennings (left) and Fran Bilas (right) operate ENIAC's main control panel at the Moore School of Electrical Engineering. (U.S. Army photo from the archives of the ARL Technical Library)

As computing technology advanced, the digital processor was invented, and now we program computers by writing software. Put differently, processors are now generic computation devices made to do specific things with computer code.

SDR is exactly the same thing. Instead of an electrical circuit that implements a specific radio application (e.g., the FM radio in your car), an SDR is a generic radio device that can be controlled and used for specific things using code.

One of the reasons SDR is spreading so rapidly through so many different fields is that much like personal computers decades ago the technology and tooling has progressed enough that you no longer need to have a low-level understanding of the system to be successful; there remains much to be done here, but the barrier-to-entry is falling.

Using an SDR can be as straight-forward as plugging in a USB dongle, installing some packages, and opening your web browser to visualize the electromagnetic spectrum. The seeming simplicity of such a demonstration is a pretty incredible abstraction of the complexity making it possible; from RF and antenna engineering to web development, embedded systems design to digital signal processing, silicon design to network engineering - they are all under-the-hood of software radio.

The usage of software radio is perhaps even more varied than the technical fields that make it possible. SDR systems vary from USB dongles to forty-two dishes spread out over a square kilometer listening to the cosmos. You can join a global network of satellite ground-stations (SatNOGS), track the aircraft flying around you, show a proof of concept for wirelessly hijacking drones, teach science to middle & high school students through radio astronomy (OSRTP), try to catch a Numbers Station, and receive imagery from satellites (see below), just to name a few - all with open source software.

I recognize this is all a bit like saying, "Regardless of your profession, computers are for you!" While that statement couldn't be more vague, it also couldn't be more true. While SDR obviously isn't as broadly applicable as modern computing, it does have incredible reach. Its progress thus far has been enabled by advances in many fields of science, engineering, and design -- and driven by the huge diversity of applications that it enables.

The downside of this breadth is that software radio can be overwhelming - especially if you aren't sure where to start or how to get help. There's just so much you can learn about and do, it's sometimes hard to get going and easy to fall down a rabbit hole and feel hopelessly lost.

"Alices Adventures in Wonderland", Lewis Carroll

It's kind of like yak shaving, except you end up with the impression that you need to spend a couple of years studying advanced mathematics to use a USB dongle. Thankfully, this is categorically not true. Many, if not most, of the people I know doing amazing things with SDR have no formal background in electrical or radio engineering.

One of the interesting side-effects of the breadth of SDR is that many people who work in it don't actually consider themselves "radio people". Indeed, they might not even be interested in radio itself, but rather work with software radio because of the challenges and capabilities it provides. My own background is actually embedded systems and software architecture - I originally got into SDR because doing radio on embedded devices is a really hard problem with lots of interesting use cases, which made it a fun challenge to tackle. Most people have a similar not-a-radio-engineer path to SDR. Just to give some examples: Daina Bouquin is a librarian of astrophysics working in SDR because science has serious metadata challenges; Pete Schwamb wanted to build an open source insulin pump; and Holly Graceful wanted to explore the security of keyfobs.

There is a substantial open-source SDR community and many ways to get help and advice. The GNU Radio mailing list, discuss-gnuradio, is one of the most popular, along with its IRC and Slack channels. There are Meetups, workshops, and conferences. There are many open source projects dedicated to SDR, and getting involved with one that aligns with your interests is a great way to find collaborators. I'm also more than happy to personally connect, mentor, and provide guidance as I'm able - please reach out and say hi!

I really do believe that there is something in SDR for almost everyone. Grab an SDR and some open-source software, join the community, and be sure to share whatever amazing thing you do next =). As always, have fun and happy hacking!