GNU Radio support for Ettus Research USRP1/2

I’d like to clarify and respond to some concerns expressed about the
software side of the GNU Radio/USRP SDR combination.

First, we remain committed to maintaining Free Software Foundation
copyrighted, GPLv3 licensed host code that provides the C++, Python
and GNU Radio Companion interfaces to the USRP1 and USRP2 hardware
within the GNU Radio framework.

Today, this comes in two forms. The first is the two C++ “libusrp”
and “libusrp2” shared libraries that provide low-level configuration
and sample based access to the USRP hardware over their respective
hardware interfaces. This is the kind of framework-independent driver
code that is typically provided by hardware vendors and allows its use
with a variety of software packages. Analogous drivers are the
libasound driver for audio hardware or libhamlib for communication
with various radios.

Built on top of libusrp and libusrp2 are the GNU Radio gr-usrp and
gr-usrp2 signal processing source and sink blocks. These provide the
streaming signal flowgraph wrappers around libusrp(2) for C++ and
Python applications, and the further metadata needed for use in the
graphical design tool GRC.

All the above are part of GNU Radio, are copyrighted by the FSF, are
distributed in our software tarballs, source code repository, and
binary packages, and are licensed for use and redistribution using the

This code, with some further integration of the some in-progress
development, will become part of our 3.3.x stable series, and will be
maintained with bug fixes and/or updates should they become necessary.

Ettus R. has announced their intent to release a “Universal
Hardware Driver”, or UHD, that will be a single driver approach to
current and future hardware from them, and has also stated the UHD
will be available under both GPL and non-GPL licenses. The UHD will
perform essentially the same functions that libusrp and libusrp2 do
now, and we will be able to have GNU Radio “gr-uhd” source and sink
blocks to allow use within GNU Radio applications.

This is a good thing for GNU Radio users for a variety of reasons:

  • It has proven tedious to develop GNU Radio applications that can
    transparently use either the USRP1 or USRP2. The UHD will abstract
    these differences so applications can adapt to the available hardware
    capabilities that are found. Currently we have some inelegant code to
    accomplish this but it’s not an effective solution.

  • Future products from Ettus R. will get GNU Radio software
    support much more rapidly than in the past, as most of the differences
    will have already been addressed in the UHD.

  • The UHD makes it easier to expand support for the USRP into other,
    non-GNU Radio, frameworks or development environments. We see this as
    a good thing–it both promotes the use of low-cost SDR technology in
    general and provides an easier transition between those environments
    and GNU Radio.

We have already been collaborating with Ettus R. for some time
on the overall design of the UHD to ensure continuity of features and
capabilities between the current GNU Radio libusrp(2)/gr-usrp(2)
modules and the future Ettus R. UHD/GNU Radio gr-uhd modules
supporting their hardware. While this intentionally won’t extend to
source code compatibility, we do think it will be straightforward to
port applications. In addition, we will be coordinating distribution,
installation, and maintenance of the software to keep things
synchronized between the projects.

The acquisition of Ettus R. by National Instruments is clearly
recognition that the use of low-cost SDR hardware and open source SDR
software has gained acceptance and use across a broad spectrum of
academic, corporate, and government users. While it hasn’t been
explored in detail, there is also an opportunity to bring GNU Radio
support to other NI products.

It’s an exciting time.

Johnathan C.
Corgan Enterprises LLC

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs