[UHD] Release Announcement 3.9.0

Dear USRP users,

after nearly 2 weeks of testing, the release candidate was deemed fit
(with minor changes) for release, and as such I present the 3.9.0
release of UHD!

The list of changes is pretty long, so I’ll refer to the changelog for
details. Packagers and developers building from source will need to make
sure to update the list of dependencies: Since 3.8.5, ORC has been
removed, Cheetah was replaced by Mako (note: this is a build dependency,
not a runtime dependency!), and python-requests is required to run our
Py3k-compatible version of uhd_images_downloader.

Devices with integrated RFIC have received a lot of feature updates, but
also signal integrity improvements. The same goes for the X-Series
devices. The B200mini, which was announced and demoed at GRCon last
week, will work with this release as soon as it’s available.

Developers will find some UHD changes that might come in handy. An API
for using UHD from C is now available (can be disabled at compile-time,
though). multi_usrp has received a couple of new functions, as well.

This is just a high-level list of changes! Have a peek at the changelog
below for details, or the git commit logs for even more detail.

Tarballs and installers for Debian and Fedora are online, as well as the
updated manual.

As usual, this resets maint branch to master. Going forward, we will
continue to fix bugs on maint, and add features on master, which will
become the next release (3.10) eventually. So, as usual, users
interested in the most stable code should stick to our maint branch.

The tag for this release is available here:



  • X300: Updated DAC ctrl, FPGA toolchain is now entirely Vivado,
    improved master clock controls, added ADC self-cal capability,
    prepared for revisions 7 and 8, fixed flow control issue which
    could cause device to hang when receiving too many overruns
  • B2XX: Auto clock rate setting, added PID/VID pairs to support
    all B2XX- and derivatives, added temperature sensor, improved
    DC offset and IQ imbalance correction, added AGC support,
    support for FPGPIO connector on Rev6+ boards, full clock range
    updated FX3 firmware (side-channel logging capabilities, updated
    tx voltage swing, better configurability), default tick rate now
    16 MHz, added B200mini support
  • E3XX: Added temperature sensor, FPGA toolchain is now entirely Vivado,
    improved DC offset and IQ imbalance correction, added AGC support,
    improved FPGA capture interface robustness for RFIC, make frame
    sizes configurable, replaced GPS control code with gpsd interfacing
  • Octoclock: Fixed bootloader + ethernet capabilities
  • Compilers: Supported MSVC versions are now 2012, 2013, 2015
    (dropped 2010 support), added MinGW capabilities
  • Documentation: Many minor fixes and updates, merged all the
    info from code.ettus.com
  • UHD: Added sid_t, CHDR-specific transports now get their own
    (un)packer codes, fixed a lot of compiler warnings, added
    filter API (currently available for AD9361 frontend), added
    soft-register API, replaced Cheetah with Mako, full Py3k
    compliance, updated images downloader tool (now is one tool
    for all devices), CMake minimum version is now 2.8, refactored
    general AD9361 peripheral management, refactored most core
    control management, added usb_error type (used by B2xx devices),
    better exception handling at runtime, added C wrapper API,
    new dependency: python-requests
  • C API: Added to UHD (wraps C++ calls in C)
  • multi_usrp: Added normalized gain setters/getters, IQ imbalance
    • DC offset correction API, filter API
  • Converters: Converter symbols now exported, better logging,
    removed ORC dependency, added u8 converters
  • Examples: Whitespace- and other cleanup, multi-channel fixes for
    some examples
  • Utils: Read more property tree types from the command line
  • Tools: kitchen sink updated, added mega_fft