Configuration in UHD flows through the sameDocumentation 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.
--args string used to identify a device. After UHD locates the device using identifier keys such as type or serial, it passes any remaining key/value pairs to the device as initialization-time settings. This means a single argument string can both select a B200 and set its master clock rate in one step.
Device Configuration via Address String
Any key/value pair not used for identification is forwarded to the device during initialization. For example:type, then applies master_clock_rate=16e6 before the device is ready for use.
Common Configuration Keys
The table below covers the most frequently used configuration options. Individual device manuals may document additional device-specific keys.| Key | Description | Supported Devices | Example Value |
|---|---|---|---|
master_clock_rate | Master clock rate in Hz | X3x0, X4x0, B2x0, B1x0, E3xx, E1x0, N3xx | master_clock_rate=16e6 |
dboard_clock_rate | Daughterboard clock rate in Hz | X3x0 | dboard_clock_rate=50e6 |
system_ref_rate | Frequency of external reference in Hz | X3x0 | system_ref_rate=11.52e6 |
fpga | Path to alternative FPGA bitfile | All USB devices, X3x0 (PCIe), E310, E1x0 | fpga=/path/to/bitfile.bit |
fw | Path to alternative firmware | All USB devices, X3x0 | fw=/path/to/fw.bin |
ignore-cal-file | Ignore existing device calibration files | All devices with cal-file support | ignore-cal-file=1 |
mcr | Override master clock rate (USRP1 external clock) | USRP1 | mcr=52e6 |
niusrprpc_port | RPC port for NI USRP RIO | X3x0 | niusrprpc_port=5445 |
self_cal_adc_delay | Run ADC transfer delay self-calibration | X3x0 | self_cal_adc_delay=1 |
ext_adc_self_test | Run an extended ADC self-test | X3x0 | ext_adc_self_test=1 |
serialize_init | Force serial initialization of motherboards | X3x0, all MPM devices | serialize_init=1 |
force_reinit | Force reinitialization of device | N3x0, X4x0 | force_reinit=1 |
force_mtu | Skip MTU detection and use this fixed value | X3x0, E3x0, N3x0, X4x0 | force_mtu=8000 |
recover_mb_eeprom | Disable version checks for EEPROM recovery | X3x0 | recover_mb_eeprom=1 |
blank_eeprom | Caution: Erases EEPROM and can damage device | X3x0 | blank_eeprom=1 |
force_mtu is only recommended when automatic MTU detection fails due to a restrictive network configuration. For per-link MTU control, prefer the mtu stream argument instead.Subdevice Specification
A subdev spec string tells UHD which daughterboard slot and frontend to activate on a given motherboard. The format is:- Single channel
- Two channels (X3x0 / B2x0)
- B210 (integrated AD9361)
- BasicRX on USRP2 / N200
Most configurations use a single slot/frontend pair:
A subdev spec string always pertains to a single USRP. When running multiple USRPs together, set a subdev spec for each device individually.
Slot Names
All USRP family motherboards have at least one slot named A:. The USRP1 and X3x0 have two slots, A: and B:. On devices where only one slot is declared in the subdev spec, the other slot is treated as unused.Stream Args Configuration
When creating a streamer withget_rx_stream() or get_tx_stream(), you must provide a uhd::stream_args_t object. It has four components:
cpu_format
Format of samples in host memory (e.g.,
fc32, sc16)otw_format
Format of samples over the wire (e.g.,
sc16, sc8)args
Additional key/value pairs (e.g.,
spp=200)channels
List of device channel indices to include in the stream
CPU Format
The CPU format describes how samples are stored in the host application’s memory buffers.| String | C++ Type | Notes |
|---|---|---|
fc64 | std::complex<double> | Complex double-precision |
fc32 | std::complex<float> | Complex single-precision (most common) |
sc16 | std::complex<int16_t> | Complex signed 16-bit integer |
sc8 | std::complex<int8_t> | Complex signed 8-bit integer |
f32 | float | Single-precision real |
s16 | int16_t | Signed 16-bit real |
s8 | int8_t | Signed 8-bit real |
Over-the-Wire (OTW) Format
The OTW format describes how samples are packed for transport between host and device.| String | Supporting Devices | Notes |
|---|---|---|
sc16 | B2xx, N2xx, N3xx, E3xx, X3xx, X4xx | Default; best dynamic range |
sc12 | B2xx | Intermediate precision |
sc8 | B2xx, N2xx | Doubles available bandwidth at reduced dynamic range |
fc32 | B2xx | Complex float over the wire |
Additional Stream Args
Pass extra settings viastream_args.args as key/value string pairs:
Channel Mapping
Thechannels field maps streamer port indices to device channel indices. This is most useful when you want to stream from a non-default channel or swap channel ordering.
Two-Stage Tuning
Every USRP has two stages of tuning in its signal chain:- RF front-end — the local oscillator (LO) translates between RF and IF
- DSP — the CORDIC on the FPGA shifts between IF and baseband
uhd::tune_request_t object gives you explicit control over both stages.
Simple frequency set (automatic tuning)
For most applications, a direct frequency set is sufficient:
Tune with an LO offset
Shifting the LO away from the center frequency moves the DC component out of your passband:
Force integer-N tuning
Integer-N mode reduces spurs at the cost of tuning resolution. Supported on WBX, SBX, CBX, UBX, and their variants:
LO Lock and Settling Time
After any tune command, the RF front-end needs time for the LO to lock before you start streaming. Either poll the sensor or sleep for a conservative interval:- Poll lo_locked sensor
- Fixed sleep
Setting Gain, Rate, and Bandwidth
MPM Configuration Files
For MPM-based devices (N3xx, E320, E31x), additional defaults can be set in the device’s MPM configuration file and overridden by UHD at runtime.| Key | Description | Devices | Example |
|---|---|---|---|
enable_gps | Power the GPSDO on/off | N3xx, E320 | enable_gps=0 |
enable_fp_gpio | Enable/disable power to the front-panel GPIOs | N3xx, E320 | enable_fp_gpio=0 |
clock_source | Default clock source | N3xx, E320, E31x | clock_source=external |
time_source | Default time source | N3xx, E320, E31x | time_source=external |
rx_lo_source | Default RX LO source | N310 | rx_lo_source=external |
tx_lo_source | Default TX LO source | N310 | tx_lo_source=external |
pps_export | Default PPS export value | N3xx | pps_export=0 |
forward_eth | Set forwarding policy for Ethernet packets | N3xx | forward_eth=1 |
forward_bcast | Set forwarding policy for broadcast packets | N3xx | forward_bcast=1 |
master_clock_rate | Default master clock rate | N3xx, E320, E31x | master_clock_rate=1e6 |
skip_boot_init | Defer device init to first UHD run | N3xx | skip_boot_init=1 |
no_reload_fpga | Don’t load idle image after session ends | E31x | no_reload_fpga=1 |
