This guide walks you through installing UHD, preparing your USRP device, and running a real receive-to-file example using both the Python and C++ APIs. By the end you will have confirmed that UHD can discover your device and stream complex baseband samples to the host.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/EttusResearch/uhd/llms.txt
Use this file to discover all available pages before exploring further.
Install UHD
Choose the installation method that matches your platform and toolchain.Linux (Ubuntu/Debian) — package managerLinux (Fedora/RHEL) — package managermacOS — HomebrewWindows — Download the prebuilt installer from the Ettus Research files server and run it. The installer registers UHD in the system PATH and places the Python bindings in the active Python environment.Build from source — See the UHD build guide for CMake configuration options and dependency lists on all supported platforms.
UHD requires Boost, libusb (for USB devices), and Python 3 with NumPy for the Python bindings. Full dependency lists are in the official build guide.
Download FPGA images
USRP devices require FPGA bitfiles that are distributed separately from the UHD driver. After installation, run the bundled downloader to fetch the images that match your installed UHD version:The tool downloads only the images for the UHD version you installed and places them in the default image directory (typically
/usr/share/uhd/images/ on Linux). Pass --help to see filtering options if you only want images for specific device families.Connect your device and verify discovery
Connect your USRP to the host:A successfully connected device prints output similar to:Once a device is found, inspect its full hardware configuration:
- USB devices (B-Series): Connect the USB 3.0 cable. No IP configuration is required.
- Ethernet devices (N-Series, X-Series): Connect the 1 GbE or 10 GbE cable. Set the host interface to a static IP in the same subnet as the device (default device IPs are documented per model in the manual).
- Embedded devices (E-Series): Access over the USB UART or SSH; UHD is pre-installed on the device.
uhd_usrp_probe reports the motherboard type, FPGA image loaded, clock rates, available daughterboards, subdevice specifications, supported sample rates, frequency ranges, and gain ranges. Review this output before configuring your application to understand the actual hardware capabilities.Receive your first samples
With the device discovered, you can stream receive samples to a file using the high-level
MultiUSRP API. Choose the Python or C++ tab below.- Python
- C++
The UHD Python API exposes For more control—such as streaming continuously until a stop condition—use the lower-level streamer API directly. The following pattern is taken from Install the Python dependencies with:
uhd.usrp.MultiUSRP, which provides a convenience method recv_num_samps() that handles streamer creation, stream commands, and teardown in a single call. The example below is adapted directly from the host/examples/python/rx_to_file.py source.host/docs/driver_usage/stream.dox:The
recv_num_samps() convenience method (Python) and the recv() loop pattern (C++) both produce interleaved complex float32 (fc32) samples by default. Each sample is a pair of 32-bit IEEE 754 floats representing the in-phase (I) and quadrature (Q) components.Verifying Your Capture
After running either example, confirm the output file contains valid IQ data:-inf, check that the antenna is connected, the frequency is within the daughterboard’s range, and the gain is set appropriately.
Useful CLI Tools
UHD ships several command-line utilities that are valuable during development:| Command | Purpose |
|---|---|
uhd_find_devices | Discovers all UHD-compatible devices on the host |
uhd_usrp_probe | Prints detailed hardware info: FPGA version, subdevices, supported ranges |
uhd_images_downloader | Downloads FPGA bitfiles matching the installed UHD version |
rx_samples_to_file | Capture RX samples to disk (see --help for all options) |
tx_waveforms | Transmit a configurable waveform (CONST, SINE, SQUARE, RAMP) |
--help to see the full option list and usage examples.
Next Steps
Coding to the API
Deep-dive into the Multi-USRP, RFNoC, and C API interfaces with annotated examples and best-practice guidance.
Streaming Guide
Understand stream args, over-the-wire data types, overflow/underrun handling, and remote streaming.
Installation Guide
Full installation instructions for Linux, macOS, and Windows, including pre-built packages and build-from-source steps.
Knowledge Base
Application notes, tutorials, and the technical FAQ maintained by Ettus Research.
