UHD 4.8.0.0
Highlights / Main Changes
- Addition of rfnoc_modtool and further improvements to RFNoC Image Builder
toolsets. This further improves the ability to design RFNoC blocks and
create custom FPGA bitfiles. - Replaced RFNoC FFT block with a new version
- Improved Windows installation capabilities including distribution
of binary Python bindings for Windows though PyPI
New Features
- Image Builder
- Add GRC support. This allows designing RFNoC bitfiles from GNU Radio
Companion (GRC). - Improve clock connection checks and checks for duplicate connections.
- Improve IO port compat check (e.g., check if wire widths match).
- Allow default clocks in domain checks.
- Simplify image core YAMLs by better usage of RADIO_NIPC parameter.
- Improve parameter resolution.
- Improve error messages for missing YAML files.
- Add --SYNTH and --CHECK options.
- Add support for building an FPGA image using multiple parallel jobs and
unique seeds with repeat_fpga_build.py and the --fpga-jobs option. - Add 'q' (or 'quote') filter to YAML files to allow quoting strings.
- Add GRC support. This allows designing RFNoC bitfiles from GNU Radio
- rfnoc-gain (OOT RFNoC example)
- Overhaul directory structure, and rename to rfnoc-gain from
rfnoc-example. - Simplify dynamic loading of OOT DLLs by using the new modules.d feature.
- Add CE clock support to gain block. This enables the example on X4x0.
- Add a GNU Radio subdirectory with examples of how to run the gain block
in GNU Radio.
- Overhaul directory structure, and rename to rfnoc-gain from
- Add rfnoc_modtool. This is a command line utility to help design OOT RFNoC
blocks and replaces the previously available blocktool. - RFNoC
- Add tune requests. This allows tuning a complete graph as known from
multi_usrp instead of single blocks individually. - Replace FFT block with a new version supporting larger FFT sizes and
cyclic prefix insertion and removal.
- Add tune requests. This allows tuning a complete graph as known from
- multi_usrp
- Add Python bindings for get_user_settings_iface()
- General UHD
- Add modules.d support
- Add uhd::find_uhd_command() API call
- Remove old-style Boost.Asio usage for compatibility with future versions
of Boost.
- Embedded Filesystem
- Support for USB Audio devices on E31X, E320, N3XX and X4XX
- Windows binary installer
- Simplified the Windows installer experience by reducing the number of
individual downloads from 4 (for USB devices) to 2, by including
libusb.dll and USB driver installer files into NSIS-built installer
binaries. - Add new cmake feature option called ENABLE_EXTEND_WIN_PACKAGING,
which defaults to off. Enabling this feature will cause a number
of convenience components to be included into the Windows deployment
package (aka. installer).
Enabling this feature has no effect on other platforms. - Added binary Python bindings for Windows installable through PyPI
(pip install uhd)
- Simplified the Windows installer experience by reducing the number of
- Documentation
- Add documentation about relationship of MTU, samples per packet and
atomic item size
- Add documentation about relationship of MTU, samples per packet and
Dependencies changes
- Increase minimum required versions
- CMake to 3.12
- Boost to 1.66
Bug Fixes
- General UHD
- Fix compatibility with DPDK >= 22.11
- Fix compiler warnings for better compatibility with C++17 and 20.
- Add logic for loading uhd.dll from the correct path for Windows with
Python3.8+. - Add logic to warn about potential incompatibilities when importing
Python bindings. - Remove duplicate results from find
- Release GIL when calling find from Python which improves response time
for large setups.
- Python support
- On Windows now also enable building python support if minimum supported
python version is detected. - Changed version number format for build Windows binaries to common
major.api.abi.patch format.
- On Windows now also enable building python support if minimum supported
- MPM
- Allow images without RF frontend (will only be initialized if FPGA
reports availability) - Fix usrp_update_fs to work for all embedded devices (and not just X4xx)
- Allow images without RF frontend (will only be initialized if FPGA
- E320: Ensure consistent sequencing when powering on/off GPSDO
- N310/N300: Fix LO query API for lowband LO
- RFNoC
- RFNoC DDC/DUC block (used in all Gen-3 USRPs and X410): Fix fractional
frequency offset. - Fix AIS/spp calculation (e.g., for connecting FFT blocks).
- Fix USE_IMPL rendering for the addsub block.
- RFNoC DDC/DUC block (used in all Gen-3 USRPs and X410): Fix fractional
- Image Builder
- Fix colors
- Fix error message for missing control SEP
- Improve error reporting for invalid connections
- Accept ~ and ~user on command line
- Fix deprecated usage of yaml.load()
- Ensure correct device tree files generation when choosing a custom build
directory
- rfnoc_modtool
- Fix generation of noc_shells
Validated OS Environments
(Versions for build and runtime dependencies can be determined from the
docker container definitions in the UHD repository at .ci/docker/...)
- Linux:
- Ubuntu: bionic (18.04), focal (20.04), jammy (22.04), noble (24.04)
- Fedora: 39, 40, 41
- Windows: 10 21H2, 11 21H2
- MacOS: Monterey (12.6)