Skip to main content

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.

Every USRP device exposes a set of key/value string pairs that uniquely identify it on the host system. These pairs — called device address arguments — can be used to narrow down which device UHD connects to, whether you are running a command-line utility or calling the API programmatically. The same --args string you pass to uhd_find_devices is accepted by nearly every UHD example and application.

Device Address Keys

The table below lists the standard identifiers available on all or most USRP devices. Every identifier is passed as a key/value pair in an --args string or as a field in uhd::device_addr_t.
IdentifierKeyNotesDevicesExample Value
Serial NumberserialGlobally unique identifierAll devices12345678
IP AddressaddrUnique identifier on a networkAll network devices192.168.10.2
ResourceresourceUnique identifier for USRP RIO devices over PCIeX3x0RIO0
NamenameOptional user-set identifier or hostnameAll deviceslab1_xcvr
TypetypeHardware series identifierAll devicesusrp1, b200, x300, n3xx, x4xx
Vendor/Product IDvid, pidBoth must be provided together with typeAll USB devicesvid=0x04b4,pid=0x8613
The device address string serves double duty: it identifies the device and carries configuration options such as master_clock_rate. See Configuring USRP Devices for the full list of configuration keys.

Discovering Devices from the Command Line

The uhd_find_devices utility scans your system for all supported USRP devices and prints an enumerated list of discovered devices together with their addresses. Run it with no arguments to discover everything, or add --args to filter results.
1

Find all attached devices

uhd_find_devices
2

Filter by device type

uhd_find_devices --args="type=usrp1"
3

Filter by serial number

uhd_find_devices --args="serial=12345678"
4

Filter by user-assigned name

uhd_find_devices --args="name=lab1_xcvr"
5

Combine filters

uhd_find_devices --args="type=usrp1, name=lab1_xcvr"

Probing Device Properties

Once you know which device you want, use uhd_usrp_probe to construct a live connection to the device and print all of its properties — detected daughterboards, frequency ranges, gain ranges, and more.
uhd_usrp_probe --args "<device-specific-address-args>"

Device Discovery via the API

The uhd::device::find() call searches for devices and returns a uhd::device_addrs_t vector. Each element is a uhd::device_addr_t map that can be inspected or passed directly to uhd::usrp::multi_usrp::make().
1

Discover all devices

An empty hint discovers every device visible to UHD:
uhd::device_addr_t hint; // empty hint = find all
uhd::device_addrs_t dev_addrs = uhd::device::find(hint);
2

Filter by type

Populate the hint to narrow the search:
uhd::device_addr_t hint;
hint["type"] = "usrp1";
uhd::device_addrs_t dev_addrs = uhd::device::find(hint);
3

Filter by serial number

uhd::device_addr_t hint;
hint["serial"] = "12345678";
uhd::device_addrs_t dev_addrs = uhd::device::find(hint);
4

Open the first discovered device

if (!dev_addrs.empty()) {
    uhd::usrp::multi_usrp::sptr usrp =
        uhd::usrp::multi_usrp::make(dev_addrs[0]);
}

Naming a USRP Device

For convenience, you can burn a custom name into the device’s EEPROM so it can be found by name rather than by serial number or IP address.
1

Set a custom name

Run the usrp_burn_mb_eeprom utility from the UHD utils directory:
cd <install-path>/lib/uhd/utils
./usrp_burn_mb_eeprom --args=<optional device args> --values="name=lab1_xcvr"
A name must be composed of ASCII characters and must be 0–20 characters long. Names are not required to be unique across devices.
2

Find the device by name

uhd_find_devices --args="name=lab1_xcvr"

MPM Device Reachability Check

By default, UHD attempts to open an RPC connection to each IP address reported by MPM-based devices (N3xx, X4xx series) to verify reachability. This check can be slow, especially over direct-cabled QSFP connections where some IPs may time out.
uhd_find_devices --args mpm_check_reachability=no
You can set mpm_check_reachability permanently in the [Global] section of your uhd.conf file. The --args option always overrides the config file value.

Build docs developers (and LLMs) love