The world's leading source of technology news and analysis
Search Spectrum IEEEXplore Digital Library Submit
Font Size: A A A
IEEE
Home [Alt + 1] Magazine [Alt + 2] Bioengineering [Alt + 3] Computing [Alt + 4] Consumer [Alt + 5] Power/Energy [Alt + 6] Semiconductors [Alt + 7] Communications [Alt + 8] Transportation [Alt + 9]

Hardware for Your Software Radio Continued By Stephen Cass

First Published October 2006
emailEmail PrintPrint CommentsComments ()  ReprintsReprints NewslettersNewsletters

Aside from the cable woes, setting up the hardware was easy. Unfortunately, the software side didn’t go as smoothly.

The GNU Radio software, in addition to its own code, relies on a lot of third-party software from other free and open-source projects. Getting all this additional software up and running is actually the trickiest part of setting up GNU Radio, and the difficulty was compounded by both a lack of reliable documentation and out-of-date software.

In the end it took many frustrating hours, lots of Googling, a phone call to Matt Ettus (who is also a contributor to the GNU Radio project), and several false starts to get my Linux-based system up and running properly.

The root of my problem was twofold. First, the official release of the GNU Radio software provided on the project’s Web site (http://www.gnu.org/­software/gnuradio) was obsolete, as was the installation tutorial the site linked to—which led to my second problem. Following these instructions, I had tried to install all the supporting software by compiling it from source code: a long, difficult process that I never got to work quite right.

Finally, following tips from Ettus, along with parts of the available documentation that still seemed to make sense, I started over with a blank slate, using a fresh install of Linux Mandriva 2006 Free Edition as my operating system. My plan was to download the supporting infrastructure in the form of prebuilt binaries that didn’t have to be compiled, and then download and compile the latest version of the GNU Radio software directly from the developers’ own source code repository.

Two and a half fairly pain-free hours later, I had a local FM station blaring from my computer’s speakers. [For a step-by-step description of what worked for me, see “ Installing the USRP and GNU Radio”.] As a more advanced exercise to make sure everything was working, I downloaded and installed additional code for viewing analog TV signals; while I was able to get it to run pretty easily, I still couldn’t produce a watchable picture, because this feature is so new that no one’s yet written the code to de-interlace the raw TV transmission! (There is code available for watching HDTV digital transmissions, but because of the performance limits of current processors, the signal can’t be decoded in real time.)

Incidentally, I had first installed the USRP and GNU Radio system on my OS X system fairly easily, mainly thanks to a good installation guide (http://staff.washington.edu/jon/gr-osx/gr-osx.html). Unfortunately, I’d used the official release of the GNU Radio software, which did not include sound support for OS X at that time.

To be fair, problems with third-party code, rapidly evolving software, and documentation are endemic to free and open-source software projects. Still, there is no getting around the fact that installing GNU Radio is a particularly difficult process for those new to it. Ettus says the GNU Radio project hopes to establish a stable working official release before too long, and the project will soon replace, or at least remove, the dead-end software and documentation that’s on the home page.

Photo: Randi Silberman

Soul of the Machine: The Universal Software Radio Peripheral motherboard provides slots into which daughterboards, such as the one in the upper left corner, can be inserted. Different daughterboards handle various frequency ranges.

Once you have the software up and running, you’ll need to know that programs for GNU Radio are written using the C++ and Python languages. The conceptual approach is to treat the various parts of the system as modules that send information to one another, allowing programmers to concentrate on whatever piece they are interested in, while treating the other modules as black boxes.

Routing between modules is done with Python, so that a developer might write a Python program that uses an off-the-shelf “source” module, which grabs a chunk of radio spectrum from the hardware, and a similar “sink” module, which sends the output of the program to, say, a set of speakers or a radio transmitter. In between the source and sink modules the developer could put a custom signal-processing module, which itself would be written in C++ (signal processing is not done with Python for performance reasons). This gives developers the ability to assemble working systems rapidly. Plenty of sample programs are included with the software to give new developers a head start.

Ultimately, despite the installation headaches I encountered, it is clear that the USRP and GNU Radio have immense potential, and the full range of possible applications is not yet foreseeable. For those who have the technical chops and want a sneak preview of things to come, the USRP and GNU Radio deserve attention.


« Previous Page 2 of 2
emailEmail PrintPrint CommentsComments ()  ReprintsReprints NewslettersNewsletters


WHITE PAPERS

Featured White papers:

More»

White papers:

      More»