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 “ ”.] 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.