[USRP-users] [UHD] Announcing Release Candidate 1

Robert.Poehlmann at dlr.de Robert.Poehlmann at dlr.de
Fri Feb 8 09:39:29 EST 2019

I found this wiki page on DPDK: https://files.ettus.com/manual/page_dpdk.html

Tried to follow the described steps on Xubuntu 18.04 with UHD v3.14.0.0-rc1 (also updated SD and FPGA image) and Intel X520DA, but no success so far.

-          IOMMU is enabled for NIC, checked with short bash script:
shopt -s nullglob
for d in /sys/kernel/iommu_groups/*/devices/*; do
    n=${d#*/iommu_groups/*}; n=${n%%/*}
    printf 'IOMMU Group %s ' "$n"
    lspci -nns "${d##*/}"


IOMMU Group 0 00:00.0 Host bridge [0600]: Intel Corporation Device [8086:3ec2] (rev 07)
IOMMU Group 10 00:1d.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #9 [8086:a298] (rev f0)
IOMMU Group 11 00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:a2c9]
IOMMU Group 11 00:1f.2 Memory controller [0580]: Intel Corporation 200 Series PCH PMC [8086:a2a1]
IOMMU Group 11 00:1f.3 Audio device [0403]: Intel Corporation 200 Series PCH HD Audio [8086:a2f0]
IOMMU Group 11 00:1f.4 SMBus [0c05]: Intel Corporation 200 Series PCH SMBus Controller [8086:a2a3]
IOMMU Group 12 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]
IOMMU Group 13 04:00.0 Network controller [0280]: Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)
IOMMU Group 14 3e:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a808]
IOMMU Group 1 00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 07)
IOMMU Group 1 01:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
IOMMU Group 1 01:00.1 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
IOMMU Group 2 00:02.0 VGA compatible controller [0300]: Intel Corporation Device [8086:3e92]
IOMMU Group 3 00:14.0 USB controller [0c03]: Intel Corporation 200 Series PCH USB 3.0 xHCI Controller [8086:a2af]
IOMMU Group 3 00:14.2 Signal processing controller [1180]: Intel Corporation 200 Series PCH Thermal Subsystem [8086:a2b1]
IOMMU Group 4 00:16.0 Communication controller [0780]: Intel Corporation 200 Series PCH CSME HECI #1 [8086:a2ba]
IOMMU Group 5 00:17.0 SATA controller [0106]: Intel Corporation 200 Series PCH SATA controller [AHCI mode] [8086:a282]
IOMMU Group 6 00:1b.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #17 [8086:a2e7] (rev f0)
IOMMU Group 7 00:1c.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #1 [8086:a290] (rev f0)
IOMMU Group 8 00:1c.2 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #3 [8086:a292] (rev f0)
IOMMU Group 9 00:1c.4 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #5 [8086:a294] (rev f0)

-          hugepages are available and free according to cat /proc/meminfo | grep Huge:
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:    2048
HugePages_Free:     2048
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

-          vfio-pci is loaded and binding is changed to DPDK driver with dpdk-devbind script, dpdk-devbind shows
Network devices using DPDK-compatible driver
0000:01:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=vfio-pci unused=ixgbe
0000:01:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=vfio-pci unused=ixgbe

-          edited the /etc/uhd/uhd.conf file according to the wiki page

-          Running benchmark_rate with the use_dpdk=1 option
sudo /usr/local/lib/uhd/examples/benchmark_rate  \
   --args "type=n3xx,mgmt_addr=,addr=,second_addr=,use_dpdk=1,master_clock_rate=125e6" \
   --duration 60 \
   --channels "0,1,2,3" \
   --rx_rate 62.5e6 \
   --rx_subdev "A:0 A:1 B:0 B:1"


[INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106501; UHD_3.14.0.HEAD-0-gc7941e05
[00:00:00.000002] Creating the usrp device with: type=n3xx,mgmt_addr=,addr=,second_addr=,use_dpdk=1,master_clock_rate=125e6...
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgmt_addr=,type=n3xx,product=n310,serial=3177E58,claimed=False,addr=,second_addr=,use_dpdk=1,master_clock_rate=125e6
[INFO] [MPM.PeriphManager.UDP] No CHDR interfaces found!
[ERROR] [MPMD] No viable transport path found!
[ERROR] [MPMD] Failure during block enumeration: RuntimeError: No viable transport path found!
[INFO] [MPM.PeriphManager] init() called with device args `master_clock_rate=125e6,second_addr=,mgmt_addr=,product=n310,clock_source=internal,time_source=internal,use_dpdk=1'.
[INFO] [MPM.PeriphManager.UDP] No CHDR interfaces found!
Error: RuntimeError: Failed to run enumerate_rfnoc_blocks()

Not sure if I’m missing s.th.? Would be great to get this running!


From: USRP-users [mailto:usrp-users-bounces at lists.ettus.com] On Behalf Of Nick Foster via USRP-users
Sent: Thursday, February 07, 2019 7:29 PM
To: Michael West
Cc: USRP-users at lists.ettus.com; discuss-gnuradio at gnu.org
Subject: Re: [USRP-users] [UHD] Announcing Release Candidate 1

Great news! DPDK support is an interesting development. Is there any documentation or examples which show this capability?


On Thu, Feb 7, 2019 at 10:05 AM Michael West via USRP-users <usrp-users at lists.ettus.com<mailto:usrp-users at lists.ettus.com>> wrote:
The release candidate of UHD version has been tagged and is available for testing.  This API release introduces support for the N320 and N321 USRPs soon to be released (watch for the announcement on ettus.com<http://ettus.com>!), a DPDK-based transport, and several other features and bug fixes.  This release includes all bug fixes and enhancements in the,, and maintenance releases.

The tag for this release candidate:
There have been 406 commits since the last API release ( which can be viewed here:

Please report any bugs found on the UHD issue tracker:
* Please do not use the issue tracker for help or support.

Pull requests for direct code changes may be submitted to the UHD or FPGA repositories:

* N320: Add N320 and N321
* Test: Add Python API test
* Device3: Move from packet-based to byte-based flow control
* X300: Reduce default send_frame_size to 4000 over Ethernet
* UHD: Release recv buffers earlier in rx_streamer
* Device3: Constrain send_buff_size to input fifo size
* X300: Change Ethernet buffering
* MPMD: Parallelize broadcast-finding
* Device: Parallelize device discovery
* Docs: Fix Doxygen warnings
* B100: Move fifo_ctrl_excelsior to b100 subdir
* B100: Fix fifo_ctrl_excelsior not exiting
* B100: Remove all Boostisms from fifo_ctrl_excelsior
* B100: Demote some clocking-related log messages to trace
* X300: Log git hash and compat number as debug message
* N310: Modify AD9371 reset function to keep it in reset
* N3xx: clocking API changes for transitioning clock and time sources
* E320: bist: Fix ref_clock lock test implementation
* UHD: Fix ADF400x driver for ref counter and charge pump mode
* E320: bist: Add link_up test
* MPM: Get list of temperatures from all thermal zones
* E320: Add all 5 temp sensors, fan sensor and rssi sensors per channel
* E320: Fix tx/rx atr - antenna and frequency settings
* E320: Enable devtest for E320
* X300: Move defaults to their own header
* UHD: Improve constrained_device_args_t
* X300: Use constrained_args
* X300: Enable clock_source and time_source device args
* Test: Integrate Python API Tester into Devtest
* N3xx: Bump max rev to G/6
* N3xx: Improve error messages for invalid clock/time settings
* E320: images: Separate images package for Aurora image
* B200: Remove superfluous fake lambda
* B200: Add support for user regs
* Docs: Add info on how to implement user regs on B200
* UHD API: Add multi_usrp::get_user_settings_iface()
* N310: move init_rf_cal before JESD de/framer bringup
* UHD: Remove usage of time_t (except when required)
* NIRIO: Demote RPC client cancel/abort to TRACE
* Utils: Add Zip test to downloader
* Utils: Factor wait_for_lo_lock() out of cal utils
* DPDK: Add DPDK-based sockets-like library
* MPMD: add option to enum rfnoc blocks from args
* E320: Get RFNoC crossbar baseport from FPGA
* N3xx: Get RFNoC crossbar baseport from FPGA
* UHD: add default xport params to udp_zero_copy
* MPM: add link_speed xport_info
* MPMD: add link speed to xport udp
* Device3: remove tx_hint[send_buff_size]
* X300: remove default_buff_args properties
* RFNoC: Add ability to enable/disable RX timestamp
* RFNoC: add async message handler
* Examples: add rfnoc_radio_loopback example
* UHD: Update rx_frontend_gen3.v controls for 1/4-rate mixer
* UHD API: Move definition of ALL_MBOARDS and ALL_CHANS constants to
           CPP file.
* MPM: Add __mpm_device__ as usrp_hwd module variable
* MPM: Add usrp_update_fs
* UHD: Add traffic counter to null source sink
* Examples: Add benchmark_streamer example
* Tools: Add tool to analyze settling time of gain and freq changes
* UHD API: Add multi_usrp::set_sync_source() API
* UHD: Improve documentation for the UHD exception types
* Examples: Add dual measurements to benchmark_streamer
* MPM: Add i2c APIs for simple transfers
* MPM: Add vector-based transfer function for i2c
* UHD: Improve documentation for set_{time,clock,sync}_source
* CMake: Bump CMake minimum version to 2.8.12
* MPM: Add variable configuration support to nijesdcore
* MPM: Add eyescan utility to nijesdcore
* MPM: Add PRBS-31 testing to nijesdcore
* CMake: Change SOVERSION and VERSION for the library files
* Test: Add graph impl test to device3_test
* RFNoC: Changes to traffic counter register names
* X300: Remove 120 MHz master_clock_rate option
* MPM: Add convenience function to pull i2c bus from device tree
* UHD: add .clang-format file
* MPM: Open and close i2c file descriptor on every access
* UHD: Add device arg to enable dual ethernet for tx
* Test: Retrofit sph test to use new mock transport
* X300: Set minimum master clock rate to 184.32 MHz
* RFNoC: Fix replay example port args
* RFNoC: Fix default SPP for replay
* RFNoC: Add halt to replay API
* UHD API: Add sync source to Python API
* Examples: Clean up rfnoc_radio_loopback example
* UHD: Improve compatibility of abs() calls
* UHD: include <stdint.h> for int64_t for time_spec
* USRP-2974: Add support for USRP-2974
* UHD API: Add support for Tx LO control to C API
* E310: Fix initialization of antenna and frequency values
* Test: Enable rx_samples_to_file in devtest for X300
* Examples: Add keyboard controls to rx_ascii_art_dft
* Examples: Add benchmark_streamer support for multi-channel streamer
* MPM: Multiprocessing instead of threading for claimer loop
* MPM: Factor out user EEPROM code into own module
* RFNoC: Fix late packet errors
* X300: Factor our PID -> MB type and MB type -> product name mapping
* X300: Remove usage of boost::bind
* Docs: Add manual page on compat numbers
* UHD: Updates to coding guidelines
* Examples: Optimize benchmark_rate start time
* Examples: Improve formatting and comments in tx_waveforms
* Examples: Optimize tx_waveforms memory allocations
* UHD: Fix MSVC warnings by changing a size_t to unsigned int or
* Test: Fix CMake `endif` warning for devtest
* MPM: Add gpgga sensor function to GPSd iface
* Test: Fix compiler warning about unused timestamp
* X300: Fix compiler warnings related to type conversions
* B200: Fix compiler warnings related to type conversions
* Test: Add #include <thread> in system time test
* Examples: change boost to std for time commands
* UHD: Add potentially missing but sometimes inferred include for
* UHD: Add default xport params to udp_wsa_zero_copy
* Examples: Add LO Offset to rx_samples_to_file
* Examples: update lo-offset naming in tx from file
* Examples: Add lo-offset to tx_waveforms
* UHD: Move device3 flow control functions to header for benchmark
* Test: Add benchmark of streaming code paths
* MPMD: Add API to set RPC timeout atomically
* MPMD: Move timeout constants to header
* MPMD: Use new RPC API with timeout
* MPMD: Increase claim_rpc call timeout
* Examples: Improved error message in tx_waveforms
* UHD: Make sure BOOST_VERSION is always available
* Docs: Add comments for TwinRX and MCR
* DPDK: Add ARP responder, set MTU, and clean up API
* DPDK: Add blocking recv calls to uhd-dpdk
* DPDK: Add dpdk_zero_copy transport
* Test: Add unit test for DPDK transport
* Test: Add arguments to dpdk_test to control core mapping
* DPDK: Move uhd-dpdk header to uhdlib
* UHD: Make clang-format skip formatting for some data structures
* UHD: Remove vim hints in headers
* Examples: Move ascii_art_dft main function within include guard
* UHD/MPM: Apply clang-format to all files
* UHD: Add modified clang-format for headers
* MPM: Add bridge mode support
* RFNoC: Fix detection of outstanding acks by ctrl_iface
* UHD: Replace uhd::math::log2 with std::log2
* UHD: Replace boost::*::{lcm,gcd}() with portable versions
* UHD API: Change get_{tx/rx}_dc_offset_range default from ALL_CHANS
           to 0
* UHD: Revert to boost instead of std for sleep in some instances
* UHD: Replace Boost macros with custom ones for endianness
* MPMD: implement get_*x_hints
* MPMD: honor user supplied send/recv_frame_size args
* UHD: muxed_zero_copy_if fixes
* Examples: Fix boundary condition in ascii_art_dft plotting
* CMake: Extend list of additional Boost versions
* Device3: Replace NULL with 0 for empty function pointers
* RFNoC: Add some missing virtual destructors
* Test: replace has_key by using 'in'
* Test: Add universal_newlines to subprocess call in devtest
* MPMD: Use 4096 bytes for frame size for liberio transport
* DPDK: Add xport_mgr for dpdk_zero_copy
* DPDK: Cover all paths to request TX offloads
* Test: Fix up dpdk_test to use current APIs
* MPM: Parameterize max UDP link allocation
* UHD: Replace Boost lock & mutex with std variety for AD9361 code
* CPack: Fix RPM generation
* Utils: Add check for gdb_eeprom before accessing
* RFNoC: Update FIFO XML definition
* MPMD: Use init timeout for update_component
* Docs: Add manual page for DPDK
* Docs: Add information about what dpdk_zero_copy is doing
* Tools: Make the UHD source gen a plugin for the phase alignment test
* CMake: fix variable usage
* RFNoC: Prevent unnecessary FC ACK packets
* RFNoC: More graph traversal fixes
* Device3: Remove redundant function call
* RFNoC: Fix scaling of M and N values in DDC/DUC
* X300: Fix tick and sample rate setting
* RFNoC: Fix typos in legacy_compat
* RFNoC: Limit number of control packets in flight
* Device3: Fix flow control window and interval
* E3xx: Increase spp limit for E3xx radio
* E31x: Destruct RFNoC before loading idle image
* N3xx: init peripherals before loading FPGA (to fix SFP0 init issues)
* N3xx: Move Linux kernel to 4.15
* N3xx/E320: Prepend SDK filename with device name
* N310: Fix sporadic power on failures (requires firmware update)

* E320: Fix front panel GPIO readback
* E320: Fix master_clock_rate setting
* E320: Print extra ouptut for ref_clock BIST
* E320: Fix gps_locked type
* E320: Fix return value of get_fpga_type()
* N3xx: Enable setting clock and time sources at runtime
* N3xx: Add ref_clock BIST
* N3xx: Improve set_time_source() and set_clock_source()
* N3xx: Add exception for init failure
* N3xx: Remove HA, XA images packages
* N3xx: Change init() procedure to reduce configuration time
* N310: Add frequency bounds
* N310: Fix RX antenna mapping
* N310: Add log messages when re-initializing dboards
* N310: Add skip_rfic argument to reduce time of BIST
* N310: Add initialization of TX bandwidth
* E310: Fix initialization of antenna and frequency values
* E310: Type-cast fix for Boost
* X300: Improve firmware compat error message
* X300: Updated niusrprio driver
* X300: Add recovery for duplicate IP addresses in EEPROM
* X300: Prevent duplicate MAC and IP addresses from being programmed
* X300: New mode to configure master clock rate
* X300: Implement RFNoC get antenna functions
* B2xx: Fix values of MASK_GPIO_SHDN_SW and GPIO_AUX_PWR_ON in firmware
* B2xx: Revert changes to DSP core to fix scaling factor adjustment
* B2xx: Restore asynchronous reset of AD936x
        (fixes LIBUSB_TRANSFER_OVERFLOW and unexpected sid errors)
* TwinRX: enable ch1 lo amps if ch2 is using an external lo source
* TwinRX: Correctly initialize antenna mapping on X300
* TwinRX: Revise ADF5356 frac2 register calculation to prevent drifting spurs
* TwinRX: Fix initialization
* TwinRX: Tuning improvements
* TwinRX: Enable phase resync on ADF535x
* TwinRX: Make routing to LO1 and LO2 mutually exclusive
* BasicRX/LFRX: Fix real mode in rx_frontend_core_3000
* UHD: Define UHD_API as empty string when building static lib
* UHD: Changed to 'all_matching' endpoint resolution for udp_simple transport
* UHD: Add CMake flag for NEON SIMD
* UHD: Fix usb_dummy_impl compilation in MSVC
* UHD: Reconcile time_spec operators with boost concepts
* UHD: Fix rounding in ddc/duc rate calculation
* UHD: Increase MPMD RPC timeout when calling set_time_source()
* UHD: Fix RX streamer SOB and EOB handling
* UHD: Add UHD_SAFE_CALL to block_ctrl_base destructor
* UHD: Change SOVERSION to ABI string and VERSION to full UHD version
* UHD: Update cmake style to use lower case commands
* UHD: Improve logic for UHD_IMAGES_DIR
* UHD: Fix return value of get_rolloff() for filters
* UHD: Properly register devtest
* UHD: Fix log statement for Port number on RFNoC block
* UHD: Use "MATCHES" instead of "STREQUAL" for "Clang"
* UHD: Fix GPGGA string formatting for gpsd
* Device3: Set default block control response SIDs
* Device3: Fix block control flushing
* RFNoC: Improved flushing mechanism in noc_shell and dma_fifo
* RFNoC: Install missing dma_fifo_block_ctrl header
* RFNoC: Replace some [] with .at() in radio_ctrl_impl
* RFNoC: Fix graph traversal
* MPM: Add Git hash, version to device info
* MPM: Reset the RPC server upon reload
* MPM: TDC: Update PDAC BIST and flatness test to use latest APIs
* MPM: Fix handling of 0-valued dt-compat
* MPM: Fix GPSD sensor names for N3xx and E320
* MPM: Add args to update_ref_clock_freq to properly support dynamic setting
*      of clock and time references
* MPM: Fix Pylint warnings
* MPM: Identify sysfs gpios more generically
* MPM: Add lock_guard() function
* MPM: Factor E320 and N3xx BIST code into common module
* MPM: Add gpsd error handling
* MPM: Add FPGA git hash to device info
* MPMD: Increase RPC timeout during readng mb sensor
* MPMD: Improve error message for compat number mismatches
* Python API: Enable Python API on Windows
* Python API: Change .dll to .pyd for Win32
* Python API: Fixing Boost.Python initializer visibility
* Python API: Fix duration of benchmark rate
* Python API: Add missing constructors of time_spec_t
* Python API: Expose streamer timeouts
* Python API: Tighten the scope of releasing the GIL
* Python API: Add device_addr_t
* Python API: Populate the tune_result_t binding
* Utils: Many fixes and enhancements for uhd_images_downloader
* Utils: Update query_gpsdo_sensors to work on E310
* Examples: Removed some legacy code patterns from RFNoC examples
* Examples: Fix channel argument for rx_samples_to_file
* Examples: Fix benchmark_rate MIMO synchronization
* Examples: Add phase alignment example
* Examples: Fix RX antenna not being applied in txrx_loopback_to_file
* Test: Add more env vars, make Py3k compatible
* Test: Add multi_usrp_test.py to devtest
* Test: Clean up, refactor, and improve devtest
* Test: Enable rx_samples_to_file in E320 devtest and N3xx devtest
* Test: Reduce sample rate for E320 1G devtest
* Test: Add unit test for eeprom_utils
* Docs: Add clock_source and time_source to n3xx argument list and fix WR clock_source call
* Docs: Minor tweaks to the Python API manual page
* Docs: Add E320 test procedures
* Docs: Added TwinRX page
* Docs: Fix N210 MIMO Phase Alignment test command
* Docs: Add E320 information
* Docs: Improve sections on clock/time references
* Docs: Add section on X300 motherboard clocking
* Docs: Add more information on Salt for N3xx and E320
* Docs: Adjust E310 functional verification tests
* Docs: Add documentation on GIL release
* Debian: Update control files
* Images: Add N3xx CPLD file to manifest

* N3xx: Fix issue where changing the clock/time source could result in
        clocks becoming unlocked
* N3xx: Improve error messages for invalid clock/time settings
* N3xx: Add support for Rev G mboard
* MPM: Add function parameter to support holding AD9371 in reset
* Docs: Add section on building fs/SD images for N3xx
* Docs: Fix Doxygen warnings

* N3xx: Fix UIO usage in Aurora BIST
* N3xx: Fix EEPROM parsing (for upcoming hardware)
* UHD: Fix install path for Python API
As always, we at Ettus Research would like to thank all of the UHD users in the open source SDR community.  This release contains commits from users in the community that submitted pull requests against the UHD<https://github.com/EttusResearch/uhd> and FPGA<https://github.com/EttusResearch/fpga> repositories as well as many commits that are a direct result of issues reported back to us by users like you through the UHD<https://github.com/EttusResearch/uhd/issues> and FPGA<https://github.com/EttusResearch/fpga/issues> issue trackers, the USRP-users mailing list<http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com>, and Ettus support<mailto:support at ettus.com>.  You have all helped contribute to the continued improvement of UHD.  Thank you!

Best regards,
USRP-users mailing list
USRP-users at lists.ettus.com<mailto:USRP-users at lists.ettus.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20190208/c3bfa514/attachment.html>

More information about the USRP-users mailing list