I am using X310 on Centos 8. I didnt have problems until latest system update, which also updated kernel. Now I cant communicate with X310 over PCIe.
Output of uhd_find_devices:
[INFO] [UHD] linux; GNU C++ version 8.3.1 20191121 (Red Hat 8.3.1-5); Boost_106600; UHD_4.0.0.HEAD-0-g90ce6062
[ERROR] [UHD] Device discovery error: input stream error
No UHD Devices Found
Output when niusrpriorpc is run with --verbose flag and when I run uhd_find_devices:
[niusrpriorpc] RPC Server starting on 0.0.0.0:5444
[niusrpriorpc] RPC server started
[niusrpriorpc] Accepted client connection request
[niusrpriorpc] Server Archive Version = 15, Client Archive Version = 16
[niusrpriorpc] Connection to client 0x7f010000001d88 established
[niusrpriorpc] Grew thread pool to 1 threads
[niusrpriorpc] Calling function 256 for client 0x7f010000001d88
[niusrpriorpc] Connection to client 0x7f010000001d88 closed
and dmesg show:
[ 3.088719] nikal: loading out-of-tree module taints kernel.
[ 3.088723] nikal: module license 'Copyright (c) 2002-2020 National Instruments Corporation. All Rights Reserved. Any and all use of the copyrighted materials is subject to the then current terms and conditions of the applicable license agreement, which can be found at <http://www.ni.com/linux/>.' taints kernel.
[ 3.088723] Disabling lock debugging due to kernel taint
[ 3.088792] nikal: module verification failed: signature and/or required key missing - tainting kernel
[ 3.114263] niusrpriok 0000:06:00.0: enabling device (0000 -> 0002)
I tried reinstalling NI linux drivers and UHD with no success. If I stop niusrpriorpc service then I dont get the error in UHD, but as expected X310 also isnt found. Any idea what else could I try next or what isnt working? I guess that something changed in kernel and ni-usrp-rio driver isnt working correctly anymore. I would rather not go to previous version of kernel as this version solve graphic card stability issue.
Two different environments are mixed in the question. Let mi quickly describe the difference between the environments.
NI-USRP driver is supported only on Windows at this moment. For more information please visit here.
UHD is supported on Linux (Ubuntu and Fedora). The installation process you could find here. Basically, you need UHD, not NI USRP drivers because X310 is the Ettus version.
For Centos, the UHD 3.15 installation has a separate installation method.
I will suggest reinstalling the UHD on fresh installed Centos Host, as the kernel change could change the calling paths in the directories.
I will suggest using this link for host performance acceleration.
Hope this will be helpful.
Thank for help, but your method is valid only for X310 over ethernet. For communication over PCIe you also need NI linux drivers for usrp beside UHD.
So, there is no need for NI drivers if you are using a PCI-MXI connectivity kit.
For USRP NI drivers will be required in case of NI chasses. However, as I have mentioned previously NI-USRP driver is supported on Windows.
With a connectivity kit, it is possible to interact with USRP using GNU radio (for example), C++/ Python APIs or UHD examples.
You are wrong there. I am using this connectivity kit and it explicitly mentions that you need drivers for it. On Windows you need NI-USRP drivers. On Linux you NI linux device drivers (specifically ni-usrp-rio). But lets forget Windows and NI-USRP drivers as I am using Linux and everything worked till latest kernel update.
Referring to my previous comment, I want to highlight the NI USRP API part and not the ni-usrp-rio which is required.
Anyway, I will recommend installing the appropriate Centos version with the preferable kernel. After which install the drivers.
Previously, such kind of problem was with Ubuntu during the updating from Ubuntu 16 to Ubuntu 18.