USRP
The USRP (Universal Software Radio Peripheral) product line is a series of software-defined radios (SDRs) developed by Ettus Research. These devices are widely used in academia, industry, and research for various wireless communication applications, ranging from simple experimentation to complex signal processing tasks.
USRP devices offer a flexible platform that can be used with various software frameworks, including GNU Radio and the USRP Hardware Driver (UHD). The product line includes both entry-level models for hobbyists and advanced models for professional and research use.
Supported Models
Section titled “Supported Models”- USRP B200/B210: Compact, single-board, full-duplex, with a wide frequency range.
- USRP N200/N210: High-performance models with increased bandwidth and connectivity options.
- USRP X300/X310: High-end models featuring large bandwidth, multiple MIMO channels, and support for GPSDO.
- USRP E310/E320: Embedded devices with onboard processing capabilities.
- USRP B200mini: Ultra-compact model for portable and embedded applications.
Key Features
Section titled “Key Features”- Frequency Range: Typically covers from DC to 6 GHz, depending on the model and daughter boards used.
- Bandwidth: Varies by model, up to 160 MHz in some high-end versions.
- Connectivity: Includes USB 3.0, Ethernet, and PCIe interfaces depending on the model.
- Software Support: Compatible with UHD, GNU Radio, and other SDR frameworks.
Hackability
Section titled “Hackability”- The UHD library is fully open source and can be modified to meet user intention.
- Certain USRP models have “RFNoC” which streamlines the inclusion of custom FPGA processing in a USRP.
Limitations
Section titled “Limitations”- Some models may have limited bandwidth or processing capabilities.
- Compatibility with certain software tools may vary depending on the version of the UHD.
- Price range can be a consideration, especially for high-end models.
Set Up Instructions (Linux)
Section titled “Set Up Instructions (Linux)”USRP devices require the UHD (USRP Hardware Driver) library with Python bindings. There is no pip-installable UHD package — it must either be installed via conda or built from source.
Option A: Install via Conda (Recommended for Conda Environments)
Section titled “Option A: Install via Conda (Recommended for Conda Environments)”conda install conda-forge::uhdOption B: Build from Source (Required for pip/venv Environments)
Section titled “Option B: Build from Source (Required for pip/venv Environments)”The Python bindings must target the same Python version used in your virtual environment.
-
Install build dependencies:
Terminal window sudo apt install cmake build-essential libboost-all-dev libusb-1.0-0-dev \python3-dev python3-numpy libncurses-dev -
Install the Mako template library into your virtual environment (used by UHD’s build system):
Terminal window pip install mako -
Clone and build UHD with your virtual environment activated:
Terminal window git clone https://github.com/EttusResearch/uhd.gitcd uhdgit checkout v4.7.0.0cd hostmkdir build && cd buildcmake -DENABLE_PYTHON_API=ON -DPYTHON_EXECUTABLE=$(which python3) ..make -j$(nproc)sudo make installsudo ldconfig -
Copy the Python bindings into your virtual environment if
import uhdfails after installation:Terminal window cp -r ~/uhd/host/build/python/uhd ~/.venv/lib/python3.XX/site-packages/Replace
python3.XXwith your Python version (e.g.,python3.12).
After Either Installation Method
Section titled “After Either Installation Method”-
Download UHD FPGA/firmware images:
Terminal window uhd_images_downloader -
Verify device access:
Terminal window uhd_find_devicesFor USB devices (e.g. B-series), install a
udevrule.For most users:
Terminal window sudo udevadm control --reloadsudo udevadm triggerFor Radioconda users, create a symlink from your conda environment instead:
Terminal window sudo ln -s $CONDA_PREFIX/lib/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/radioconda-uhd-usrp.rulessudo udevadm control --reloadsudo udevadm trigger -
(Optional) Update firmware/FPGA images:
Terminal window uhd_usrp_probeThis will ensure your device is running the latest firmware and FPGA versions.