UHD can communicate with USRP X300 / X310 devices using the PCIe transport connection. The ni-usrp-rio package in the NI Linux Device Drivers repository includes the infrastructure to enable this functionality. This package is only intended for UHD PCIe transport support. This does not include NI-USRP API support on Linux.
In order to use the PCIe transport connection on the USRP X300 / X310 devices, you must install the NI USRP RIO driver stack. These include kernel modules which are loaded using DKMS. Kernel headers are required to build these modules. Only x86_64/AMD64 kernels are supported.
The NI Linux Device Driver repository can be found at NI Linux Device Drivers.
Note: This guide was written for the NI Linux Device Drivers 2020 release.
Download the corresponding repository rpm or deb for your platform.
For Fedora 31, download the EL8 repository.
For Ubuntu 18.04, download the Bionic repository.
Install the repository rpm or deb:
Fedora
rpm -i {ni drivers repository}.rpm
Ubuntu
dpkg -i {ni drivers repository}.deb
Update package information:
Fedora
dnf check-update
Ubuntu
apt update
Install kernel-headers:
Fedora
dnf install kernel-devel
Ubuntu
apt install linux-headers-$(uname -r)
Note: You must ensure that the kernel header version is the same as the system kernel version. You can check the system kernel version by running:
uname -r
Install ni-usrp-rio:
Fedora
dnf install ni-usrp-rio
Ubuntu
apt install ni-usrp-rio
Build kernel modules using DKMS:
dkms autoinstall
If you run into build errors, ensure the kernel headers are installed for your current kernel.
Reboot:
reboot
Run UHD application:
At this point, the connected PCIe device should be visible from UHD. To verify this run:
uhd_find_devices
or
uhd_usrp_probe
The package installers automatically starts the niusrpriorpc service on boot. This service is required to communicate with UHD.
To start the service:
systemctl start niusrpriorpc.service
To stop the service:
systemctl stop niusrpriorpc.service
To disable the service on boot:
systemctl disable niusrpriorpc.service
To reenable the service on boot:
systemctl enable niusrpriorpc.service
The USRP X3x0, NI USRP-294x and NI USRP-295x devices cannot be hot-swapped when connected over PCI Express. Unplugging the PCI Express connection or powering the device should be done only after powering off the host computer.
DKMS will automatically rebuild the kernel modules when updating kernels. Ensure that the appropriate kernel headers are installed when updating kernel versions.
To uninstall ni-usrp-rio, run the following commands:
Fedora:
dnf remove ni-usrp-rio
Ubuntu:
apt remove ni-usrp-rio apt autoremove
The latest NI-USRP installer can be found by visiting ni.com/info and entering the Info Code USRPDRIVER
. System requirements can be found on the resulting web page.
The latest NI-USRP installer can be found by visiting ni.com/info and entering the Info Code USRPDRIVER
. You will need to create a free NI User Account to download the installer. Follow the installation instructions on the web page to download and install the driver.
Once everything is installed and the system is rebooted, the X300/X310 PCI Express device should automatically be detected by the Windows Device Manager. The device should be enabled by default.
The USRP X3x0, NI USRP-294x and NI USRP-295x devices cannot be hot-swapped when connected over PCI Express. Unplugging the PCI Express connection or powering the device should be done only after disabling the device or powering off the host computer.
WARNING: If the device is unplugged without disabling it in device manager, the system could become unstable.
Navigate to the Control Panel and open "Programs". Then select National Instruments Software and select NI-USRP and NI-RIO from the list. Click on uninstall to remove the drivers from your system.