Go to file
TalFel 2feedf3338 multi_usrp: set_master_clock_rate function now sets duc/ddc rates
RFNoC's `multi_usrp` did not fully propagate `set_master_clock_rate()`
to the DUC/DDC chain.

Before this change, `set_master_clock_rate()` updated only the radio
rate. If a channel had a DUC or DDC, the adjacent converter rate was
left stale:
- TX: the DUC output rate was not updated to the new radio rate
- RX: the DDC input rate was not updated to the new radio rate

That caused follow-up `set_tx_rate()` / `set_rx_rate()` calls on the
same `multi_usrp` object to operate on outdated DUC/DDC state. In
practice, after changing the master clock, setting the channel sample
rate could be coerced unexpectedly because interpolation/decimation was
derived from the old converter-side rate.

This change updates `multi_usrp_rfnoc` so that `set_master_clock_rate()`:
- propagates the new radio rate to the attached DUC/DDC
- reapplies the previously requested per-channel TX/RX rate so the
  DUC/DDC continues to follow the user-requested sample rate

Note that property propagation by itself is insufficient here, because
multi_usrp_rfnoc caches RX and TX rates, and these caches require
manual updating.

Co-authored-by: Martin Braun <martin.braun@ettus.com>
2026-09-18 15:51:09 +01:00
.ci ci: mutex_hardware: remove vivado_dir parameter 2026-09-17 18:40:18 +02:00
.github github: update template so it works with the UI 2025-04-29 18:21:53 +02:00
firmware host/firmware/tools: Update minimum CMake versions 2025-09-24 13:48:07 +02:00
fpga fpga: b310: Use a resources file for RFNOC_OOT_SRCS 2026-09-16 09:59:04 -05:00
host multi_usrp: set_master_clock_rate function now sets duc/ddc rates 2026-09-18 15:51:09 +01:00
images images: Update to final 4.11.0.0 release candidate 2026-09-08 10:24:37 +01:00
mpm mpm: usrp_update_fs: adopt EEPROM path for E31X 2026-09-02 15:55:00 +01:00
tools ci: Build UHD DEBs with B310 support 2026-09-15 23:44:29 +01:00
.clang-format Update clang-format for version 14 2023-08-07 15:35:56 -05:00
.clang-format-ignore host/mpm: replace mpRPC with gRPC transport 2026-07-09 12:12:04 +02:00
.clang-tidy Add clang-tidy file 2021-03-04 08:07:26 -06:00
.gitattributes uhd: Add support for the USRP X410 2021-06-10 12:01:53 -05:00
.gitignore Move ignore of build folders into top level 2025-07-18 11:19:52 +02:00
.gitmodules Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
.pre-commit-config.yaml pre-commit: Add Doxygen comment format check 2026-05-28 14:10:22 +02:00
.readthedocs.yaml docs: fixing the readthedocs builds 2023-11-10 16:01:01 -06:00
CHANGELOG CHANGELOG: Correct and update UHD 4.11 features 2026-09-08 09:28:31 +01:00
CODING.md coding guidelines: Add information on documentation 2026-05-28 14:10:22 +02:00
CONTRIBUTING.md doc: Add information about NI SRM 2024-01-09 08:52:16 -06:00
LICENSE.md Merge FPGA repository back into UHD repository 2020-01-28 09:35:36 -08:00
README.md Update README.md 2026-06-08 09:41:18 +02:00

USRP Hardware Driver (UHD™) Software

Welcome to the UHD™ software distribution! UHD is the free & open-source software driver and API for the Universal Software Radio Peripheral (USRP™) SDR platform, created and sold by Ettus Research.

UHD supports all Ettus Research USRP™ hardware, including all motherboards and daughterboards, and the combinations thereof.

Documentation

For technical documentation related to USRP™ hardware or UHD system design, check out the UHD and USRP Manual. That is where you can find Installation Instructions, help on how to build UHD from source on different platforms, development guidelines and reference documentation as well as device usage guidance.

Additionally, be sure to check out the Ettus Research FAQ, and the Knowledge Base for useful application notes and tutorials.

OS Support

UHD is primarily developed on Linux, but we also test and support the following operating systems.

  • Linux (Fedora and Ubuntu)
  • Mac OS X
  • Windows 11

Other operating systems will most likely work, too, but are not officially supported.

Applications

UHD can be used to build stand-alone applications with USRP™ hardware, or with third-party applications. Some common toolkits / frameworks are:

Directories

host/

The source code for the user-space driver.

mpm/

The source code for the module peripheral manager (MPM). This is code that is run on embedded devices.

firmware/

The source code for all microprocessors in USRP hardware.

fpga/

The source code for the UHD FPGA images.

images/

This contains the package builder for FPGA and firmware images. We provide other tools to download image packages, the scripts in here are mainly relevant for UHD maintainers and -developers.

tools/

Additional tools, mainly for debugging purposes. See the readme-file in that directory for more details on the individual tools.