Commit Graph

8062 Commits

Author SHA1 Message Date
Max Becker
148c861163 host: Extend the SPI interface
Introduce 64-bit SPI transaction methods into the common spi_iface API,
default implementation throws an uhd::unsupported_operation exception.
Add explicit 32-bit aliases for the old/existing SPI transactions
methods.

Expose the width-specific operations through the RFNoC Python bindings.
2026-09-29 13:12:32 +02:00
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
Ryan Volz
7a44637627 cmake: Add missing log_add_impl.hpp to distributed headers
This is a new header for v4.11, referenced by the existing log.hpp and
log_add.hpp public headers.

Signed-off-by: Ryan Volz <ryan.volz@gmail.com>
2026-09-29 10:47:51 +02:00
Max Köhler
0df07dcde8 fpga: Upgrade to Vivado 2025.2: Repair all FPGA compiles 2026-09-29 09:09:08 +02:00
Grant Meyerhoff
c6e4c50945 tests: replace .format() usage with f-strings 2026-09-22 15:19:41 +02:00
Grant Meyerhoff
66c66a4d2b devtest: use tx eob ack timeout for benchmark_rate 2026-09-22 15:13:03 +02:00
Grant Meyerhoff
4eeee62aad examples: optionally wait for Tx EOB on benchmark_rate 2026-09-22 15:13:03 +02:00
Grant Meyerhoff
50a47f75de b300: fix GPS timepulse polarity 2026-09-18 16:14:09 +01:00
Max Köhler
99fe17071f image builder: find FPGA path from Git repository root 2026-09-18 16:05:51 +01:00
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
Marian Koop
5e9888c204 cmake: Bump master to 4.11.1 2026-09-15 23:47:53 +01:00
Virendra Kakade
eb785ff23b ci: Build UHD DEBs with B310 support
Add nib310rio-dev to the Debian build dependencies so the UHD package
build fails if the B310 userspace header is unavailable instead of
silently disabling B300 support.

The Ubuntu installer pipeline downloads the nib310rio Debian package
artifact and exposes it to pbuilder as a local apt repository. This lets
pbuilder satisfy the new dependency inside the clean build root where
CMake checks for nib310rio/nib310rio.h.
2026-09-15 23:44:29 +01:00
Marian Koop
6fbadafde6 cmake: Update stable branch property 2026-09-08 10:24:37 +01:00
Marian Koop
c57e8cb30d doc: Extend x4xx loading the fpga image section. 2026-09-08 10:06:38 +01:00
Martin Anderseck
72d896bd25 CHANGELOG: Correct and update UHD 4.11 features
This adds the Linux kernel update as highlight and corrects the
statement about the X420/X440 repeatable phase offsets.
2026-09-08 09:28:31 +01:00
Jörg Hofrichter
d687c4ebbe host: mpmd based uhd_image_loader: prefer .bin files
Prefer .bin over .bit files when loading FPGA without full
FPGA path name. This changes the order which was introduced
with commit 2618b51cb8.
2026-09-08 09:27:55 +01:00
Michael Dickens
6cb889675f python: add range property tree access 2026-09-08 00:02:36 +01:00
Lars Amsel
9e8b5b9553 examples: Fix l-band capture setup
Because X440 images now can also contain DDC/DUC we cannot direct
connect the radio with the replay block anymore. Instead we have
to rely on the uhd.rfnoc util connect_through_blocks function
which will find a route through the statically connected DDC/DUC
if they are present or connect the SEPs directly if they are not.
2026-09-07 17:06:06 +01:00
Grant Meyerhoff
4caf56aa0d docs: b300: add more complete multi-device sync docs 2026-09-07 17:03:43 +01:00
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
Jörg Hofrichter
9a3a47bb69 CHANGELOG: Update UHD 4.11 new features descriptions
- Updated the description of the fabric resampler addition.
- Corrected the documentation for the default state of the MPM serialization setting.
2026-09-02 18:40:29 +01:00
Frank Dietze
7bd5f8047a debian: update upload_debs.sh 2026-09-02 18:39:53 +01:00
Frank Dietze
635e73e7e0 debian: fix arch strings 2026-09-02 18:39:53 +01:00
Marian Koop
856a3e7dd2 docs: Update statement in x4xx user manual section. 2026-09-02 18:34:54 +01:00
Jörg Hofrichter
7d26845c08 docs: x4xx: Added information on locked FPGA variants 2026-09-02 16:45:32 +01:00
Grant Meyerhoff
394768bcff docs: b300: adjust wording with default change
- Tx QEC tracking cals were enabled by default in a recent change.
2026-09-02 10:12:37 +02:00
Javier Valenzuela
31ca7a5497 host: docs: add b300 resource utilization 2026-09-02 10:11:07 +02:00
Virendra Kakade
b8114103c7 docs: b300 streaming docs
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
2026-09-02 10:09:32 +02:00
Grant Meyerhoff
881f19db7c examples: handle sigint in rx_ascii_art_dft 2026-08-28 16:11:32 +01:00
Max Köhler
4e3912efd8 fpga: fix typo in yml files 2026-08-28 16:09:35 +01:00
Max Köhler
0e680f9cb6 image builder: add x420 support 2026-08-28 16:06:17 +01:00
Grant Meyerhoff
e866ff81f9 adrv9032: make tx qec tracking cals default 2026-08-28 15:03:39 +01:00
Wade Fife
02f11f970c b310: Flush stale RX data before enabling DMA
Signed-off-by: Grant Meyerhoff <grant.meyerhoff@emerson.com>
2026-08-28 14:58:07 +01:00
Wade Fife
53a1ef762e rfnoc: fir filter: Use burst op to write coefficients 2026-08-27 16:13:24 +01:00
Max Köhler
44ecdb1f39 uhd: remove rj45 argument from X420 IQ correction 2026-08-27 08:40:35 +01:00
Max Becker
f0b4bf59f7 examples: rfnoc-gain: Update OOT example
- Fix target link libraries (UHD::uhd instead of uhd)
- Updated README
  - Better describe the different ways to build the FPGA bitfiles
  - Mention pybind11 requirement
- Add x410 image core to CMakeList to enable using make for this image
2026-08-25 17:40:59 +02:00
Abhishek Verma
1da439c020 host/mpm: change MPM_RPC_PORT to avoid UHD<4.10 discovery crash
UHD hosts <4.10 speak mprpc and unconditionally connect to the RPC port
(49601) of any device they discover. When they reach a gRPC-based MPM
device, the protocol mismatch crashes uhd_find_device.

UHd host 4.10, prevents this by using rpc_version key from discovery
response and skips RPC attempt if mprpc device found during
uhd_find_devices.

This change moves the RPC port to 49602. Now, old UHD <4.10 hosts can
still discover both mprpc and grpc devices. But their mprpc connection
attempt on 49601 during uhd_find_devices is refused by grpc device
(running on new rpc port 49602) and is marked as not reachable instead
of crashing.
2026-08-25 12:11:37 +02:00
Martin Anderseck
ec7e94bd4b doc: Add Discoverable Feature Python doc
This adds the documentation of how to work with discoverable features in
the UHD Python API.
2026-08-24 23:12:45 +02:00
Martin Anderseck
167c179816 test: Add DiscoverableFeature Python API test
This adds a test that verifies that the DiscoverableFeature Python API
works properly.
2026-08-24 23:12:45 +02:00
Martin Anderseck
44791931c8 host: examples: Add Python SPI example for X4xx
Since with the availability of discoverable features in Python it is
possible to use the front panel SPI of the X4xx series from there, this
example shows how to do this. It is pretty much on par with the C++
version.
2026-08-24 23:12:45 +02:00
Martin Anderseck
538a2e3fb3 python: Make discoverable features available
This makes all discoverable features available and creates a pattern for
any future discoverable features.
2026-08-24 23:12:45 +02:00
Abhishek Verma
05443d301d host/mpm: make gRPC robust to idle teardowns
The main RPC channel can sit idle for a long time (e.g. an interactive
Python session) while only the claim-loop channel sees traffic. Without
keepalive, gRPC self-closes the idle transport (~30 min) and the next
RPC fails re-establishing within its per-call deadline.

With this change the client now pings every 30 s to keep the channel
warm, and the server is configured to accept that cadence instead of
replying GOAWAY "too_many_pings".
2026-08-23 02:23:02 +02:00
Marian Koop
f9e8c5896f python: Fix error in python import warning on Windows 2026-08-23 02:11:55 +02:00
Max Köhler
f0b5d454cc doc: add phase coherency information 2026-08-23 02:03:43 +02:00
Niels Garibaldi
344c6793ac doc: fpga: host: Updated Wideband DDC DUC related documentation
Updated the references to DDC and DUC RFNoC blocks to reflect the
new split between legacy(singlesample) and wideband(multisample)
implementations.
Updated the related manual references as well as the C++ block
controller API comments that are pulled in by doxygen.
Also fixed a minor outdated comment in the FPGA source code.
2026-08-23 02:03:43 +02:00
Virendra Kakade
c0be7431c0 fixup! docs: add b310 kernel driver docs 2026-08-23 00:22:47 +02:00
Virendra Kakade
cc29eb4496 docs: add b310 transport notes
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
2026-08-23 00:22:47 +02:00
Virendra Kakade
add2d9efa6 docs: add b310 kernel driver docs
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
2026-08-23 00:22:47 +02:00
Grant Meyerhoff
0e9a62834f docs: Add B310 documentation 2026-08-23 00:22:47 +02:00
Grant Meyerhoff
e98e866709 b300: fix external ref assignment 2026-08-23 00:22:03 +02:00