Home
The Soapy UHD project provides a plugin module to use UHD devices within the SoapySDR API and software that supports SoapySDR. In addition, the project provides a UHD module to use any SoapySDR device within the UHD API and UHD supported software.
SoapyUHD table of contents
Pre-built installers for various systems are available through the Pothos SDR environment.
- Install UHD - https://github.com/EttusResearch/uhd/wiki
- Install SoapySDR: https://github.com/pothosware/SoapySDR/wiki
The CMake build system will locate boost, UHD, and SoapySDR development files on your system. Plugin modules will be built and installed into UHD and SoapySDR modules directories.
git clone https://github.com/pothosware/SoapyUHD.git
cd SoapyUHD
mkdir build
cd build
cmake ..
make
sudo make install
Use the SoapySDRUtil application to see if SoapySDR can detect your device. In this example, lets use the --probe option to print information about the USRP: :
SoapySDRUtil --probe="driver=uhd,type=b200"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################
Probe device driver=uhd,type=b200
linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.004-0-unknown
[INFO] Operating over USB 2.
[INFO] Initialize CODEC control...
[INFO] Initialize Radio control...
[INFO] Performing register loopback test...
[INFO] pass
[INFO] Performing register loopback test...
[INFO] pass
[INFO] Performing CODEC loopback test...
[INFO] pass
[INFO] Performing CODEC loopback test...
[INFO] pass
[INFO] Asking for clock rate 32.000000 MHz
[INFO] Actually got clock rate 32.000000 MHz
[INFO] Performing timer loopback test...
[INFO] pass
[INFO] Performing timer loopback test...
[INFO] pass
----------------------------------------------------
-- Device identification
----------------------------------------------------
driver=b200
hardware=B210
fpga_version=6.0
fw_version=7.0
mboard_id=B210
mboard_name=
mboard_serial=123456
rx0_antenna=RX2
rx0_id=Unknown (0xffff)
rx0_serial=
rx0_subdev_name=FE-RX2
rx0_subdev_spec=A:A A:B
rx1_antenna=RX2
rx1_id=Unknown (0xffff)
rx1_serial=
rx1_subdev_name=FE-RX1
rx1_subdev_spec=A:A A:B
tx0_antenna=TX/RX
tx0_id=Unknown (0xffff)
tx0_serial=
tx0_subdev_name=FE-TX2
tx0_subdev_spec=A:A A:B
tx1_antenna=TX/RX
tx1_id=Unknown (0xffff)
tx1_serial=
tx1_subdev_name=FE-TX1
tx1_subdev_spec=A:A A:B
----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
Channels: 2 Rx, 2 Tx
Timestamps: YES
Clock sources: internal, external, gpsdo
Time sources: none, internal, external, gpsdo
Sensors: ref_locked
GPIOs: RXA, TXA
----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
Full-duplex: YES
Antennas: TX/RX, RX2
Corrections: DC removal, DC offset, IQ balance
Full gain range: [0, 76] dB
PGA gain range: [0, 76] dB
Full freq range: [34, 6016] MHz
RF freq range: [34, 6016] MHz
BB freq range: [-16, 16] MHz
Sample rates: [0.0625, 32] MHz
Filter bandwidths: [0.2, 56] MHz
Sensors: lo_locked, rssi
----------------------------------------------------
-- RX Channel 1
----------------------------------------------------
Full-duplex: YES
Antennas: TX/RX, RX2
Corrections: DC removal, DC offset, IQ balance
Full gain range: [0, 76] dB
PGA gain range: [0, 76] dB
Full freq range: [34, 6016] MHz
RF freq range: [34, 6016] MHz
BB freq range: [-16, 16] MHz
Sample rates: [0.0625, 32] MHz
Filter bandwidths: [0.2, 56] MHz
Sensors: lo_locked, rssi
----------------------------------------------------
-- TX Channel 0
----------------------------------------------------
Full-duplex: YES
Antennas: TX/RX
Corrections: DC offset, IQ balance
Full gain range: [0, 89.75] dB
PGA gain range: [0, 89.75] dB
Full freq range: [34, 6016] MHz
RF freq range: [34, 6016] MHz
BB freq range: [-16, 16] MHz
Sample rates: [0.0625, 32] MHz
Filter bandwidths: [0.2, 56] MHz
Sensors: lo_locked
----------------------------------------------------
-- TX Channel 1
----------------------------------------------------
Full-duplex: YES
Antennas: TX/RX
Corrections: DC offset, IQ balance
Full gain range: [0, 89.75] dB
PGA gain range: [0, 89.75] dB
Full freq range: [34, 6016] MHz
RF freq range: [34, 6016] MHz
BB freq range: [-16, 16] MHz
Sample rates: [0.0625, 32] MHz
Filter bandwidths: [0.2, 56] MHz
Sensors: lo_locked
On the other hand, the UHD utilities and API can be used for Soapy SDR supported devices. This feature also allows USRP owners to user their devices remotely through the UHD API using Soapy Remote.
In this example, lets find the RTL dongle using uhd_find_devices: :
uhd_find_devices
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.009.001-0-unknown
Detached kernel driver
Found Rafael Micro R820T tuner
Reattached kernel driver
--------------------------------------------------
-- UHD Device 0
--------------------------------------------------
Device Address:
available: Yes
driver: rtlsdr
label: Generic RTL2832U OEM :: 00000001
manufacturer: Realtek
product: RTL2838UHIDIR
rtl: 0
serial: 00000001
tuner: Rafael Micro R820T
type: soapy
Having trouble? If SoapySDRUtil can find your device and UHD cannot, try these two fixes:
- Make sure that UHD came from the open-source code-base. Closed source binaries may not support module loading.
- Set the UHD_MODULE_PATH environment variable to the directory where libsoapySupport.so was installed.
- Example:
export UHD_MODULE_PATH=/opt/lib/uhd/modules
- Example:
- FAQ
- Build guide
- Driver guide
- SoapySDR header files
- Doxygen documentation
- Python binding support
- LuaJIT binding support
- .NET binding support
- GO binding support
- Rust binding support
- Julia binding support
- Pothos SDR Tutorial
- Help and support
- Pothos users' group
- Twitter @pothosware
- IRC chat #pothos
- Slack workspace
- Contract services
- Developer blog
- Contributing
- Donate
- Example support
- Remote access
- Multi device
- Device sharing
- SIMD converters
- Audio devices
- Osmo support
- NovenaRF support
- EVB7 support
- UHD support
- Blade RF support
- Hack RF support
- RTL-SDR support
- SDR Play support
- Radioberry support
- Red Pitaya support
- Lime Suite support
- Airspy support
- Airspy HF+ support
- PlutoSDR support
- Skylark Iris module
- Funcube Dongle Pro+
- IC-R8600 Receiver
- Epiq Sidekiq
- NetSDR support
- XTRX support
- RTL TCP support
- SpyServer support