Compare commits

...

18 Commits

Author SHA1 Message Date
Frank Dietze
43875c9f25 host: cmake: fix patch version used for packaging
When called from a branch the patch version contained letters
which cmake is not able to process. This change set it to numbers.
2025-08-26 20:11:30 +02:00
Abhishek Verma
b1a00f232e docs: fix b206 seri pdf link in manual 2025-08-26 11:34:26 +02:00
Marian Koop
4b94e35549 images: Correct checksum for re-generated component. 2025-08-26 08:42:20 +02:00
Martin Anderseck
8fb889a7c2 ci: Fix Device or resource busy bug in pipeline
This fixes the Device or resource busy bug in the x4xx hardware test
pipeline step. To enable different bitfiles than the one that were baked
into the file system image, we delete the installed one and install a
different one. This involves bringing up MPM without a bitfile. So when
the next bitfile gets installed, resources from the still running
bitfile cannot be cleaned up properly, like the mtdblocks of the X410
flash memories. To still clean that up, we now unmount these before we
start up MPM without a bitfile again. We ignore any errors that might
come up here as these steps are executed on devices without flash
memories on the daughtercards, too.
2025-08-26 08:35:37 +02:00
Frank Dietze
b2d396d436 Prepare for 4.9.0.0 RC2
Update Changelog
- Add mention of new RFNoC OOT block repository to changelog.
  Add link to RFNoC OOT block github repository to README.
Update Readme with reference to new OOT block repo
Update Manifest

Co-authored-by: Niels Garibaldi <niels.steffen.garibaldi@emerson.com>
Co-authored-by: Marian Koop <marian.koop@emerson.com>
2025-08-23 00:21:06 +02:00
Frank Dietze
6a38b70fb1 ci: utils: Update winusb_drv file mapping in image_package_mapping.py 2025-08-23 00:21:06 +02:00
mhallada-NI
cf0f81079c docs: Rework USRP X4x0 Getting Started Guide
- Improved structure, expanded setup steps and added
helpful diagrams
- Added step-by-step instructions for kit verification,
network setup and host requirements
- Consolidated section for troubleshooting
- Enhanced clarity for stand-alone vs. network modes
- Included security, care and handling guidelines
- Reorganized advanced topics such as serial connection
and microcontroller access
2025-08-23 00:03:44 +02:00
Aki Tomita
9018f578b2 cmake: Adjust the UHD_VERSION check to work with cmake 4.1
UHD_VERSION needs to be also checked against an empty string
since cmake 4.1 sets this variable during project setup, also
if it was undefined before. Furthermore we need to backup and
restore custom UHD_VERSION when defined for e.g. by using option
-DUHD_VERSION=<version>, because project() setup will reset the
version to an empty string.
2025-08-22 16:18:42 +02:00
Martin Braun
aa0c47877d debian: Enable building of uhd-rfnoc-dev
When building Debian packages, we now enable -DENABLE_RFNOC_DEV=ON and
put the HDL source files into a new package (uhd-rfnoc-dev).
2025-08-22 15:56:03 +02:00
mhallada-NI
4e861c4085 example: Fixed order of import in rfnoc_gain example 2025-08-22 15:32:23 +02:00
Clemens Felber
5ad0d3c353 python: fixed warning when uhd.dll was not found
This fixes the silently fail of import uhd when
UHD_LIBRARY_PATH, UHD_PKG_PATH was not set and
UHD_INSTALL_PATH points to an invalid directory
2025-08-22 13:37:00 +02:00
Jörg Hofrichter
e82dcd6518 cmake: deb: add patch to fix UHD package path 2025-08-22 13:36:21 +02:00
Marian Koop
ccf87ebb90 cmake: win: Add winusbdriver packages for NI branded B-Series devices
Co-authored-by: Sascha Hoener <sascha.hoener@emerson.com>
2025-08-21 14:13:35 +02:00
Abhishek Verma
7118e805dd host: devtest: added comments and minor fix 2025-08-21 09:02:58 +02:00
Abhishek Verma
09d056c095 host: devtest: update for ruamel yaml load and dump changes 2025-08-21 09:02:58 +02:00
Marian Koop
8e57519fc8 docs: Update B2xx User Manual section with external document references
- Move B206 jackscrew info from kit content to another section
- Add Additional Documents section to include external (to ni.com)
  links to certification, specs, seri and enclosure assembly instructions
- Add getting started subsection to link to getting started tutorials
2025-08-21 09:02:14 +02:00
Marian Koop
893fbb2a50 doc: Update User Manual Binary Installation section for Windows
Change binary installation instructions for Windows to reflect that
installation of Windows USB driver packages is now fully integrated
into UHD installer and this previous post installation step is
no longer needed.
2025-08-20 16:06:40 +02:00
Niels Garibaldi
b3b64f3fed fpga: rfnoc: ddc: fix strobe_dds_clip assignment
Fixes an issue, where data got corrupted in the DDC following an
overflow, leading to data streaming not restarting correctly.
2025-08-19 17:55:08 +02:00
35 changed files with 18573 additions and 670 deletions

View File

@ -186,7 +186,8 @@ jobs:
scp -o StrictHostKeyChecking=no $(uhd_fpga_artifact_directory)/*/usrp_$(pytestDUT)_* root@$USRP_EMB_TARGET_IP:/usr/share/uhd/images/
ssh -o StrictHostKeyChecking=no -tt root@$USRP_EMB_TARGET_IP "md5sum /usr/share/uhd/images/usrp_$(pytestDUT)_fpga_$(dutFPGA).bit > /usr/share/uhd/images/usrp_$(pytestDUT)_fpga_$(dutFPGA).bit.md5"
ssh -o StrictHostKeyChecking=no -tt root@$USRP_EMB_TARGET_IP "md5sum /usr/share/uhd/images/usrp_$(pytestDUT)_fpga_$(dutFPGA).dts > /usr/share/uhd/images/usrp_$(pytestDUT)_fpga_$(dutFPGA).dts.md5"
ssh -o StrictHostKeyChecking=no -tt root@$USRP_EMB_TARGET_IP "rm /lib/firmware/x4*.* && systemctl restart usrp-hwd.service"
ssh -o StrictHostKeyChecking=no -tt root@$USRP_EMB_TARGET_IP "rm /lib/firmware/x4*.* && systemctl stop usrp-hwd.service"
ssh -o StrictHostKeyChecking=no -tt root@$USRP_EMB_TARGET_IP "umount /mnt/db*_flash || true && systemctl start usrp-hwd.service"
displayName: Copy FPGA pipeline images to device
condition: and(succeeded(), eq('${{ parameters.fpga_imgs_source }}', 'Pipeline'))

View File

@ -17,6 +17,14 @@ Change Log for Releases
- LabVIEW/USRP: New repository containing example applications which
demonstrate how to use NI LabVIEW with USRP devices via the UHD APIs.
(https://github.com/ni/labview-usrp-examples)
- Improved RFNoC OOT Block support:
New repository containing official RFNoC OOT Blocks
(https://github.com/EttusResearch/rfnoc-oot-blocks)
- Added new RFNoC Aurora Block for TX and RX remote streaming applications
to and from Aurora capable compute nodes like FPGA Coprocessors.
- Enhanced the UHD Windows installer to automatically install Windows
driver packages into the OS, eliminating this manual post-installation
step for B-Series USB devices.
* API Changes
- `uhd::math::gcd` and `uhd::math::lcm` are removed from the public
headers. Use `std::gcd` and `std::lcm` instead if C++17 is available,

View File

@ -41,6 +41,7 @@ UHD can be used to build stand-alone applications with USRP™ hardware, or with
third-party applications. Some common toolkits / frameworks are:
* [GNU Radio](http://gnuradio.org/)
* [RFNoC OOT Blocks](https://github.com/EttusResearch/rfnoc-oot-blocks)
* [NI LabVIEW - UHD RFNoC](https://github.com/ni/labview-usrp-examples)
* [NI LabVIEW](https://www.ni.com/download/ni-usrp-1.3/4711/en/)
* [MathWorks Matlab and Simulink](https://www.mathworks.com/discovery/sdr/usrp.html)

View File

@ -70,6 +70,9 @@ module ddc #(
wire dds_out_tready;
wire [15:0] dds_input_fifo_space, dds_input_fifo_occupied;
wire clip_out_tlast;
wire clip_out_tvalid;
wire [17:0] scale_factor;
wire last_cic;
wire last_cic_decimate_in;
@ -274,7 +277,6 @@ module ddc #(
.m_axis_dout_tvalid(dds_out_tvalid),
.m_axis_dout_tready(dds_out_tready),
.m_axis_dout_tdata({dds_out_q_tdata, dds_out_i_tdata})
);
// Drop MSBs to match expected gain/bit use found in freq shift
@ -290,9 +292,11 @@ module ddc #(
.i_tvalid(dds_out_tvalid),
.i_tready(dds_out_tready),
.o_tdata({i_dds_clip[WIDTH-1:8], q_dds_clip[WIDTH-1:8]}),
.o_tlast(last_cic_decimate_in),
.o_tvalid(strobe_dds_clip),
.o_tlast(clip_out_tlast),
.o_tvalid(clip_out_tvalid),
.o_tready(ddc_chain_tready));
assign last_cic_decimate_in = clip_out_tlast;
assign strobe_dds_clip = clip_out_tvalid & sample_out_tready;
assign i_dds_clip[7:0] = 8'h00;
assign q_dds_clip[7:0] = 8'h00;

View File

@ -11,355 +11,384 @@ PACKAGE_MAPPING = {
"e310_sg1": {
"type": "e3xx",
"package_name": "e3xx_e310_sg1_fpga_default-g{}.zip",
"files": ['usrp_e310_sg1_fpga.bit',
'usrp_e310_sg1_fpga.bit.md5',
'usrp_e310_sg1_fpga.dts',
'usrp_e310_sg1_fpga.dts.md5',
'usrp_e310_sg1_fpga.rpt',
'usrp_e310_sg1_idle_fpga.bit',
'usrp_e310_sg1_idle_fpga.bit.md5',
'usrp_e310_sg1_idle_fpga.dts',
'usrp_e310_sg1_idle_fpga.dts.md5',
'usrp_e310_sg1_idle_fpga.rpt']
"files": [
"usrp_e310_sg1_fpga.bit",
"usrp_e310_sg1_fpga.bit.md5",
"usrp_e310_sg1_fpga.dts",
"usrp_e310_sg1_fpga.dts.md5",
"usrp_e310_sg1_fpga.rpt",
"usrp_e310_sg1_idle_fpga.bit",
"usrp_e310_sg1_idle_fpga.bit.md5",
"usrp_e310_sg1_idle_fpga.dts",
"usrp_e310_sg1_idle_fpga.dts.md5",
"usrp_e310_sg1_idle_fpga.rpt",
],
},
"e310_sg3": {
"type": "e3xx",
"package_name": "e3xx_e310_sg3_fpga_default-g{}.zip",
"files": ['usrp_e310_sg3_fpga.bit',
'usrp_e310_sg3_fpga.bit.md5',
'usrp_e310_sg3_fpga.dts',
'usrp_e310_sg3_fpga.dts.md5',
'usrp_e310_sg3_fpga.rpt',
'usrp_e310_sg3_idle_fpga.bit',
'usrp_e310_sg3_idle_fpga.bit.md5',
'usrp_e310_sg3_idle_fpga.dts',
'usrp_e310_sg3_idle_fpga.dts.md5',
'usrp_e310_sg3_idle_fpga.rpt']
"files": [
"usrp_e310_sg3_fpga.bit",
"usrp_e310_sg3_fpga.bit.md5",
"usrp_e310_sg3_fpga.dts",
"usrp_e310_sg3_fpga.dts.md5",
"usrp_e310_sg3_fpga.rpt",
"usrp_e310_sg3_idle_fpga.bit",
"usrp_e310_sg3_idle_fpga.bit.md5",
"usrp_e310_sg3_idle_fpga.dts",
"usrp_e310_sg3_idle_fpga.dts.md5",
"usrp_e310_sg3_idle_fpga.rpt",
],
},
"e320": {
"type": "e3xx",
"package_name": "e3xx_e320_fpga_default-g{}.zip",
"files": ['usrp_e320_fpga_1G.bit',
'usrp_e320_fpga_1G.bit.md5',
'usrp_e320_fpga_1G.dts',
'usrp_e320_fpga_1G.dts.md5',
'usrp_e320_fpga_1G.rpt',
'usrp_e320_fpga_XG.bit',
'usrp_e320_fpga_XG.bit.md5',
'usrp_e320_fpga_XG.dts',
'usrp_e320_fpga_XG.dts.md5',
'usrp_e320_fpga_XG.rpt',
'usrp_e320_fpga_AA.bit',
'usrp_e320_fpga_AA.bit.md5',
'usrp_e320_fpga_AA.dts',
'usrp_e320_fpga_AA.dts.md5',
'usrp_e320_fpga_AA.rpt']
"files": [
"usrp_e320_fpga_1G.bit",
"usrp_e320_fpga_1G.bit.md5",
"usrp_e320_fpga_1G.dts",
"usrp_e320_fpga_1G.dts.md5",
"usrp_e320_fpga_1G.rpt",
"usrp_e320_fpga_XG.bit",
"usrp_e320_fpga_XG.bit.md5",
"usrp_e320_fpga_XG.dts",
"usrp_e320_fpga_XG.dts.md5",
"usrp_e320_fpga_XG.rpt",
"usrp_e320_fpga_AA.bit",
"usrp_e320_fpga_AA.bit.md5",
"usrp_e320_fpga_AA.dts",
"usrp_e320_fpga_AA.dts.md5",
"usrp_e320_fpga_AA.rpt",
],
},
"x300": {
"type": "x3xx",
"package_name": "x3xx_x300_fpga_default-g{}.zip",
"files": ["usrp_x300_fpga_HG.lvbitx",
"usrp_x300_fpga_XG.lvbitx",
"usrp_x300_fpga_HG.bit",
"usrp_x300_fpga_HG.rpt",
"usrp_x300_fpga_XG.bit",
"usrp_x300_fpga_XG.rpt"]
"files": [
"usrp_x300_fpga_HG.lvbitx",
"usrp_x300_fpga_XG.lvbitx",
"usrp_x300_fpga_HG.bit",
"usrp_x300_fpga_HG.rpt",
"usrp_x300_fpga_XG.bit",
"usrp_x300_fpga_XG.rpt",
],
},
"x310": {
"type": "x3xx",
"package_name": "x3xx_x310_fpga_default-g{}.zip",
"files": ["usrp_x310_fpga_HG.lvbitx",
"usrp_x310_fpga_XG.lvbitx",
"usrp_x310_fpga_HG.bit",
"usrp_x310_fpga_HG.rpt",
"usrp_x310_fpga_XG.bit",
"usrp_x310_fpga_XG.rpt"]
"files": [
"usrp_x310_fpga_HG.lvbitx",
"usrp_x310_fpga_XG.lvbitx",
"usrp_x310_fpga_HG.bit",
"usrp_x310_fpga_HG.rpt",
"usrp_x310_fpga_XG.bit",
"usrp_x310_fpga_XG.rpt",
],
},
"x410": {
"type": "x4xx",
"package_name": "x4xx_x410_fpga_default-g{}.zip",
"files": ["usrp_x410_fpga_X4_200.bit",
"usrp_x410_fpga_X4_200.bit.md5",
"usrp_x410_fpga_X4_200.dts",
"usrp_x410_fpga_X4_200.dts.md5",
"usrp_x410_fpga_X4_200.rpt",
"usrp_x410_fpga_UC_200.bit",
"usrp_x410_fpga_UC_200.bit.md5",
"usrp_x410_fpga_UC_200.dts",
"usrp_x410_fpga_UC_200.dts.md5",
"usrp_x410_fpga_UC_200.rpt",
"usrp_x410_fpga_CG_400.bit",
"usrp_x410_fpga_CG_400.bit.md5",
"usrp_x410_fpga_CG_400.dts",
"usrp_x410_fpga_CG_400.dts.md5",
"usrp_x410_fpga_CG_400.rpt",
]
"files": [
"usrp_x410_fpga_X4_200.bit",
"usrp_x410_fpga_X4_200.bit.md5",
"usrp_x410_fpga_X4_200.dts",
"usrp_x410_fpga_X4_200.dts.md5",
"usrp_x410_fpga_X4_200.rpt",
"usrp_x410_fpga_UC_200.bit",
"usrp_x410_fpga_UC_200.bit.md5",
"usrp_x410_fpga_UC_200.dts",
"usrp_x410_fpga_UC_200.dts.md5",
"usrp_x410_fpga_UC_200.rpt",
"usrp_x410_fpga_CG_400.bit",
"usrp_x410_fpga_CG_400.bit.md5",
"usrp_x410_fpga_CG_400.dts",
"usrp_x410_fpga_CG_400.dts.md5",
"usrp_x410_fpga_CG_400.rpt",
],
},
"x440": {
"type": "x4xx",
"package_name": "x4xx_x440_fpga_default-g{}.zip",
"files": ["usrp_x440_fpga_CG_400.bit",
"usrp_x440_fpga_CG_400.bit.md5",
"usrp_x440_fpga_CG_400.dts",
"usrp_x440_fpga_CG_400.dts.md5",
"usrp_x440_fpga_CG_400.rpt",
"usrp_x440_fpga_X4_400.bit",
"usrp_x440_fpga_X4_400.bit.md5",
"usrp_x440_fpga_X4_400.dts",
"usrp_x440_fpga_X4_400.dts.md5",
"usrp_x440_fpga_X4_400.rpt",
"usrp_x440_fpga_X4_200.bit",
"usrp_x440_fpga_X4_200.bit.md5",
"usrp_x440_fpga_X4_200.dts",
"usrp_x440_fpga_X4_200.dts.md5",
"usrp_x440_fpga_X4_200.rpt",
"usrp_x440_fpga_CG_1600.bit",
"usrp_x440_fpga_CG_1600.bit.md5",
"usrp_x440_fpga_CG_1600.dts",
"usrp_x440_fpga_CG_1600.dts.md5",
"usrp_x440_fpga_CG_1600.rpt",
"usrp_x440_fpga_X4_1600.bit",
"usrp_x440_fpga_X4_1600.bit.md5",
"usrp_x440_fpga_X4_1600.dts",
"usrp_x440_fpga_X4_1600.dts.md5",
"usrp_x440_fpga_X4_1600.rpt",
]
"files": [
"usrp_x440_fpga_CG_400.bit",
"usrp_x440_fpga_CG_400.bit.md5",
"usrp_x440_fpga_CG_400.dts",
"usrp_x440_fpga_CG_400.dts.md5",
"usrp_x440_fpga_CG_400.rpt",
"usrp_x440_fpga_X4_400.bit",
"usrp_x440_fpga_X4_400.bit.md5",
"usrp_x440_fpga_X4_400.dts",
"usrp_x440_fpga_X4_400.dts.md5",
"usrp_x440_fpga_X4_400.rpt",
"usrp_x440_fpga_X4_200.bit",
"usrp_x440_fpga_X4_200.bit.md5",
"usrp_x440_fpga_X4_200.dts",
"usrp_x440_fpga_X4_200.dts.md5",
"usrp_x440_fpga_X4_200.rpt",
"usrp_x440_fpga_CG_1600.bit",
"usrp_x440_fpga_CG_1600.bit.md5",
"usrp_x440_fpga_CG_1600.dts",
"usrp_x440_fpga_CG_1600.dts.md5",
"usrp_x440_fpga_CG_1600.rpt",
"usrp_x440_fpga_X4_1600.bit",
"usrp_x440_fpga_X4_1600.bit.md5",
"usrp_x440_fpga_X4_1600.dts",
"usrp_x440_fpga_X4_1600.dts.md5",
"usrp_x440_fpga_X4_1600.rpt",
],
},
"x410_cpld": {
"type": "x4xx",
"package_name": "x4xx_x410_cpld_default-g{}.zip",
"files": ["usrp_x410_cpld_10m04.rpd",
"usrp_x410_cpld_10m04.rpd.md5",
"usrp_x410_cpld_10m04.svf",
"usrp_x410_cpld_10m04.svf.md5",
"usrp_x410_cpld_10m08.rpd",
"usrp_x410_cpld_10m08.rpd.md5",
"usrp_x410_cpld_10m08.svf",
"usrp_x410_cpld_10m08.svf.md5"]
"files": [
"usrp_x410_cpld_10m04.rpd",
"usrp_x410_cpld_10m04.rpd.md5",
"usrp_x410_cpld_10m04.svf",
"usrp_x410_cpld_10m04.svf.md5",
"usrp_x410_cpld_10m08.rpd",
"usrp_x410_cpld_10m08.rpd.md5",
"usrp_x410_cpld_10m08.svf",
"usrp_x410_cpld_10m08.svf.md5",
],
},
"x440_cpld": {
"type": "x4xx",
"package_name": "x4xx_x440_cpld_default-g{}.zip",
"files": ["usrp_x440_cpld_10m04.rpd",
"usrp_x440_cpld_10m04.rpd.md5",
"usrp_x440_cpld_10m04.svf",
"usrp_x440_cpld_10m04.svf.md5",
"usrp_x440_cpld_10m08.rpd",
"usrp_x440_cpld_10m08.rpd.md5",
"usrp_x440_cpld_10m08.svf",
"usrp_x440_cpld_10m08.svf.md5"]
"files": [
"usrp_x440_cpld_10m04.rpd",
"usrp_x440_cpld_10m04.rpd.md5",
"usrp_x440_cpld_10m04.svf",
"usrp_x440_cpld_10m04.svf.md5",
"usrp_x440_cpld_10m08.rpd",
"usrp_x440_cpld_10m08.rpd.md5",
"usrp_x440_cpld_10m08.svf",
"usrp_x440_cpld_10m08.svf.md5",
],
},
"zbx_cpld": {
"type": "x4xx",
"package_name": "x4xx_zbx_cpld_default-g{}.zip",
"files": ["usrp_zbx_cpld_10m04.rpd",
"usrp_zbx_cpld_10m04.rpd.md5",
"usrp_zbx_cpld_10m04.svf",
"usrp_zbx_cpld_10m04.svf.md5",
"usrp_zbx_cpld_xo3lf.svf",
"usrp_zbx_cpld_xo3lf.svf.md5"]
"files": [
"usrp_zbx_cpld_10m04.rpd",
"usrp_zbx_cpld_10m04.rpd.md5",
"usrp_zbx_cpld_10m04.svf",
"usrp_zbx_cpld_10m04.svf.md5",
"usrp_zbx_cpld_xo3lf.svf",
"usrp_zbx_cpld_xo3lf.svf.md5",
],
},
"n310": {
"type": "n3xx",
"package_name": "n3xx_n310_fpga_default-g{}.zip",
"files": ['usrp_n310_fpga_HG.bit',
'usrp_n310_fpga_HG.bit.md5',
'usrp_n310_fpga_HG.dts',
'usrp_n310_fpga_HG.dts.md5',
'usrp_n310_fpga_HG.rpt',
'usrp_n310_fpga_XG.bit',
'usrp_n310_fpga_XG.bit.md5',
'usrp_n310_fpga_XG.dts',
'usrp_n310_fpga_XG.dts.md5',
'usrp_n310_fpga_XG.rpt',
'usrp_n310_fpga_WX.bit',
'usrp_n310_fpga_WX.bit.md5',
'usrp_n310_fpga_WX.dts',
'usrp_n310_fpga_WX.dts.md5',
'usrp_n310_fpga_WX.rpt',
'usrp_n310_fpga_AA.bit',
'usrp_n310_fpga_AA.bit.md5',
'usrp_n310_fpga_AA.dts',
'usrp_n310_fpga_AA.dts.md5',
'usrp_n310_fpga_AA.rpt'],
"files": [
"usrp_n310_fpga_HG.bit",
"usrp_n310_fpga_HG.bit.md5",
"usrp_n310_fpga_HG.dts",
"usrp_n310_fpga_HG.dts.md5",
"usrp_n310_fpga_HG.rpt",
"usrp_n310_fpga_XG.bit",
"usrp_n310_fpga_XG.bit.md5",
"usrp_n310_fpga_XG.dts",
"usrp_n310_fpga_XG.dts.md5",
"usrp_n310_fpga_XG.rpt",
"usrp_n310_fpga_WX.bit",
"usrp_n310_fpga_WX.bit.md5",
"usrp_n310_fpga_WX.dts",
"usrp_n310_fpga_WX.dts.md5",
"usrp_n310_fpga_WX.rpt",
"usrp_n310_fpga_AA.bit",
"usrp_n310_fpga_AA.bit.md5",
"usrp_n310_fpga_AA.dts",
"usrp_n310_fpga_AA.dts.md5",
"usrp_n310_fpga_AA.rpt",
],
},
"n300": {
"type": "n3xx",
"package_name": "n3xx_n300_fpga_default-g{}.zip",
"files": ['usrp_n300_fpga_HG.bit',
'usrp_n300_fpga_HG.bit.md5',
'usrp_n300_fpga_HG.dts',
'usrp_n300_fpga_HG.dts.md5',
'usrp_n300_fpga_HG.rpt',
'usrp_n300_fpga_XG.bit',
'usrp_n300_fpga_XG.bit.md5',
'usrp_n300_fpga_XG.dts',
'usrp_n300_fpga_XG.dts.md5',
'usrp_n300_fpga_XG.rpt',
'usrp_n300_fpga_WX.bit',
'usrp_n300_fpga_WX.bit.md5',
'usrp_n300_fpga_WX.dts',
'usrp_n300_fpga_WX.dts.md5',
'usrp_n300_fpga_WX.rpt',
'usrp_n300_fpga_AA.bit',
'usrp_n300_fpga_AA.bit.md5',
'usrp_n300_fpga_AA.dts',
'usrp_n300_fpga_AA.dts.md5',
'usrp_n300_fpga_AA.rpt'],
"files": [
"usrp_n300_fpga_HG.bit",
"usrp_n300_fpga_HG.bit.md5",
"usrp_n300_fpga_HG.dts",
"usrp_n300_fpga_HG.dts.md5",
"usrp_n300_fpga_HG.rpt",
"usrp_n300_fpga_XG.bit",
"usrp_n300_fpga_XG.bit.md5",
"usrp_n300_fpga_XG.dts",
"usrp_n300_fpga_XG.dts.md5",
"usrp_n300_fpga_XG.rpt",
"usrp_n300_fpga_WX.bit",
"usrp_n300_fpga_WX.bit.md5",
"usrp_n300_fpga_WX.dts",
"usrp_n300_fpga_WX.dts.md5",
"usrp_n300_fpga_WX.rpt",
"usrp_n300_fpga_AA.bit",
"usrp_n300_fpga_AA.bit.md5",
"usrp_n300_fpga_AA.dts",
"usrp_n300_fpga_AA.dts.md5",
"usrp_n300_fpga_AA.rpt",
],
},
"n320": {
"type": "n3xx",
"package_name": "n3xx_n320_fpga_default-g{}.zip",
"files": ['usrp_n320_fpga_HG.bit',
'usrp_n320_fpga_HG.bit.md5',
'usrp_n320_fpga_HG.dts',
'usrp_n320_fpga_HG.dts.md5',
'usrp_n320_fpga_HG.rpt',
'usrp_n320_fpga_XG.bit',
'usrp_n320_fpga_XG.bit.md5',
'usrp_n320_fpga_XG.dts',
'usrp_n320_fpga_XG.dts.md5',
'usrp_n320_fpga_XG.rpt',
'usrp_n320_fpga_XQ.bit',
'usrp_n320_fpga_XQ.bit.md5',
'usrp_n320_fpga_XQ.dts',
'usrp_n320_fpga_XQ.dts.md5',
'usrp_n320_fpga_XQ.rpt',
'usrp_n320_fpga_WX.bit',
'usrp_n320_fpga_WX.bit.md5',
'usrp_n320_fpga_WX.dts',
'usrp_n320_fpga_WX.dts.md5',
'usrp_n320_fpga_WX.rpt',
'usrp_n320_fpga_AQ.bit',
'usrp_n320_fpga_AQ.bit.md5',
'usrp_n320_fpga_AQ.dts',
'usrp_n320_fpga_AQ.dts.md5',
'usrp_n320_fpga_AQ.rpt',
'usrp_n320_fpga_AA.bit',
'usrp_n320_fpga_AA.bit.md5',
'usrp_n320_fpga_AA.dts',
'usrp_n320_fpga_AA.dts.md5',
'usrp_n320_fpga_AA.rpt',],
"files": [
"usrp_n320_fpga_HG.bit",
"usrp_n320_fpga_HG.bit.md5",
"usrp_n320_fpga_HG.dts",
"usrp_n320_fpga_HG.dts.md5",
"usrp_n320_fpga_HG.rpt",
"usrp_n320_fpga_XG.bit",
"usrp_n320_fpga_XG.bit.md5",
"usrp_n320_fpga_XG.dts",
"usrp_n320_fpga_XG.dts.md5",
"usrp_n320_fpga_XG.rpt",
"usrp_n320_fpga_XQ.bit",
"usrp_n320_fpga_XQ.bit.md5",
"usrp_n320_fpga_XQ.dts",
"usrp_n320_fpga_XQ.dts.md5",
"usrp_n320_fpga_XQ.rpt",
"usrp_n320_fpga_WX.bit",
"usrp_n320_fpga_WX.bit.md5",
"usrp_n320_fpga_WX.dts",
"usrp_n320_fpga_WX.dts.md5",
"usrp_n320_fpga_WX.rpt",
"usrp_n320_fpga_AQ.bit",
"usrp_n320_fpga_AQ.bit.md5",
"usrp_n320_fpga_AQ.dts",
"usrp_n320_fpga_AQ.dts.md5",
"usrp_n320_fpga_AQ.rpt",
"usrp_n320_fpga_AA.bit",
"usrp_n320_fpga_AA.bit.md5",
"usrp_n320_fpga_AA.dts",
"usrp_n320_fpga_AA.dts.md5",
"usrp_n320_fpga_AA.rpt",
],
},
"n320_cpld": {
"type": "n3xx",
"package_name": "n3xx_n320_cpld_default-g{}.zip",
"files": ['usrp_n320_rh_cpld.svf']
"files": ["usrp_n320_rh_cpld.svf"],
},
"n310_cpld": {
"type": "n3xx",
"package_name": "n3xx_n310_cpld_default-g{}.zip",
"files": ['usrp_n310_mg_cpld.svf']
"files": ["usrp_n310_mg_cpld.svf"],
},
'n200': {
'type': 'usrp2',
'package_name': 'usrp2_n200_fpga_default-g{}.zip',
'files': ["usrp_n200_r2_fpga.bin",
"usrp_n200_r3_fpga.bin",
"usrp_n200_r4_fpga.bin",
"bit/usrp_n200_r3_fpga.bit",
"bit/usrp_n200_r4_fpga.bit"],
"n200": {
"type": "usrp2",
"package_name": "usrp2_n200_fpga_default-g{}.zip",
"files": [
"usrp_n200_r2_fpga.bin",
"usrp_n200_r3_fpga.bin",
"usrp_n200_r4_fpga.bin",
"bit/usrp_n200_r3_fpga.bit",
"bit/usrp_n200_r4_fpga.bit",
],
},
'n210': {
'type': 'usrp2',
'package_name': 'usrp2_n210_fpga_default-g{}.zip',
'files': ["usrp_n210_r2_fpga.bin",
"usrp_n210_r3_fpga.bin",
"usrp_n210_r4_fpga.bin",
"bit/usrp_n210_r3_fpga.bit",
"bit/usrp_n210_r4_fpga.bit"],
"n210": {
"type": "usrp2",
"package_name": "usrp2_n210_fpga_default-g{}.zip",
"files": [
"usrp_n210_r2_fpga.bin",
"usrp_n210_r3_fpga.bin",
"usrp_n210_r4_fpga.bin",
"bit/usrp_n210_r3_fpga.bit",
"bit/usrp_n210_r4_fpga.bit",
],
},
'n200_fw': {
'type': 'usrp2',
'package_name': 'usrp2_n200_fw_default-g{}.zip',
'files': ["usrp_n200_fw.bin"],
"n200_fw": {
"type": "usrp2",
"package_name": "usrp2_n200_fw_default-g{}.zip",
"files": ["usrp_n200_fw.bin"],
},
'n210_fw': {
'type': 'usrp2',
'package_name': 'usrp2_n210_fw_default-g{}.zip',
'files': ["usrp_n210_fw.bin"],
"n210_fw": {
"type": "usrp2",
"package_name": "usrp2_n210_fw_default-g{}.zip",
"files": ["usrp_n210_fw.bin"],
},
'usrp2': {
'type': 'usrp2',
'package_name': 'usrp2_usrp2_fpga_default-g{}.zip',
'files': ["usrp2_fpga.bin"],
"usrp2": {
"type": "usrp2",
"package_name": "usrp2_usrp2_fpga_default-g{}.zip",
"files": ["usrp2_fpga.bin"],
},
'usrp2_fw': {
'type': 'usrp2',
'package_name': 'usrp2_usrp2_fw_default-g{}.zip',
'files': ["usrp2_fw.bin"],
"usrp2_fw": {
"type": "usrp2",
"package_name": "usrp2_usrp2_fw_default-g{}.zip",
"files": ["usrp2_fw.bin"],
},
'b200': {
'type': 'b2xx',
'package_name': 'b2xx_b200_fpga_default-g{}.zip',
'files': ["usrp_b200_fpga.bin",
"usrp_b200_fpga.rpt",],
"b200": {
"type": "b2xx",
"package_name": "b2xx_b200_fpga_default-g{}.zip",
"files": [
"usrp_b200_fpga.bin",
"usrp_b200_fpga.rpt",
],
},
'b200mini': {
'type': 'b2xx',
'package_name': 'b2xx_b200mini_fpga_default-g{}.zip',
'files': ["usrp_b200mini_fpga.bin",
"usrp_b200mini_fpga.rpt",],
"b200mini": {
"type": "b2xx",
"package_name": "b2xx_b200mini_fpga_default-g{}.zip",
"files": [
"usrp_b200mini_fpga.bin",
"usrp_b200mini_fpga.rpt",
],
},
'b205mini': {
'type': 'b2xx',
'package_name': 'b2xx_b205mini_fpga_default-g{}.zip',
'files': ["usrp_b205mini_fpga.bin",
"usrp_b205mini_fpga.rpt",],
"b205mini": {
"type": "b2xx",
"package_name": "b2xx_b205mini_fpga_default-g{}.zip",
"files": [
"usrp_b205mini_fpga.bin",
"usrp_b205mini_fpga.rpt",
],
},
'b210': {
'type': 'b2xx',
'package_name': 'b2xx_b210_fpga_default-g{}.zip',
'files': ["usrp_b210_fpga.bin",
"usrp_b210_fpga.rpt",],
"b210": {
"type": "b2xx",
"package_name": "b2xx_b210_fpga_default-g{}.zip",
"files": [
"usrp_b210_fpga.bin",
"usrp_b210_fpga.rpt",
],
},
'b2xx_fw': {
'type': 'b2xx',
'package_name': 'b2xx_common_fw_default-g{}.zip',
'files': ["usrp_b200_fw.hex",
"usrp_b200_bl.img"],
"b2xx_fw": {
"type": "b2xx",
"package_name": "b2xx_common_fw_default-g{}.zip",
"files": ["usrp_b200_fw.hex", "usrp_b200_bl.img"],
},
'b100': {
'type': 'usrp1',
'package_name': 'usrp1_b100_fpga_default-g{}.zip',
'files': ["usrp_b100_fpga_2rx.bin",
"usrp_b100_fpga.bin"],
"b100": {
"type": "usrp1",
"package_name": "usrp1_b100_fpga_default-g{}.zip",
"files": ["usrp_b100_fpga_2rx.bin", "usrp_b100_fpga.bin"],
},
'b100_fw': {
'type': 'usrp1',
'package_name': 'usrp1_b100_fw_default-g{}.zip',
'files': ["usrp_b100_fw.ihx"],
"b100_fw": {
"type": "usrp1",
"package_name": "usrp1_b100_fw_default-g{}.zip",
"files": ["usrp_b100_fw.ihx"],
},
'usrp1': {
'type': 'usrp1',
'package_name': 'usrp1_usrp1_fpga_default-g{}.zip',
'files': ["usrp1_fpga_4rx.rbf",
"usrp1_fpga.rbf",
"usrp1_fw.ihx"],
"usrp1": {
"type": "usrp1",
"package_name": "usrp1_usrp1_fpga_default-g{}.zip",
"files": ["usrp1_fpga_4rx.rbf", "usrp1_fpga.rbf", "usrp1_fw.ihx"],
},
'octoclock': {
'type': 'octoclock',
'package_name': 'octoclock_octoclock_fw_default-g{}.zip',
'files': ["octoclock_bootloader.hex",
"octoclock_r4_fw.hex"],
"octoclock": {
"type": "octoclock",
"package_name": "octoclock_octoclock_fw_default-g{}.zip",
"files": ["octoclock_bootloader.hex", "octoclock_r4_fw.hex"],
},
'winusb_drv': {
'type': 'usb',
'package_name': 'usb_common_windrv_default-g{}.zip',
'files': ["winusb_driver/",
"winusb_driver/erllc_uhd_b205mini.inf",
"winusb_driver/erllc_uhd_b100.inf",
"winusb_driver/erllc_uhd_b200_reinit.inf",
"winusb_driver/erllc_uhd_b200mini.inf",
"winusb_driver/erllc_uhd_b200.inf",
"winusb_driver/amd64/",
"winusb_driver/amd64/WdfCoInstaller01009.dll",
"winusb_driver/amd64/winusbcoinstaller2.dll",
"winusb_driver/x86/",
"winusb_driver/x86/WdfCoInstaller01009.dll",
"winusb_driver/x86/winusbcoinstaller2.dll",
"winusb_driver/erllc_uhd_usrp1.inf",
"winusb_driver/erllc_uhd_makecat.cdf",
"winusb_driver/erllc_uhd.cat"],
"winusb_drv": {
"type": "usb",
"package_name": "usb_common_windrv_default-g{}.zip",
"files": [
"winusb_driver/",
"winusb_driver/erllc_uhd_ni29xx.inf",
"winusb_driver/erllc_uhd_b206mini.inf",
"winusb_driver/erllc_uhd_b205mini.inf",
"winusb_driver/erllc_uhd_b100.inf",
"winusb_driver/erllc_uhd_b200_reinit.inf",
"winusb_driver/erllc_uhd_b200mini.inf",
"winusb_driver/erllc_uhd_b200.inf",
"winusb_driver/erllc_uhd_usrp1.inf",
"winusb_driver/erllc_uhd_makecat.cdf",
"winusb_driver/erllc_uhd.cat",
],
},
}

View File

@ -31,7 +31,22 @@ set(UHD_RELEASE_MODE "${UHD_RELEASE_MODE}" CACHE STRING "UHD Release Mode")
########################################################################
# Project setup
########################################################################
# Backup custom UHD_VERSION if defined by using option -DUHD_VERSION=...,
# because project() will reset it to an empty string.
if(UHD_VERSION)
set(CUSTOM_UHD_VERSION "${UHD_VERSION}")
endif(UHD_VERSION)
# Note: if UHD_VERSION is not defined, project() will leave it undefined
# for cmake version < 4.1.0, but set it to an empty string for cmake
# version >= 4.1.0.
project(UHD CXX C)
# Restore the custom UHD_VERSION if it was defined before project()
if(DEFINED CUSTOM_UHD_VERSION)
set(UHD_VERSION "${CUSTOM_UHD_VERSION}" CACHE STRING "" FORCE)
endif(DEFINED CUSTOM_UHD_VERSION)
enable_testing()
# Make sure our local CMake Modules path comes first

View File

@ -99,7 +99,7 @@ if(${CPACK_GENERATOR} STREQUAL NSIS)
# note CPACK_PACKAGE_VERSION_PATCH may have another meaning for NSIS based installers
# has been defaulting to '1'
if(UHD_RELEASE_MODE)
set(CPACK_PACKAGE_VERSION2_PATCH "${UHD_VERSION_ABI}.${UHD_VERSION_PATCH}")
set(CPACK_PACKAGE_VERSION2_PATCH "${UHD_VERSION_ABI}.${UHD_VERSION_PATCH_ORIG}")
else()
set(CPACK_PACKAGE_VERSION2_PATCH "${UHD_VERSION_ABI}.9999")
endif(UHD_RELEASE_MODE)

View File

@ -160,7 +160,7 @@ endif()
########################################################################
# Define the derived version variables:
if(DEFINED UHD_VERSION)
if(UHD_VERSION)
set(UHD_VERSION "${UHD_VERSION}" CACHE STRING "Set UHD_VERSION to a custom value")
elseif(TRIM_UHD_VERSION STREQUAL "True")
set(UHD_VERSION "${UHD_VERSION_MAJOR}.${UHD_VERSION_API}.${UHD_VERSION_ABI}.${UHD_VERSION_PATCH}-${UHD_GIT_HASH}")

View File

@ -45,6 +45,10 @@ python3-uhd:
The python3-uhd package to access the library from Python 3.
Python examples are included in the uhd-host package.
uhd-rfnoc-dev:
HDL source files required for building FPGA bitfiles and developing out-of-tree
RFNoC blocks.
UHD Firmware / FPGA images
--------------------------

View File

@ -15,6 +15,14 @@ uhd (4.9.0.0-0ubuntu1) ubuntu_release; urgency=low
- LabVIEW/USRP: New repository containing example applications which
demonstrate how to use NI LabVIEW with USRP devices via the UHD APIs.
(https://github.com/ni/labview-usrp-examples)
- Improved RFNoC OOT Block support:
New repository containing official RFNoC OOT Blocks
(https://github.com/EttusResearch/rfnoc-oot-blocks)
- Added new RFNoC Aurora Block for TX and RX remote streaming applications
to and from Aurora capable compute nodes like FPGA Coprocessors.
- Enhanced the UHD Windows installer to automatically install Windows
driver packages into the OS, eliminating this manual post-installation
step for B-Series USB devices.
* API Changes
- `uhd::math::gcd` and `uhd::math::lcm` are removed from the public
headers. Use `std::gcd` and `std::lcm` instead if C++17 is available,
@ -47,7 +55,7 @@ uhd (4.9.0.0-0ubuntu1) ubuntu_release; urgency=low
- Windows: 10 22H2, 11 23H2
- MacOS: Sequoia (15.2)
-- Ettus Research <uhd.maintainer@emerson.com> Mon, 11 Aug 2025 05:36:26 -0800
-- Ettus Research <uhd.maintainer@emerson.com> Fri, 22 Aug 2025 06:07:44 -0800
uhd (4.8.0.0-0ubuntu1) ubuntu_release; urgency=low

View File

@ -44,7 +44,8 @@ Depends: libuhd4.9.0 (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Recommends: curl, procps
Suggests: gnuradio
Suggests: gnuradio,
uhd-rfnoc-dev (= ${binary:Version})
Description: hardware driver for Ettus Research products - host apps
Host utilities for the USRP Hardware Driver for Ettus Research products.
.
@ -76,7 +77,7 @@ Package: libuhd-dev
Architecture: any
Section: libdevel
Depends: libuhd4.9.0 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Recommends: gnuradio-dev
Recommends: gnuradio-dev, uhd-rfnoc-dev (= ${binary:Version})
Suggests: uhd-doc
Description: universal hardware driver for Ettus Research products
Host library for the USRP Hardware Driver for Ettus Research products.
@ -121,3 +122,17 @@ Description: universal hardware driver for Ettus Research products - doc
Detailed documentation for the Universal Hardware Driver.
.
This package includes the Doxygen generated documentation.
Package: uhd-rfnoc-dev
Architecture: all
Section: libdevel
Depends: python3, csh, ${misc:Depends}
Recommends: libuhd-dev (= ${binary:Version})
Suggests: uhd-doc
Multi-Arch: foreign
Description: USRP hardware driver for Ettus Research products - RFNoC development
Gateware source files for developing with RFNoC.
.
This package contains all the HDL source files and build scripts for building
RFNoC bitfiles and creating new RFNoC blocks. Note that AMD/Xilinx Vivado is
required to build the bitfiles.

View File

@ -208,6 +208,80 @@ Copyright: Copyright (c) 2015-2017 Analog Devices Inc.
License: AD9371-API
Comment: Not used for uhd-host package
Files: fpga/usrp3/*
Copyright: Copyright Ettus Research, A National Instruments Brand
License: LGPL-3+
Files: fpga/usrp3/lib/control/map/cam*
Copyright: Copyright (c) 2015-2016 Alex Forencich
License: MIT
Files: fpga/usrp3/lib/sec/sha256*
Copyright: Copyright (c) 2013, 201, Secworks Sweden AB
License: BSD-2-Clause
Files: fpga/usrp3/lib/wb_spi/rtl/verilog/*
Copyright: Copyright (C) 2002 Simon Srot (simons@opencores.org)
License: LGPL-2.1+
Files: fpga/usrp3/lib/vivado_ipi/axi_dmac/*
fpga/usrp3/lib/vivado_ipi/util_axis_fifo/*
fpga/usrp3/lib/vivado_ipi/util_axis_resize/*
Copyright: Copyright (c) Analog Devices Inc.
License: BSD-ADI
Files: fpga/usrp3/lib/white_rabbit/*
Copyright: Copyright (c) 2012-2017 CERN
License: LGPL-2.1+
Files: fpga/usrp3/lib/white_rabbit/wr_cores_v4_2/board/eeprom/*
Copyright: Copyright Ettus Research, A National Instruments Brand
License: LGPL-3+
Files: fpga/usrp3/lib/white_rabbit/wr_cores_v4_2/ip_cores/etherbone_core/*
Copyright: Copyright (C) GSI Helmholtz Centre for Heavy Ion Research GmbH
License: LGPL-3+
Files: fpga/usrp3/lib/white_rabbit/wr_cores_v4_2/ip_cores/general-cores/modules/common
Copyright: Copyright (C) 2005 Geir Drange, gedra@opencores.org and OPENCORES.ORG
License: LGPL-3+
Files: fpga/usrp3/lib/white_rabbit/wr_cores_v4_2/ip_cores/general-cores/modules/genrams/common/generic_shiftreg_fifo.vhd
Copyright: Copyright (C) 2008 Andrew Mulcock, amulcock@opencores.org and OPENCORES.ORG
License: LGPL-2.1+
Files: fpga/usrp3/lib/wishbone/i2c_master_bit_ctrl.v
fpga/usrp3/lib/wishbone/i2c_master_byte_ctrl.v
fpga/usrp3/lib/wishbone/i2c_master_defines.v
fpga/usrp3/lib/wishbone/i2c_master_top.v
Copyright: Copyright (C) 2001 Richard Herveille richard@asics.ws
License: 2-clause-BSD-wishbone
Files: fpga/usrp3/lib/wishbone/wb1_master.v
Copyright: Copyright (C) 2000, 2007 Johny Chi, Matt Ettus and OPENCORES.ORG
License: LGPL-2.1+
Files: fpga/usrp3/lib/xge/*
Copyright: A. Tanguay (antanguay@opencores.org)
License: LGPL-2.1+
Files: fpga/usrp3/lib/xge/rtl/include/CRC32*
fpga/usrp3/lib/xge/rtl/verilog/CRC32*
Copyright: Copyright (C) 1999-2003 Easics NV.
License: BSD-easics
Files: fpga/usrp3/lib/zpu/*
Copyright: Copyright 2004-2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
License: FreeBSD
Files: fpga/usrp3/lib/zpu/zpu_bootram.v
fpga/usrp3/lib/zpu/zpu_top_pkg.vhd
fpga/usrp3/lib/zpu/zpu_wb_top.vhd
Copyright: Copyright Ettus Research, A National Instruments Brand
License: LGPL-3+
License: GPL-2+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -813,3 +887,116 @@ License: Apache-2.0
.
On Debian systems, the complete text of the Apache version 2.0 license
can be found in "/usr/share/common-licenses/Apache-2.0".
License: BSD-easics
This source file may be used and distributed without restriction
provided that this copyright statement is not removed from the file
and that any derivative work contains the original copyright notice
and the associated disclaimer.
.
THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
License: FreeBSD
The FreeBSD license
.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.
.
THIS SOFTWARE IS PROVIDED BY THE ZPU PROJECT ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
ZPU PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: 2-clause-BSD-wishbone
This source file may be used and distributed without
restriction provided that this copyright statement is not
removed from the file and that any derivative work contains
the original copyright notice and the associated disclaimer.
.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
License: BSD-ADI
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
- Neither the name of Analog Devices, Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
- The use of this software may or may not infringe the patent rights
of one or more patent holders. This license does not release you
from the requirement that you obtain separate licenses from these
patent holders to use this software.
- Use of the software either in source or binary form, must be run
on or directly connected to an Analog Devices Inc. component.
.
THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED.
.
IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY
RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: BSD-2-Clause
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,63 @@
From af108046be0ba873597259fb523001edde8e2119 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Hofrichter?= <joerg.hofrichter@emerson.com>
Date: Mon, 18 Aug 2025 17:57:31 +0200
Subject: [PATCH] host: paths: return uhd::build_info::install_prefix as
"package path"
The function uhd::get_pkg_path which returns the "UHD package path"
derived the path indirectly from the library path. This approach may be
incorrect, for example for recent Linux distributions with merged /usr
directories.
The new implementation calls uhd::build_info::install_prefix which
returns the CMAKE_INSTALL_PREFIX. This means that the function now
returns exactly the configured installation prefix just as it is
stated in description of the function.
---
host/include/uhd/utils/paths.hpp | 3 ---
host/lib/utils/paths.cpp | 8 +-------
2 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/host/include/uhd/utils/paths.hpp b/host/include/uhd/utils/paths.hpp
index 45eb639910..25fff32908 100644
--- a/host/include/uhd/utils/paths.hpp
+++ b/host/include/uhd/utils/paths.hpp
@@ -35,9 +35,6 @@ UHD_API std::string get_lib_path(void);
//
// This path is typically identical with the installation prefix, but can be
// overridden with the UHD_PKG_PATH environment variable.
-//
-// This path is "calculated" by identifying the path to the UHD library and
-// returning the parent directory of the library path.
UHD_API std::string get_pkg_path(void);
diff --git a/host/lib/utils/paths.cpp b/host/lib/utils/paths.cpp
index 96c8ba9198..06ff27bd9e 100644
--- a/host/lib/utils/paths.cpp
+++ b/host/lib/utils/paths.cpp
@@ -268,8 +268,7 @@ std::string uhd::get_appdata_path(void)
std::string uhd::get_pkg_path(void)
{
- fs::path pkg_path = fs::path(uhd::get_lib_path()).parent_path().lexically_normal();
- return get_env_var("UHD_PKG_PATH", pkg_path.string());
+ return get_env_var("UHD_PKG_PATH", uhd::build_info::install_prefix());
}
@@ -480,11 +479,6 @@ std::string uhd::get_images_dir(const std::string& search_paths)
if (fs::is_directory(pkg_data_imgs_dir)) {
return pkg_data_imgs_dir.string();
}
- const auto install_prefix_imgs_dir =
- fs::path(uhd::build_info::install_prefix()) / "share" / "uhd" / "images";
- if (fs::is_directory(install_prefix_imgs_dir)) {
- return install_prefix_imgs_dir.string();
- }
/* No luck. Return an empty string. */
return std::string("");
--
2.43.0

View File

@ -1 +1 @@
host-paths-return-uhd-build_info-install_prefix-as-p.patch

View File

@ -8,6 +8,7 @@ DEB_UHD_PACKAGE_CONFIGURATION=$(shell echo "-DCMAKE_BUILD_TYPE=RelWithDebInfo -D
-DENABLE_STATIC_LIBS=OFF \
-DUHD_VERSION=$(DEB_VERSION) \
-DENABLE_PYTHON_API=ON \
-DENABLE_RFNOC_DEV=ON \
-DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \
-DPKG_LIB_DIR="/usr/lib/uhd" \
-DDOXYGEN_HAVE_DOT=True \

View File

@ -0,0 +1 @@
usr/share/uhd/rfnoc/fpga/usrp3

Binary file not shown.

View File

@ -39,8 +39,8 @@ ProductID = "PID_0002"
DeviceGUID = "{43ec6c7f-2686-492f-add6-601ebbf5e89a}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -38,8 +38,8 @@ ProductID = "PID_0020"
DeviceGUID = "{43ec6c7f-2686-492f-add6-601ebbf5e89a}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -39,8 +39,8 @@ ProductID = "PID_0021"
DeviceGUID = "{6960fcb7-8440-4271-a4e3-fef0cb9d01f7}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -38,8 +38,8 @@ ProductID = "PID_0022"
DeviceGUID = "{211d89c8-92d7-11e5-be76-3c970eb8a18b}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -38,8 +38,8 @@ ProductID = "PID_0023"
DeviceGUID = "{34ef3f9c-1d8e-4b08-9767-833220981ac2}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -9,6 +9,7 @@ CATATTR1=0x10010001:OSAttr:2:6.0
<hash>File2=erllc_uhd_b100.inf
<hash>File3=erllc_uhd_b200.inf
<hash>File4=erllc_uhd_b200_reinit.inf
<hash>File5=erllc_uhd_b200mini.inf
<hash>File6=erllc_uhd_b205mini.inf
<hash>File7=erllc_uhd_b206mini.inf
<hash>File5=erllc_uhd_ni29xx.inf
<hash>File6=erllc_uhd_b200mini.inf
<hash>File7=erllc_uhd_b205mini.inf
<hash>File8=erllc_uhd_b206mini.inf

View File

@ -0,0 +1,117 @@
;
;
; To customize this inf file for your own device
;
; 1. Change "DeviceName" with the name you want your device to appear with
; on your system.
;
; 2. Change "VendorID" and "ProductID" according to those of your device.
; If your device is plugged in, you can retrieve these values through the
; Device Manager (regardless of whether the driver is installed or not).
;
; 3. Change "DeviceGUID" to a value that is unique on your system. For more
; information and tools to help you generate your own GUIDs, see
; http://en.wikipedia.org/wiki/Universally_Unique_Identifier.
;
; 4. Change "DeviceClassGUID" to reflect your USB Device Class.
; The following Device Classes are listed for reference:
; {745a17a0-74d3-11d0-b6fe-00a0c90f57da} : HID device
; {78a1c341-4539-11d3-b88d-00c04fad5171} : Generic WinUSB device
;
; 5. (Optional) Change the "Date" string.
;
; Note 1: if you need to create a matching cat file for this inf, you can use
; the inf2cat utility from the WinDDK, with the the following command:
; inf2cat /driver:"path_to_your inf" /os:7_X86,7_X64,Vista_X86,Vista_X64
;
; Note 2: The co-installers provided in these files are version 1.9.
; Please refer to:
; http://blogs.msdn.com/iliast/archive/2008/03/10/why-do-we-need-wdf-coinstallers.aspx and
; http://blogs.msdn.com/iliast/archive/2009/08/13/wdf-logo-requirements-regarding-coinstallers.aspx
; for more information about co-installers and their versioning
[Strings]
NIString0 = "Ettus Research"
VendorID = "VID_3923"
;VendorID = "VID_2500"
;dev0_ProductID = "PID_0020"
;dev1_ProductID = "PID_0021"
dev0_ProductID = "PID_7813"
dev1_ProductID = "PID_7814"
;DeviceGUID was generated using Visual Studio GUID generation tool.
DeviceGUID = "{7de53da3-1027-4e90-b6f0-46fc59fa5ce8}"
DeviceClassGUID = "{f6afcb2d-01e5-48cc-8c0c-a28a9ad4d0e3}"
dev0_dDesc = "NI USRP-2900"
dev1_dDesc = "NI USRP-2901"
DiskName = "libusb (WinUSB) Device Install Disk"
ClassName = "NI-USRP USB Devices"
; Date MUST be in MM/DD/YYYY format
Date = "08/05/2025"
Version = "4.9.0.0"
[Version]
DriverVer = %Date%,%Version%
Signature = "$Windows NT$"
Class = %ClassName%
ClassGuid = %DeviceClassGUID%
Provider = %NIString0%
CatalogFile = erllc_uhd.cat
PnpLockdown=1
; Since the device is not a standard USB device, we define a new class for it.
[ClassInstall32]
Addreg = WinUSBDeviceClassReg
[WinUSBDeviceClassReg]
HKR,,,0,%ClassName%
; -20 is for the USB icon
HKR,,Icon,,-20
[Manufacturer]
%NIString0% = niusrp290x_WinUSB,NTamd64
[niusrp290x_WinUSB.NTamd64]
%dev0_dDesc% = USB_Install, USB\%VendorID%&%dev0_ProductID%
%dev1_dDesc% = USB_Install, USB\%VendorID%&%dev1_ProductID%
; ==================== Installation ===================
; The Include and Needs directives in the USB_Install section are required for
; installing WinUSB on Windows Vista systems. Windows XP systems ignore these
; directives. These directives should not be modified.
[USB_Install]
Include=winusb.inf
Needs=WINUSB.NT
; The Include directive in the USB_Install.Services section includes the system-
; supplied INF for WinUSB. This INF is installed by the WinUSB co-installer if
; it is not already on the target system. The AddService directive specifies
; WinUsb.sys as the device's function driver. These directives should not be
; modified.
[USB_Install.Services]
Include=winusb.inf
Needs=WINUSB.NT.Services
; The KmdfService directive installs WinUsb.sys as a kernel-mode service. The
; referenced WinUSB_Install section specifies the KMDF library version.
; Usually, the version can be derived from the WdfCoInstallerxxyyy.dll with
; xx = major, yyy = minor
[USB_Install.Wdf]
KmdfService=WINUSB, WinUsb_Install
[WinUSB_Install]
KmdfLibraryVersion=1.9
; USB_Install.HW is the key section in the INF. It specifies the device
; interface globally unique identifier (GUID) for your device. The AddReg
; directive puts the interface GUID in a standard registry value. When
; WinUsb.sys is loaded as the device's function driver, it reads the registry
; value and uses the specified GUID to represent the device interface. You
; should replace the GUID in this example with one that you create specifically
; for your device. If the protocols for the device change, you should create a
; new device interface GUID.
[USB_Install.HW]
AddReg=Dev_AddReg
[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,%DeviceGUID%

View File

@ -38,8 +38,8 @@ ProductID = "PID_0002"
DeviceGUID = "{E61C0BFC-4E86-4E82-B1F5-1C3EA28802FC}"
DeviceClassGUID = "{69B50283-8B4F-40BF-AE63-0F2609E68DE1}"
; Date MUST be in MM/DD/YYYY format
Date = "04/08/2025"
Version = "4.8.0.0"
Date = "08/05/2025"
Version = "4.9.0.0"
; =====================================================
; ========== END USER CONFIGURABLE SECTION ============

View File

@ -40,14 +40,17 @@ the UHD installer file name and run the downloaded installer package.
Using a USB-based device?
- Starting from UHD version 4.8 the UHD Installer package installs a copy of
the Windows UHD USB Driver within the UHD installation folder
(by default "C:\\Program Files\\UHD"). Alternatively, these may be
separately downloaded from the UHD wiki page:
- Starting with UHD version 4.9, the UHD Installer package installs a copy
of the Windows UHD USB Driver within the UHD installation folder
(by default "C:\\Program Files\\UHD"). It also automatically installs
all driver installer packages into Windows, eliminating this
post-installation step that was required in previous UHD versions.
Alternatively, these may be separately downloaded from the UHD wiki page:
<a href="http://files.ettus.com/binaries/misc/erllc_uhd_winusb_driver.zip">erllc_uhd_winusb_driver.zip</a>.
- These driver installer packages must be installed once per host computer
to use a USB-based product with UHD software. Perform the following steps
for each USB device type:
Manually downloaded driver installer packages must also be installed into Windows
once per host computer to use a USB-based product with UHD software.
Perform the following steps for each USB device type:
+ Open the device manager and plug in the USRP device.
You will see an unrecognized USB device in the device manager.
+ Right click on the unrecognized USB device and select update/install

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 704 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 709 KiB

View File

@ -28,7 +28,6 @@ device up and running.
- USRP B200/B210/B200mini/B205mini/B206mini
- USB 3.0 Cable
- Universal power supply (B210 only)
- Jackscrew stress relief (B206mini enclosed variant only)
\subsection verify_contents Verify the Contents of Your Kit
Make sure that your kit contains all the items listed above. If any items are
@ -46,7 +45,7 @@ non-functional. Listed below are some examples of actions which can prevent
damage to the unit:
- Never allow metal objects to touch the circuit board while powered.
- Always properly terminate the transmit port with an antenna or 50Ω load.
- Always properly terminate the transmit port with an antenna or 50 Ohms load.
- Always handle the board with proper anti-static methods.
- Never allow the board to directly or indirectly come into contact with any
voltage spikes.
@ -57,6 +56,10 @@ Some warnings to prevent damage to the device:
- Never apply more than -15 dBm of power into any RF input.
- Always use at least 30 dB attenuation if operating in loopback configuration.
\subsection getting_started_tutorials Getting Started with B206mini Tutorials
To learn how to set up the USRP Hardware Driver (UHD), and use UHD to acquire
an RF spectrum using the B206 follow the [Getting Started with USRP Products](https://learn.ni.com/pages/getting-started?labels=%5B%22Product%22%5D&values=%5B%22usrp%22%5D) tutorials.
\subsection install_software_tools Install and Setup the Software Tools on Your Host Computer
In order to use your Universal Software Radio Peripheral (USRP™), you must have
the software tools correctly installed and configured on your host computer.
@ -71,9 +74,12 @@ It is generally recommended to use the latest UHD version.
\subsection connect_device Connect the USRP to the Host Computer
The included USB 3.0 cable provides power and data connectivity for the
USRP Bus Series. The shipping kits include appropriate USB 3 cables to connect
the B200/B210, B200mini, or B205mini to available USB Type-A USB 3.0 (or 2.0)
ports on the Host Computer. The B206mini shipping kit includes USB 3.2 Gen 1
cable for plugging into available USB 3 Type-C ports on the Host Computer.
the B200/B210, B200mini, or B205mini to an available USB 3.0 (or 2.0) Type-A
port on the host computer. The B206mini shipping kit includes a USB 3.2 Gen 1
Type-C cable, designed for connection to USB 3 Type-C ports on the host
computer. It also features a USB Type-C connector with a locking screw,
which when used with the optional enclosure and matching threaded insert,
provides added strain relief for secure and stable operation.
Note: If a GPSDO module is installed (B200/210 only) or when using USB 2.0, an
external DC power supply or a cable designed to pull power from 2 USB ports
@ -423,6 +429,35 @@ Component ID | Description | Details
<sup>1</sup> GPIO pinout is 1=3.3V, 2=GPIO_0, 3=GPIO_1, 4=GPIO_2, 5=GPIO_3, 6=GND, 7=3.3V, 8=GPIO_4, 9=GPIO_5, 10=GPIO_6, 11=GPIO_7, 12=GND
\section b200_resources Additional Documentation
\subsection b200_certifications Product Certifications
- https://www.ni.com/en/support/documentation/product-certifications.html
\subsection b200_specs Specifications
- [B200/B210 Specifications](https://kb.ettus.com/B200/B210/B200mini/B205mini#RF_Specifications)
- [B200mini/205mini Specifications](https://kb.ettus.com/B200/B210/B200mini/B205mini#RF_Specifications)
- [B206mini Specifications](https://www.ni.com/docs/en-US/bundle/usrp-b206mini-i-specs)
\subsection b200_seri Safety, Environmental, and Regulatory Information
- B200/210 - Printout included in hardware shipping kit
- B200mini/205mini - Printout included in hardware shipping kit
- [USRP B206mini-i Safety, Environmental, and Regulatory Information](https://www.ni.com/docs/en-US/bundle/usrp-b206mini-i-seri/resource/usrp-b206mini-i-seri.pdf)
\subsection b200_letter_of_volatility Certificate of Volatility
- [B200/B210 Letter of Volatility](https://www.ni.com/pdf/manuals/377354a.pdf)
- [B200mini/205mini Letter of Volatility](https://www.ni.com/pdf/manuals/377354a.pdf)
- [B206mini Letter of Volatility](https://www.ni.com/pdf/manuals/379248a.pdf)
\subsection b200_enclosure_assembly_instructions Enclosure Assembly Instructions
- B200/210 - Printout included in 'Enclosure Kit for USRP B200/B210'
- B200mini - Printout included in 'Enclosure kit for USRP B205mini-i (I-Grade)' or 'Enclosure kit for USRP B200mini-i (C-Grade)'
- B205mini - Printout included in 'Enclosure kit for USRP B205mini-i (I-Grade)'
- [B206mini-i Enclosure Assembly Instructions](https://ni.com/docs/en-US/bundle/usrp-b206mini-i-getting-started/page/assembling.html)
\subsection b200_hardware Hardware Resources
- [B200/B210/B200mini/B205mini/206mini Motherboard Resources](https://kb.ettus.com/B200/B210/B200mini/B205mini/B206mini)
\section b200_known_issues Known issues
- When synchronizing multiple USRPs in time, it is strongly recommended to

File diff suppressed because it is too large Load Diff

View File

@ -9,9 +9,8 @@
import argparse
import sys
import rfnoc_gain
import uhd
import rfnoc_gain
def parse_args():
"""Parse the command line arguments."""

View File

@ -48,7 +48,7 @@ if os.name == "nt":
"the UHD binary installation and the UHD Python module to the exact same version "
"by upgrading the older component."
)
else:
if not uhd_dll_dir:
print(
f"WARNING: Failed to add {uhd_dll_name} path to DLL search, module may not import properly, "
"version check skipped.\nPlease ensure UHD_PKG_DIR (binary installation) is set correctly. "

View File

@ -21,9 +21,50 @@ from subprocess import Popen, PIPE
# For what we're doing here, ruamel.yaml and yaml are compatible, and we'll use
# whatever we can find
try:
from ruamel import yaml
from ruamel.yaml import YAML
from io import StringIO
def yaml_load(stream):
"""Loads YAML data from a stream."""
yaml = YAML(typ="base", pure=True)
return yaml.load(stream)
def yaml_dump(data, stream):
"""Dumps data to a file."""
yaml = YAML(typ="base", pure=True)
yaml.default_flow_style = False
yaml.dump(data, stream)
def yaml_dump_to_str(data):
"""Workaround to get returned string after dumping"""
buf = StringIO()
yaml_dump(data, buf)
return buf.getvalue()
except:
import yaml
def yaml_load(stream):
"""Loads YAML data from a stream."""
return yaml.load(stream, Loader=yaml.BaseLoader)
def yaml_dump(data, stream):
""" Dumps data to a file.
yaml.dump accepts the second optional argument,
which must be an open text or binary file.
In this case, yaml.dump will write the produced YAML document into the file.
"""
yaml.dump(data, stream, default_flow_style=False)
def yaml_dump_to_str(data):
""" Dumps data to a string using yaml.dump.
If the stream optional argument is not given then,
yaml.dump returns the produced document.
Refer: https://pyyaml.org/wiki/PyYAMLDocumentation
"""
return yaml.dump(data, default_flow_style=False)
from usrp_probe import get_usrp_list
#--------------------------------------------------------------------------
@ -114,7 +155,9 @@ class uhd_test_case(unittest.TestCase):
self.results_file = os.getenv('_UHD_TEST_RESULTSFILE', "")
if self.results_file and os.path.isfile(self.results_file):
with open(self.results_file) as res_file:
self.results = yaml.safe_load(res_file.read()) or {}
self.results = yaml_load(res_file)
if not isinstance(self.results, dict):
self.results = {}
self.args_str = os.getenv('_UHD_TEST_ARGS_STR', "")
self.usrp_info = get_usrp_list(self.args_str)[0]
if self.usrp_info['serial'] not in self.results:
@ -151,7 +194,7 @@ class uhd_test_case(unittest.TestCase):
self.tear_down()
if self.results_file:
with open(self.results_file, 'w') as res_file:
res_file.write(yaml.dump(self.results, default_flow_style=False))
yaml_dump(self.results, res_file)
time.sleep(15)
def report_result(self, testname, key, value):
@ -259,7 +302,7 @@ class uhd_example_test_case(uhd_test_case):
"Check log file for details.\n"
"Run results:\n{r}".format(
t=test_name,
r=yaml.dump(run_results, default_flow_style=False)
r=yaml_dump_to_str(run_results)
)
)
@ -314,6 +357,6 @@ class UHDPythonTestCase(uhd_test_case):
"Check log file for details.\n"
"Run results:\n{r}".format(
t=test_name,
r=yaml.dump(run_results, default_flow_style=False)
r=yaml_dump_to_str(run_results)
)
)

View File

@ -2,53 +2,53 @@
# Target hash url SHA256
# X410-Series
x4xx_x410_fpga_default uhd-652108f x4xx/uhd-652108f/x4xx_x410_fpga_default-g652108f.zip 715cb9480e4c97f80e722de75324f8238f4734a72b18eb588a7b642bd00a2b10
x4xx_x410_fpga_default uhd-ccf87eb x4xx/uhd-ccf87eb/x4xx_x410_fpga_default-gccf87eb.zip ef9cdd368aa8b7bfddad48880153fb809abfcd37df32ac459b91180510bc5583
x4xx_x410_cpld_default uhd-6fd9f37 x4xx/uhd-6fd9f37/x4xx_x410_cpld_default-g6fd9f37.zip 74e09bedda84105258484217d4dbf68860ce2079d27cf8352952fe8e4d727e93
x4xx_zbx_cpld_default uhd-8d022b3 x4xx/uhd-8d022b3/x4xx_zbx_cpld_default-g8d022b3.zip 95993c736d48e22cbdb453a606189378a420f62280b4fb387cbe0272b146044b
# X440-Series
x4xx_x440_fpga_default uhd-652108f x4xx/uhd-652108f/x4xx_x440_fpga_default-g652108f.zip bedb64f5f1527af6f30276fc561a5bb1d5777ca5df1f12186fecf95b5efc2afb
x4xx_x440_fpga_default uhd-ccf87eb x4xx/uhd-ccf87eb/x4xx_x440_fpga_default-gccf87eb.zip 7189dfed4471463209f7ad6044c0237e2317fd3c6b852fe1be644689e0159b5e
x4xx_x440_cpld_default uhd-f5bb3e0 x4xx/uhd-f5bb3e0/x4xx_x440_cpld_default-gf5bb3e0.zip 1c929c125b868bac47e027e4351ca8f3cbafc8ea517fff24693a1801955eb4db
# X410-Series Filesystems
x4xx_common_sdk_default meta-ettus-v4.9.0.0-rc1 x4xx/meta-ettus-v4.9.0.0-rc1/x4xx_common_sdk_default-v4.9.0.0-rc1.zip 0
x4xx_common_mender_default meta-ettus-v4.9.0.0-rc1 x4xx/meta-ettus-v4.9.0.0-rc1/x4xx_common_mender_default-v4.9.0.0-rc1.zip 0
x4xx_common_sdimg_default meta-ettus-v4.9.0.0-rc1 x4xx/meta-ettus-v4.9.0.0-rc1/x4xx_common_sdimg_default-v4.9.0.0-rc1.zip 0
x4xx_common_sdk_default meta-ettus-v4.9.0.0-rc2 x4xx/meta-ettus-v4.9.0.0-rc2/x4xx_common_sdk_default-v4.9.0.0-rc2.zip 0
x4xx_common_mender_default meta-ettus-v4.9.0.0-rc2 x4xx/meta-ettus-v4.9.0.0-rc2/x4xx_common_mender_default-v4.9.0.0-rc2.zip 0
x4xx_common_sdimg_default meta-ettus-v4.9.0.0-rc2 x4xx/meta-ettus-v4.9.0.0-rc2/x4xx_common_sdimg_default-v4.9.0.0-rc2.zip 0
# X300-Series
x3xx_x300_fpga_default uhd-652108f x3xx/uhd-652108f/x3xx_x300_fpga_default-g652108f.zip 1f7da8bf253369cad5b4135dfadbba16280d4763a0d9d15a7f6c0ea3dc5d0cec
x3xx_x310_fpga_default uhd-652108f x3xx/uhd-652108f/x3xx_x310_fpga_default-g652108f.zip bd5474e15ccc76df1050bf43ccbd8b9959c69efc72946aaf0e01f11c9b7591b0
x3xx_x300_fpga_default uhd-ccf87eb x3xx/uhd-ccf87eb/x3xx_x300_fpga_default-gccf87eb.zip a4fe86c785d48a4ae410ea3770bc529570d005b85c34bccf67a35d674d5727fd
x3xx_x310_fpga_default uhd-ccf87eb x3xx/uhd-ccf87eb/x3xx_x310_fpga_default-gccf87eb.zip d87dab62cce11e5380b9eb12ae1f0076f7878352f840e742f03eb9a4734bbd58
# Example daughterboard targets (none currently exist)
#x3xx_twinrx_cpld_default example_target
#dboard_ubx_cpld_default example_target
# E-Series
e3xx_e310_sg1_fpga_default uhd-652108f e3xx/uhd-652108f/e3xx_e310_sg1_fpga_default-g652108f.zip 7321d92f70142cefbd324995da7ba582c06e779a35e98939b18574c109840492
e3xx_e310_sg3_fpga_default uhd-652108f e3xx/uhd-652108f/e3xx_e310_sg3_fpga_default-g652108f.zip d188e5da88dd717e6c8be04e9d96fac9d4f90ed914b129099c827bd9fc813d2a
e3xx_e320_fpga_default uhd-055db05 e3xx/uhd-055db05/e3xx_e320_fpga_default-g055db05.zip 40f06465a1cadc7455251365fbc108e41303825db2f1b200f96017d2136b0f9f
e3xx_e310_sg1_fpga_default uhd-ccf87eb e3xx/uhd-ccf87eb/e3xx_e310_sg1_fpga_default-gccf87eb.zip 0fff63a451d251d222696496cf631c31999391596ab0f0dfc2fba8548558fdd4
e3xx_e310_sg3_fpga_default uhd-ccf87eb e3xx/uhd-ccf87eb/e3xx_e310_sg3_fpga_default-gccf87eb.zip 387d6baf35f2d3e12d3505ce4777e8afad06fcfed8a2ff6648fe9f72dd6e3551
e3xx_e320_fpga_default uhd-ccf87eb e3xx/uhd-ccf87eb/e3xx_e320_fpga_default-gccf87eb.zip a06ad03bd457dce5c493168b991bf496c9d065d607b46f46d36c162b52ade1ce
# E310 Filesystems
e3xx_e310_sdk_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e310_sdk_default-v4.9.0.0-rc1.zip 0
e3xx_e310_sg1_mender_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e310_sg1_mender_default-v4.9.0.0-rc1.zip 0
e3xx_e310_sg1_sdimg_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e310_sg1_sdimg_default-v4.9.0.0-rc1.zip 0
e3xx_e310_sg3_mender_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e310_sg3_mender_default-v4.9.0.0-rc1.zip 0
e3xx_e310_sg3_sdimg_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e310_sg3_sdimg_default-v4.9.0.0-rc1.zip 0
e3xx_e310_sdk_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e310_sdk_default-v4.9.0.0-rc2.zip 0
e3xx_e310_sg1_mender_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e310_sg1_mender_default-v4.9.0.0-rc2.zip 0
e3xx_e310_sg1_sdimg_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e310_sg1_sdimg_default-v4.9.0.0-rc2.zip 0
e3xx_e310_sg3_mender_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e310_sg3_mender_default-v4.9.0.0-rc2.zip 0
e3xx_e310_sg3_sdimg_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e310_sg3_sdimg_default-v4.9.0.0-rc2.zip 0
# E320 Filesystems, etc
e3xx_e320_sdk_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e320_sdk_default-v4.9.0.0-rc1.zip 0
e3xx_e320_mender_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e320_mender_default-v4.9.0.0-rc1.zip 0
e3xx_e320_sdimg_default meta-ettus-v4.9.0.0-rc1 e3xx/meta-ettus-v4.9.0.0-rc1/e3xx_e320_sdimg_default-v4.9.0.0-rc1.zip 0
e3xx_e320_sdk_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e320_sdk_default-v4.9.0.0-rc2.zip 0
e3xx_e320_mender_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e320_mender_default-v4.9.0.0-rc2.zip 0
e3xx_e320_sdimg_default meta-ettus-v4.9.0.0-rc2 e3xx/meta-ettus-v4.9.0.0-rc2/e3xx_e320_sdimg_default-v4.9.0.0-rc2.zip 0
# N300-Series
n3xx_n300_fpga_default uhd-652108f n3xx/uhd-652108f/n3xx_n300_fpga_default-g652108f.zip a85b857e3349b2985881eee9775b64ac0aa1ed63026afecbcf0457da5e61eb6c
n3xx_n310_fpga_default uhd-652108f n3xx/uhd-652108f/n3xx_n310_fpga_default-g652108f.zip 208aae9b769cdcbf0843440fe1e3a17f72dddb0b0af13c2ab5f94030bd58c165
n3xx_n320_fpga_default uhd-652108f n3xx/uhd-652108f/n3xx_n320_fpga_default-g652108f.zip 5b47737babebd3bc1c48c66ab9c6d0b47e988401c3b52946e8d0c51cac7c1065
n3xx_n300_fpga_default uhd-ccf87eb n3xx/uhd-ccf87eb/n3xx_n300_fpga_default-gccf87eb.zip 935754bf71985cb90f2eba754783e9f56b7ff97152861ccca1c084c6cd301f5f
n3xx_n310_fpga_default uhd-ccf87eb n3xx/uhd-ccf87eb/n3xx_n310_fpga_default-gccf87eb.zip 8a9e83b74dbc4e7096ecea5cc71b40465e1f0790d0fbacb84717e03a3c420397
n3xx_n320_fpga_default uhd-ccf87eb n3xx/uhd-ccf87eb/n3xx_n320_fpga_default-gccf87eb.zip ab3e3f4e6acd5ce249c32fad8dce73659706c55fd5d3892fa5dc6812eb8dd747
n3xx_n310_cpld_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_cpld_default-g6bea23d.zip ef128dcd265ee8615b673021d4ee84c39357012ffe8b28c8ad7f893f9dcb94cb
n3xx_n320_cpld_default uhd-739b37b n3xx/uhd-739b37b/n3xx_n320_cpld_default-g739b37b.zip 552631c2993abc328a9f5a374777793e66031385aa14b9446c250c4616eff9f1
# N3XX Mykonos firmware
#n3xx_n310_fw_default fpga-6bea23d n3xx/fpga-6bea23d/n3xx_n310_fw_default-g6bea23d.zip 0
# N300-Series Filesystems, etc
n3xx_common_sdk_default meta-ettus-v4.9.0.0-rc1 n3xx/meta-ettus-v4.9.0.0-rc1/n3xx_common_sdk_default-v4.9.0.0-rc1.zip 0
n3xx_common_mender_default meta-ettus-v4.9.0.0-rc1 n3xx/meta-ettus-v4.9.0.0-rc1/n3xx_common_mender_default-v4.9.0.0-rc1.zip 0
n3xx_common_sdimg_default meta-ettus-v4.9.0.0-rc1 n3xx/meta-ettus-v4.9.0.0-rc1/n3xx_common_sdimg_default-v4.9.0.0-rc1.zip 0
n3xx_common_sdk_default meta-ettus-v4.9.0.0-rc2 n3xx/meta-ettus-v4.9.0.0-rc2/n3xx_common_sdk_default-v4.9.0.0-rc2.zip 0
n3xx_common_mender_default meta-ettus-v4.9.0.0-rc2 n3xx/meta-ettus-v4.9.0.0-rc2/n3xx_common_mender_default-v4.9.0.0-rc2.zip 0
n3xx_common_sdimg_default meta-ettus-v4.9.0.0-rc2 n3xx/meta-ettus-v4.9.0.0-rc2/n3xx_common_sdimg_default-v4.9.0.0-rc2.zip 0
# B200-Series
b2xx_b200_fpga_default uhd-c37b318 b2xx/uhd-c37b318/b2xx_b200_fpga_default-gc37b318.zip 35542b8a2b6a6dfd3aa155c35364af85c2599cfb692b0cf94013c5342c945448
@ -75,4 +75,4 @@ usrp1_b100_fw_default fpga-6bea23d usrp1/fpga-6bea23d/usrp1_b10
octoclock_octoclock_fw_default uhd-14000041 octoclock/uhd-14000041/octoclock_octoclock_fw_default-g14000041.zip 8da7f1af8cecb7f6259a237a18c39058ba69a11567fa373cffc9704031a1d053
# Legacy USB Windows drivers
usb_common_windrv_default uhd-2ddc080 usb/uhd-2ddc080/usb_common_windrv_default-g2ddc080.zip ad518f5ae5b91f42b2d22efc7332d66f6f2fc62f137c82db24739d7ce58d1449
usb_common_windrv_default uhd-ccf87eb usb/uhd-ccf87eb/usb_common_windrv_default-gccf87eb.zip 0d7e0b89619bb96bb620724fd417564560c50c2c3fcc886ece1f04e175f89c85

View File

@ -21,7 +21,7 @@ import sys
import tarfile
supported_ubuntu_releases = ["focal", "jammy", "noble", "plucky"]
tar_command = "tar --exclude='.git*' --exclude='./debian' --exclude='*.swp' --exclude='./fpga' --exclude='build' --exclude='./images/*.pyc' --exclude='./images/uhd-*' --exclude='tags' --exclude='.ci' --exclude='.clang*' -cJf {}/uhd_{}.orig.tar.xz ."
tar_command = "tar --exclude='.git*' --exclude='./debian' --exclude='*.swp' --exclude='./fpga/usrp1' --exclude='./fpga/usrp2' --exclude='./fpga/usrp3/top/b200' --exclude='./fpga/usrp3/top/b2xxmini' --exclude='./fpga/usrp3/lib/*_200' --exclude='build' --exclude='./images/*.pyc' --exclude='./images/uhd-*' --exclude='tags' --exclude='.ci' --exclude='.clang*' -cJf {}/uhd_{}.orig.tar.xz ."
debuild_command = "debuild -S -i -sa"
debuild_nosign = " -uc -us"