uhd/host
Virendra Kakade 94fd6241b8 examples: Fix replay capture at coerced sample rates
rfnoc_rx_replay_samples_to_file.py could hang and then abort with
"Timeout while loading replay buffer!" whenever the requested sample
rate was not an integer divisor of the master clock rate. For example,
requesting 200 Msps at an MCR of 368.64 MHz would leave the record
buffer stuck at exactly 50% fullness.

Two problems combined to cause this:

First, the rate was read back from the DDC before the graph was
committed. At that point the DDC's input sample rate property is not
yet valid, so set_output_rate() falls back to setting the output edge
property and returns the uncoerced, requested rate. The example then
reported a rate that the DDC never actually applied.

Second, run_capture() derived the number of samples to request from the
radio with int(radio_rate / rate), truncating instead of rounding. With
a radio rate of 368.64 Msps and a nominal rate of 200 Msps this yielded
a ratio of 1 rather than the decimation the DDC had actually settled on,
so the radio was told to produce only half the samples needed to fill
the record buffer.

The rate is now read back with get_output_rate() after graph.commit(),
when property propagation has completed, and the user is warned when
the requested rate had to be coerced. The rate ratio is computed with
rounding, so the radio is asked for the full number of samples the
record buffer needs.

While here, fix two related issues in the readback path. The DDC port
is now taken from the destination port of the discovered edge rather
than assuming it matches the radio channel index, and the rate is read
per channel (from the DDC where one is present, otherwise from the
radio) so that chains without a DDC are not ignored. Rates are compared
against a tolerance rather than for exact float equality.

Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
2026-09-07 17:03:01 +01:00
..
cmake CHANGELOG: Update UHD 4.11 new features descriptions 2026-09-02 18:40:29 +01:00
docs docs: Update statement in x4xx user manual section. 2026-09-02 18:34:54 +01:00
examples examples: Fix replay capture at coerced sample rates 2026-09-07 17:03:01 +01:00
include doc: fpga: host: Updated Wideband DDC DUC related documentation 2026-08-23 02:03:43 +02:00
lib adrv9032: make tx qec tracking cals default 2026-08-28 15:03:39 +01:00
python uhd: remove rj45 argument from X420 IQ correction 2026-08-27 08:40:35 +01:00
tests fpga: fix typo in yml files 2026-08-28 16:09:35 +01:00
utils image builder: add x420 support 2026-08-28 16:06:17 +01:00
.gitignore Move ignore of build folders into top level 2025-07-18 11:19:52 +02:00
CMakeLists.txt host/mpm: replace mpRPC with gRPC transport 2026-07-09 12:12:04 +02:00
LICENSE uhd/host: clarifying LICENSE file 2014-04-10 12:44:42 -07:00
README.md host: fixed mailing list URL in readme 2025-01-21 08:08:56 +01:00
uhd.pc.in pkg-config: Remove boost_system library from linker flags 2025-09-24 11:35:07 +02:00

Host UHD™ Software Source Code

This directory tree contains the source code that builds the UHD software library on your host computer. This library contains the drivers for all Ettus Research products, and the framework and API that make them usable to application-level programs. The UHD library runs entirely in user-space.

Documentation

For documentation, please refer to the following resources:

For technical documentation related to our devices and UHD check out the UHD and USRP Manual.

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

Support

If you have purchased an Ettus Research USRP™ product and need technical support using the device or using this UHD™ software, please e-mail the USRP-Users mailing list, which is where Ettus Research, and our community, provide support to users.

Note that you must be subscribed to the list in order to post a message to the list. This is to prevent spammers from just sending garbage messages out over the listserve.