Go to file
Roman Pope ec86cd7b2c lib: Fix lost wakeup in msg_task startup
msg_task_impl's constructor waits on _start_cv until _running is set,
checking the predicate under _mutex. task_loop() set _running and
called notify_one() without taking _mutex, so a notification sent
after the constructor had checked the predicate but before it started
to wait was lost, and the constructor then blocked forever.

The condition-variable handshake replaced a boost::barrier, which
cannot lose a wakeup, in 3855516f6f ("lib: Remove boost::thread usage
from USB transports"), so UHD 4.10.0.0 and 4.11.0.0 are affected. On
a B210 the hang leaves b200_impl's constructor blocked in
msg_task::make() right after "Operating over USB 3.". It shows up
most when the device is opened at a real-time priority, as SDR
applications that raise their priority before opening the device do.

Set _running while holding _mutex, then notify.
2026-09-29 10:49:42 +02:00
.ci fpga: ci: Replace modelsim with questasim 2026-09-29 09:09:08 +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: Upgrade to Vivado 2025.2: Repair all testbenches 2026-09-29 09:09:08 +02:00
host lib: Fix lost wakeup in msg_task startup 2026-09-29 10:49:42 +02:00
images images: Update to final 4.11.0.0 release candidate 2026-09-08 10:24:37 +01:00
mpm rpc_server: return UNAVAILABLE for RPCs during device reset 2026-09-18 16:18: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.