Foreword to Communications Systems Engineering with GNU Radio

Foreword

Communications Engineering solves one one of the central problems of mankind: making sure that what is known in one place becomes known in another. This is a book instructing the reader how to implement that, wirelessly, with naught but a computer, free software, and a radio frontend.

Sufficiently obvious is the need for education in the practicalities of this communication technology, given how transformative they have been: The geopolitical situation of the twentyfirst century is hard to imagine without the TV; neither the Arab Spring nor the public perception of Russia's invasion of Ukraine would have assumed their shape without ubiquitous mass communication. However, this is not a guide on how to make a call using a cell phone, or how to upload a video to social media.

Instead, its purpose lies in enabling the reader to work on a more fundamental, the physical layer, themselves, with nothing between them and the radio waves that need to be modified to communicate information. The power of Software-Defined Radio (SDR) lies in its ability to make the mathematical description of the physical phenomenon that is radio available for analysis and manipulation in a computer – and thus gives its users the ability to control what and how information is transported to the fullest extent.

Conversely, understanding how communication is actually done using SDR allows for a deeper insight into the nature of wireless communications. As the presence of a chapter on passive and radar shows, the same techniques enabling us to exchange information with a communication partner allow us to retrieve information about things far away. This serves to illustrate one of the strengths of teaching concepts from communications engineering based on working, practical implementations: The theory taught on one page to establish the working of an aspect of communications serves as explanation for the technology taught a few pages further down.

The authors elected to use GNU Radio to teach these concepts; why? GNU Radio is Free and Open Source Software (FOSS). This means three things for its usage as an educational tool:

  1. Its openness allows for introspection: An interested user could always look inside and discover "how it's done".
  2. Its wide availability across platforms, free of cost, makes it a desirable platform to work on, whilst not sacrificing on its professionality: The very same tools used by researchers, companies and hobbyists worldwide are at the fingertips of the learner, giving them the opportunity to grow continuously from a beginner to an expert in designing communication systems.
  3. The community built around GNU Radio is largely motivated by the idea that everyone should have access to both the knowledge and the tools needed to build communication systems. This leads to intense sharing of knowledge, both in the shape of software and its source code, as well as of methodology and theory.

Surprisingly to me, as former leader of the software and its development process, openness is not the strongest argument (but still important to many) for using GNU Radio to teach communications engineering.

More valuable is the community arising from the FOSS nature. GNU Radio understands itself not only as a software project, but as the unifying part of a whole ecosystem of software-defined radio applications, libraries, research groups and users. This has made it the most popular open source environment for SDR development, with an annual conference in the United States and in Europe, a pervasive presence in research articles, the amateur radio community, demonstrators and common use case for the vendors of SDR frontends. This comes with a network of educators, users, developers, supporters and learners. But GNU Radio did not start out as a large project. However, its function as tool to understand wireless communications, is part of the very foundations of it, which a short look back at its history shows:

When Eric Blossom, a computer science-friendly electrical engineer in the US was designing cryptographically secure telephones around 1993, he found commercial and official understanding of secrecy to be lacking. The freshly evolving digital wireless, cellular communication standards, in the shape of IS-95, had serious cryptographical flaws.

Considering the technological and financial entry hurdles of working with the waveforms on the air, Blossom talked to to John Gilmore, of fame for sponsoring the Electronic Frontier Foundation's (EFF) efforts to build a demonstrator to prove the DES encryption standard to be weak, the two enter into a patronage, where Blossom gets to be paid on a Free and Open Source SDR framework – leading to the birth of the GNU Radio idea in 1998; the early code was based on MIT's Pspectra SDR framework.

The progression from a small project to the most popular SDR framework in existence was fostered by the Moving Picture Association of America throwing in their weight when the US moved analog TV to the digital ATSC – and enforcing a "copy-protection bit", to be respected by video recorders. That not sitting well with EFF ideals of free access to technology, a reason emerged to write a complex receiver in what would become GNU Radio – something that can receive ATSC TV, get the video, and not care at all about any copyright bits.

The EFF proving the ATSC copy-protection is a publicity success, but a project of that size showed the need to overhaul the code. Clearing this milestone, Blossom convinces Gilmore to let him re-write GNU Radio from scratch to remove it from the limitations imposed by pspectra's limitations.

At this point, about 2003, Matt Ettus gets involved and starts building his SDR frontend – what he coined the "Universal Software Radio Peripheral" (USRP) – a device that attaches to PCs through USB, allowing anyone to work with electromagnetic spectrum with off-the shelf, relatively affordable hardware. Ettus becomes a contributor to GNU Radio, and hard- and software co-evolve. Early versions of the driver for the hardware are part of GNU Radio; only later on, a more generally useful driver for the Ettus hardware is written. Academic interest is massively picking up – numerous PhD students work with GNU Radio, contribute code, and most importantly: They (and the students they supervise) form a lively community. At the same time, the project becomes commercially relevant enough to support consultants.

One of these PhD students is Thomas Rondeau – who later becomes the lead to replace Blossom; the consultant, to become the maintainer of GNU Radio, is Jonathan Corgan, both who shape the project into a software project that is good at accepting contributions. At the same time, community events start to emerge. Students – the author of this foreword not being an exception – get highly invested. A very active mailing list forms the glue of an international community of users and developers.

Things go smoothly, and GNU Radio 3.7 becomes the stable release found in nearly all Linux distributions; there's binary installers for Windows, the annual GNU Radio conferences attract more than 300 people a year. Development moves from a self-hosted git server with trac as project management to github and mediawiki for documentation. However, stability is a double-edged sword; it means contributions begin to dry up in development branches that stand little chance to actually get deployed to users. As Corgan leaves the position of maintainer, GNU Radio has excellent support on all relevant desktop operating systems, but the "next" branch, which was destined to become GNU Radio 3.8, is not in a shape immediately ready for release.

This is when I'm asked to step in and switch from a very inofficial role, where I try to stay atop of what is happening on the mailing list, explain the code, the communications engineering base and the occasional bug to users, to a more official role; from 2018 to 2021, I become architect and maintainer of GNU Radio. What an honor! Getting the 3.8 release out of the door with the help of a lot of friends, we gave GNU Radio a new velocity (and, as you can imagine, we broke some poor people's applications in the process of making sure GNU Radio still works on machines with Python 3). Releases become more regular, and the number of contributions surges strongly.

Handing my responsibility off to two people – Josh Morman as the new Architect, and Jeff Long as release maintainer concerned especially with the stable releases – was excellent for the project, too. It allows the evolution of the developer code base with less worries about things breaking on the machines of users, without sacrificing on the ability to spin reliable new releases.

However, it goes without saying that a software framework having an easy twenty years of development history, comes with some baggage. Not all things are as intuitive, or as fast, or as safe, or as consistent as they could be, even in GNU Radio 3.10, the current release series as of writing. The GNU Radio project continues to evolve; what I believe will stay the same is the dedication to one central principle:

Through offering a very accessible FOSS framework for SDR application, with which everybody can get access to this great shared resource, the electromagnetic spectrum, GNU Radio will continue to foster, and live off, an active community of coders, researchers, hackers, users and operators that drive the project forward.

I hope this book both enables motviates generations of people willing to learn to tackle something as rich in facets as communications engineering – using tools that allow and encourage them to go beyond what is available as what companies are willing to sell them as wireless devices.

~~ Marcus Müller, June 2024