In preparation for the coming gnuradio release, and the cut-over from
next to master, changes have been pushed to both the uhd.git master
branch and the gnuradio.git next branch.
– highlights of this announcement
- 2x performance increase
- addition of sensors api
- re-clocking support
- gr-uhd api changes
- stability + changes
– Performance improvements
We have oprofiled the send() and recv() fast-paths in the UHD. Users can
expect about a 2x performance improvement using the most recent UHD.
– Sensors API
The sensors API provides arbitrary read-only properties to various
“things” on a USRP motherboard or daughterboard. Examples: LO locked,
RSSI, reference locked, etc… The sensors API deprecates the
read_rssi(), and get_lo_locked() calls.
One can query the available sensors from the API and in the future the
available sensors will be documented with the daughterboard app notes.
FYI, the “lo_locked” is implemented on all daughterboards with an LO.
and “rssi” is implemented on the XCVR2450.
– re-clocking support
Re-clocking support has been added to the API:
On a USRP1 board, you can specify usrp->set_master_clock_rate(52e6) so
that the driver knows to use 52MHz in its calculations. Note that this
does not really modify the clock rate, it just informs the driver of the
In contrast, when setting the clock rate on the usrp-e100, the driver
will dynamically reprogram the registers on the clock generator to
obtain the desired rate. See application notes:
Support for modifying the clock rate has been brought into the gr-uhd
blocks as well as the grc wrappers.
– gr-uhd changes
The gnuradio source and sink wrappers have been renamed and cleaned up
to become part of the stable API in the gnuradio master.
There is only one source and one sink wrapper (gr_uhd_usrp_source, and
gr_uhd_usrp_sink). These wrappers handle single and multichannel
configurations with one more USRP devices.
If you compiled against the gr-uhd headers, you will need to change the
code to reflect the new header names and factory function names. No
other changes necessary. Python code generated by GRC or hand-written
will continue to work without changes.
The gnuradio-companion blocks have been unified onto a single set of
wrappers as well (UHD USRP Source, and UHD USRP Sink blocks). The grc
flow graphs written with the single/multi source/sink blocks will
continue to work as long as the old wrappers remain installed.
– On stability and upcoming changes
No new images are required for this release of code with the exception
of USRP-E100 users. If you are an embedded user, I recommend waiting for
my next announcement with new images. But if you can’t wait, you can
grab it here:
We will be making another announcement with changes to the uhd.git
master branch and a new set of images. At this point, the master branch
will become stable and will only take on fixes and new hardware support.
Expect this announcement around the time gnuradio next cuts over to
We are committing to the current gr-uhd API and except this to become
part of the new stable gnuradio master in the coming days/weeks.