Commit Graph

11932 Commits

Author SHA1 Message Date
Martin Braun
bedb3092d7 Update README.md
- Fix install manual page link
- Update Windows support
- Point to RTD
2026-06-08 09:41:18 +02:00
Martin Braun
510ecf6a9e udp: Reduce Boost usage
Note: Boost.Asio is not removed, but this removes the usage of Boost
timers.
2026-06-08 09:40:04 +02:00
Martin Braun
d2f4dc5aa1 cmake: Flag manifest.txt as CMAKE_CONFIGURE_DEPENDS
Previously, we used a hack with configure_file() to achieve the same
effect, but that would not allow building UHD on read-only volumes.
2026-06-08 09:38:59 +02:00
Martin Braun
cd23e5fcae lib: Remove spurious boost includes 2026-06-08 09:38:35 +02:00
Martin Braun
0daefae791 uhd: Remove Boost usage from bounded_buffer
Except for boost::circular_buffer, all Boost usage is removed.
2026-06-05 15:28:14 +02:00
Andre Zoch
cc04f39136 log: Add missing direct include of <map>
<map> is implied by <boost/date_time/posix_time/posix_time.hpp>. This
adds an explicit include so we can remove the Boost header in the
future.
2026-06-05 15:28:14 +02:00
Martin Braun
e26258d42c docker: Replace Fedora 41 builder with Fedora 44
- Remove uhd-builder-fedora41.Dockerfile (EOL)
- Add uhd-builder-fedora44.Dockerfile based on fedora:44
- Use --root-user-action=ignore for pip invocations
- Build-tested with GCC 16.1.1 and Python 3.14.4
2026-06-04 09:06:16 +02:00
Frank Dietze
745cb77c1e ci: docker: temporarily exclude py313 Windows builder 2026-06-02 11:38:22 +02:00
Martin Anderseck
51037a3e7a mpm: hbx: Handle PG glitch on power-up
In rare cases it was observed that the power good bits of the mixer
chips used in HBX show `1` already before they are really up. That could
cause the power-up sequence to continue even though those chips are not
yet up which needs to be avoided. This is accomplished by querying the
PG bits twice before and evaluating both, so any short glitches get
ironed out.
In addition, because the code for ADMV1420 and 1320 was similar enough,
it was changed to be a bit shorter and more pythonic.
2026-06-01 16:25:06 +02:00
Martin Anderseck
98bf5e02a0 doc: Add note about mgmt_addr
When using X420/X440 via their QSFP28 interfaces, an MPM reboot due to
clocking changes may cause timeout errors because the QSFP28 interfaces
are cycling down and up again during the MPM reboot and the connection
gets lost for some time. This commit adds a note about this and how to
circumvent this.
2026-06-01 15:24:33 +02:00
Martin Anderseck
eb7d518899 x4xx_bist: Change retval for tests not running
The SPI flash BiSTs can only run for X410 as only the X410
daughterboards have a flash memory on them. There is a check for that in
the tests already, but if they aren't running on X410 they used to
return `False` indicating some kind of error. But since it is not an
error if a test tries to test something that is definitely not there on
a different device it now only reports that but returns `True` to not
cause confusion for X420/X440 users.
2026-06-01 12:58:12 +02:00
Martin Braun
017482c3b5 lib: Fix compiler warnings with GCC 16 / Python 3.14
sim_find.cpp: Python 3.14's pyconfig.h redefines _POSIX_C_SOURCE and
_XOPEN_SOURCE to older values, but only if they haven't been defined yet.
Moving <Python.h> to be the first include (before any system header that
pulls in features.h via <string>) prevents the -Wmacro-redefinition
warnings that become errors under -Werror.

usrprio_rpc_client.cpp: Value-initialize usrprio_device_info to silence
-Wmaybe-uninitialized on the interface_num member, caught by GCC 16.
2026-06-01 11:02:13 +02:00
Martin Braun
6bc3e89ce0 rfnoc: move chdr_ctrl_xport::make() out of header
GCC 16 eagerly instantiates std::_Sp_counted_ptr_inplace<chdr_ctrl_xport>
in every TU that includes chdr_ctrl_xport.hpp with the inline make()
definition. This causes the destructor to be referenced in TUs that do
not link against chdr_ctrl_xport.cpp (e.g. client_zero_test), resulting
in undefined reference linker errors.

Fix by moving make() from the inline header definition into the .cpp
file, so std::make_shared<chdr_ctrl_xport> is only instantiated where
~chdr_ctrl_xport() is also defined.
2026-06-01 11:02:13 +02:00
Martin Braun
1d75f2acc9 tests: suppress GCC 16 false positive -Warray-bounds warning
GCC 16 emits a spurious -Warray-bounds warning when std::make_shared
uses placement new into its internal control block buffer. This causes
build failures in client_zero_test.cpp and mb_controller_test.cpp.

Suppress the warning with #pragma GCC diagnostic around the affected
std::make_shared calls, guarded by __GNUC__ >= 16 to leave older
compilers unaffected.

Fixes: https://github.com/EttusResearch/uhd/issues/923
2026-06-01 11:02:13 +02:00
Aki Tomita
fbf48c25b7 ci: Merge Windows signing stage with the installers build 2026-05-28 17:29:59 +02:00
Aki Tomita
9adb873b11 ci: Sign binaries for Windows builds 2026-05-28 17:29:59 +02:00
Clemens Felber
63a35841fa transport: match Linux UDP ICMP error behavior on Windows
On Linux, ICMP "Port Unreachable" is silently dropped on unconnected
UDP sockets but reported on connected sockets (ECONNREFUSED). Windows
reports WSAECONNRESET (10054) on all UDP sockets by default, breaking
device discovery when non-USRP hosts are on the subnet.

Apply SIO_UDP_CONNRESET=FALSE only for unconnected (broadcast) sockets,
leaving error reporting intact for connected sockets.
2026-05-28 17:29:00 +02:00
Martin Anderseck
16b9396fe8 host: x4xx: More selective triggering in experts
Originally, when the command time was changed, this triggered
programming experts in TX and RX direction. This caused long execution
times of any setters that were called at the same time (e.g.
set_*x_gain()). With this change, the calls with and without command
time are more on par. In HBX, the command time was used in an expert
where it was not necessary at all, so this has been removed, too.
2026-05-28 14:50:54 +02:00
Lars Amsel
32f56047f7 MPM: Fix regular expression
The regular expression used to validate the mpm shell output uses
backslash characters but does not escape them. Prepended the string
with "r" so that it is treated as a raw string.
2026-05-28 14:14:53 +02:00
Martin Anderseck
fc2b1abe95 host: hbx: Rebalance TX gain tables
This changes the TX gain tables for HBX in the range between 9 and 20
GHz to avoid overshoots that could occur otherwise when changing gains
especially from gain index 38 to 39.
2026-05-28 14:12:47 +02:00
Martin Anderseck
f6212289c6 coding guidelines: Add information on documentation
This adds information on what the C++ method documentation should look
like, so that Doxygen can get the most out of it.
2026-05-28 14:10:22 +02:00
Martin Anderseck
045aee0d11 pre-commit: Add Doxygen comment format check
This adds a basic check for the correct format of Doxygen comments.
Since there were comments that started with `//!` and continued in the
next line with `//`, but Doxygen only used the first line, this ensures
that there aren't any such comments anymore. Refer to the coding
guidelines to see the correct format for documentation in the code.
2026-05-28 14:10:22 +02:00
Martin Braun
8f6e756608 rfnoc: python: Expose ref_clk_calibration feature
This enables the ref_clk_calibration_iface discoverable feature in
Python. It can be used like this:

```python
mb_ctrl = graph.get_mb_controller(0)
ref_cal = mb_ctrl.get_ref_clk_calibration()
ref_cal.set_ref_clk_tuning_word(0x24a)
word = ref_cal.get_ref_clk_tuning_word()
ref_cal.store_ref_clk_tuning_word(word)
```

This feature is also exposed as a devtest.
2026-05-27 08:28:38 +02:00
Martin Braun
9fb2a5dfc2 tests: devtest: Fix YAML dumper
This was using a baseloader for dumping. It is modified to use a safe
dumper.
2026-05-27 08:28:38 +02:00
Marian Koop
f0cc0b46c9 ci: docs: Breakout doxygen build check into py script 2026-05-14 08:39:17 +02:00
Clemens Felber
21ba32dd78 host: set ZBX_LO_LOCK_TIMEOUT_MS to 50 ms
The previous value of 20 ms caused spurious timeout errors under load.
The ZBX LO lock consistently completes within 30 ms in integration
testing. 50 ms provides adequate margin without masking genuine LO lock
failures.
2026-05-14 08:39:02 +02:00
Clemens Felber
a4893220c4 rfnoc: fix stale ACK handling in ctrlport_endpoint
After FPGA image reload, the FPGA resets its CHDR sequence counter to
zero. Stale ACKs from the old session can then arrive with a seq_num
matching a pending request in the new session.

Tighten the match check: also require op_code, address, and (for
WRITE/BLOCK_WRITE) data payload to agree. Mismatches are dropped and
ctrl_out_of_sequence is incremented. Add unit tests for both mismatch
cases.
2026-05-14 08:39:02 +02:00
Frank Dietze
3d05ced7c7 ci: add rfnoc complex gain tests 2026-05-12 14:43:29 +02:00
Martin Braun
830e676f95 lib: usb: Remove Boost time functions
These time functions are specific to libusb1_zero_copy, which is used
for B2xx USB streaming. These functions are rarely used, don't compile
when enabled, and rely on Boost. If we ever need them again, we'll need
to put them back in using std equivalents.
2026-05-12 09:20:33 +02:00
Martin Anderseck
375e02bc1f doc: Adding streaming to general x4xx doc
This used to be in KB articles previously, but for the sake of
consolidation it moves into the manual and gets updated for X420, too.
2026-05-12 09:12:48 +02:00
Martin Braun
4a3873123b docs: Fix FPGA readme (Doxygen link) 2026-05-11 15:26:30 +02:00
Marian Koop
9e603ed1d4 ci: Enable PR trigger for docs 2026-05-11 12:49:18 +02:00
Frank Dietze
d468a81a59 ci: rftest: obx: fix skipped rftest execution 2026-05-11 12:33:50 +02:00
Abhishek Verma
db04ca1a79 ci: parameterize osmium duts where possible
replace devSerial, devAddr and jtagSerial with agent's
env varaibles.
2026-05-11 12:31:30 +02:00
Martin Braun
0290e1236e log: Replace boost::posix_time with std::chrono
The logging macros are not affected.

This is an API change, because the logging_info object is modified, and
this object is part of uhd::_log::log. However, neither of those objects
are supposed to be used directly, the only correct usage of those is via
the logging macros.

The exception is uhd::log::add_logger(). To not break the add_logger()
API, we create a backward compatibility layer and provide an add_logger()
API call that still supports the old version (that uses
boost::posix_time).
2026-05-11 10:53:36 +02:00
Martin Braun
10a33c2c2a lib: Add missing includes
This adds missing <cmath>, <algorithm>, <memory> and <string> includes.
These were previously implied by Boost includes that have now been
removed.
2026-05-11 10:53:36 +02:00
Marian Koop
57fc5f3b24 host: debian: Adapt patch to comment format changes 2026-05-08 08:08:28 +02:00
Martin Braun
fffe260c65 octoclock: Replace Boost usage with standard C++
The only remaining usage of Boost is some usage of boost::format, and
boost::asio.
2026-05-07 14:59:15 +02:00
Martin Braun
62efe55536 tests: Remove spurious boost/thread.hpp include 2026-05-07 14:59:15 +02:00
Martin Anderseck
40d6cf61aa doc: Fix documentation for Doxygen
This fixes many documentation issues where in the Doxygen output
sentences were incomplete and information was missing that is there in
the source files actually.
2026-05-07 14:58:01 +02:00
Martin Braun
3eb6fe492a uhd: Remove usage of boost::optional
- boost::optional is replaced by std::optional
- In public APIs, boost::optional is still usable, but it is declared
  deprecated. That means this is no API break (but it is an ABI break).
- Within the library portion (host/lib/**) there is no more usage of
  boost::optional. Some backward-compatibility code (in actions.cpp and
  ctrlport_endpoint.cpp) was moved out to the header.

Note: The most difficult replacement was that for
parse_log_level_from_string(), where boost::optional is the return
value. To retain API compatibility, we had to create a helper function.
2026-05-05 14:41:39 +02:00
Ahmed Salman
34bf82ad2b ci: x420: add s175 stage for rf & dev tests 2026-05-05 13:34:21 +02:00
Max Köhler
1993ec9f25 modtool: set default value for output FIFO depth 2026-05-04 09:09:43 +02:00
Max Köhler
2c411fc8cd fpga: x420: increase radio ctrl fifo size 2026-04-30 09:20:13 +02:00
Max Köhler
291888b8b0 modtool: Use localparam for the control output FIFO depth 2026-04-30 09:20:13 +02:00
Max Köhler
76235dc046 rfnoc: Expose control output FIFO size parameter in radio.yml 2026-04-30 09:20:13 +02:00
Max Köhler
5b368a6dcf fpga: rfnoc: radio: Add control output FIFO size parameter 2026-04-30 09:20:13 +02:00
Max Köhler
6bd71fbda3 fpga: tools: enable printing of all Vivado messages 2026-04-29 23:22:53 -05:00
Max Köhler
5949ab1999 fpga: lib: adjust chdr stream endpoint testbenches due to changed timing 2026-04-29 12:43:04 +02:00
Max Köhler
39acb3e136 fpga: ci: enable X420 configuration file to run chdr_stream_endpoint_tb 2026-04-29 12:43:04 +02:00