Product Introduction

This improved USRP B210 is upgraded based on the classic Ettus USRP B210 reference design, targeting RF teaching, wireless algorithm prototyping, amateur radio, spectrum monitoring, software-defined radio research and communication system verification. It retains the classic USRP hardware architecture while optimizing the FPGA chip, interface and power supply layout, fully compatible with official UHD driver and GNU Radio ecosystem, and supports independent Vivado FPGA secondary development.

Centered on the high-performance AD9361 wideband agile RF transceiver paired with Xilinx XC7A75T-2FBG484I Artix-7 FPGA or Xilinx XC7A200T-2FBG484I Artix-7 FPGA (please note the XC7A75T or XC7A200T bundle), the upgraded USRP B210 features 2 independent receive channels and 2 independent transmit channels supporting full-duplex and half-duplex operation. It generates and captures RF analog signals covering 70 MHz to 6 GHz, with a maximum real-time instantaneous bandwidth of 56 MHz and flexible adjustable channel bandwidth from 200 kHz to 56 MHz. High-speed USB 3.0 Type-C bus serves as the data transmission and power supply interface, delivering stable 56 MHz real-time streaming bandwidth verified under native Linux systems, and compatible with Windows and Linux operating systems.

The board reserves MMCX external clock interfaces for 10 MHz reference clock and PPS synchronization signals, supporting external GPSDO clock input for high-precision time-frequency synchronization. Multiple SMA RF ports are equipped for TRX1, TRX2, RX1 and RX2, and an MX1.25 expansion connector is reserved for multi-channel GPIO extension and external hardware linkage. Multiple status indicator LEDs are integrated on board, including power supply, firmware loading, PPS lock, reference clock lock, and separate TX/RX status indicators for each RF channel to facilitate real-time working state observation. Compared with the original version, the new design removes the onboard GPSDO slot to reduce overall dimensions to 70*97 mm for better portability.

Integrated RF-Baseband Full-Spectrum Performance Matrix for USRP B210 (XC7A75T/XC7A200T)

Item

XC7A200T bundle

XC7A75T bundle

Main

Chipset

RF Transceiver: AD9361;

FPGA: Xilinx Artix-7 XC7A200T-2FBG484I

RF Transceiver: AD9361;

FPGA: Xilinx Artix-7 XC7A75T-2FGG484I

RF Frequency Range

70MHz ~ 6GHz

70MHz ~ 6GHz

Instantaneous Bandwidth

61.44MSPS

61.44MSPS

ADC/DAC Resolution

12-bit

12-bit

Sampling Rate

200 kSPS – 61.44 MSPS complex I/Q

200 kSPS – 61.44 MSPS complex I/Q

RF Channel

2 Transmit / 2 Receive, Full-Duplex Support

2 Transmit / 2 Receive, Full-Duplex Support

Typical TX Output Power

Up to 7 dBm (frequency dependent)

Up to 7 dBm (frequency dependent)

RX Noise Figure

Typical <3.5 dB @ 2.4 GHz

Typical <3.5 dB @ 2.4 GHz

Onboard Memory

no

no

FPGA Logic Cells

215K

75K

Clock Precision

0.5ppm

0.5ppm

Hardware Interface

USB 3.0 Type-C OTG, SMA TX/RX Antenna Ports, MMCX PPS/10MHz Reference Input, MX1.25 GPIO Expansion Interface

USB 3.0 Type-C OTG, SMA TX/RX Antenna Ports, MMCX PPS/10MHz Reference Input, MX1.25 GPIO Expansion Interface

Power Supply

USB 5V bus-powered (500mA max)

USB 5V bus-powered (500mA max)

Supported OS

Windows 10/11, macOS, Ubuntu/Debian Linux

Windows 10/11, macOS, Ubuntu/Debian Linux

Functional Specification Table of Peripheral Interfaces & Indicator LEDs

USB

USB 3.0 for host data communication, Type‑C connector

PPS

External PPS input, MMCX connector

10M

10 MHz reference input, MMCX connector

TRX1

Transmit/Receive Port 1, SMA connector

RX1

Receive Port 1, SMA connector

RX2

Receive Port 2, SMA connector

TRX2

Transmit/Receive Port 2, SMA connector

MX1.25 Connector

External expansion GPIO

PWER LED

Power indicator LED; lights up when powered on

STAS LED

Status indicator LED; lights up after firmware loads successfully

CLK LED

PPS synchronization indicator LED; flashes in sync with PPS signal

USR LED

Reference lock indicator LED; lights up when 10 MHz reference is locked

TRX1

LED

Transmit/receive indicator LED: red during transmission, blue during reception

RX1 LED

Receive indicator LED; lights blue during signal reception

RX2 LED

Receive indicator LED; lights blue during signal reception

TRX2

LED

Transmit/receive indicator LED: red during transmission, blue during reception

Core Advantages & Features

  • Native full-duplex 2TX+2RX independent channel, simultaneous transmit & receive support

  • Equipped with upgraded XC7A200T FPGA, fully compatible with Vivado for customized RF digital signal processing

  • High-speed USB3.0 Type-C port, up to 56MHz real-time bandwidth under native Linux; lossless large-volume IQ data transmission, durable plug-and-play

  • MMCX 10MHz reference clock and PPS pulse input, compatible with GPSDO for multi-SDR synchronous acquisition

  • Cross-platform support for Windows & Linux with UHD driver; nativ

Functional framework

Windows System Usage Tutorial

This chapter mainly introduces the construction of the software-defined radio environment and basic practical operation procedures for the Artix-7-based USRP B210 on the Windows 11 64-bit platform. It covers the deployment of low-level UHD drivers, environment configuration, troubleshooting of common faults, hardware verification, as well as the installation of multiple mainstream SDR tools and practical signal demodulation operations. A standardized device debugging and radio frequency signal testing solution for Windows is established.

UHD Driver Installation & Image Configuration

This section covers UHD library installation, environment variable configuration, fixes for missing dependencies and fx3 state 5 errors, and customized B210 FPGA image replacement to resolve device recognition failures.

Download & Install official UHD USB driver

UHD is the core library that allows all SDR software to communicate with the USRP B210. We will install the official Windows release driver.

Step1: Get installation package

Open your browser and visit the URL: https://files.ettus.com/binaries/uhd/latest_release. This machine runs the 64-bit Windows 11 operating system. On the page, open the Windows 11 directory and download the first compatible driver installer uhd_4.6.0.0-release_Win64_VS2019.exe located within it. Alternatively, you may use the identical installer pre-included in the supporting resource package.

Step2: Run installer with administrator privilege

Run the installer as administrator. If a Windows SmartScreen warning pops up, click "More info" followed by "Run anyway". Follow the installation wizard: click "Next", accept the license agreement, then click "Install". The entire installation process takes approximately 30 seconds.

Step3: Hardware connection & device check

After installation, connect the Artix-7 USRP B210 to your computer via a USB cable. Open Device Manager; under normal circumstances, you will see Ettus Research LLC B200/B210 listed under the USRPs category.

Step4: Manual driver update for unrecognized device

If the device fails to enumerate automatically, right-click the unknown device and select "Update driver". Manually specify the driver folder located in the UHD installation directory, then unplug and replug the USB device afterward.

Environment variable configuration for UHD

Press the Win + R shortcut keys to open the Run window, enter sysdm.cpl and click OK. Switch to the Advanced tab at the top of the popped-up System Properties window, then click the Environment Variables button. Create two new system environment variables named UHD_PKG_PATH and UHD_IMAGES_DIR, with their respective values set to C:\Program Files\UHD and C:\Program Files\UHD\bin.

Save the configuration and reopen the Command Prompt window for the settings to take effect.

Troubleshooting the Missing libusb-1.0.dll Error

Connect the device with a USB cable, navigate to the bin folder under the UHD installation directory, type cmd in the address bar and press Enter to open Command Prompt, then run uhd_usrp_probe.exe. The system will pop up a prompt indicating that libusb-1.0.dll cannot be found.

Solution: Copy the corresponding DLL file from the supporting resource package to the bin directory of UHD, then re-run the command.

Custom FPGA firmware replacement to fix fx3 state 5 error

Running uhd_usrp_probe triggers the error RuntimeError: fx3 is in state 5. This issue arises from mismatched FPGA image files. Follow the steps below to fix it:

Step 1: Locate the default storage path of the FPGA binary file

The terminal displays the loading path:

C:\Program Files\UHD\share\uhd\images\usrp_b210_fpga.bin

Step 2: Overwrite the original file

Copy the customized usrp_b210_fpga.bin file provided in the supporting resource package to the above image directory to replace the original file.

Step 3: Re-detect the hardware

Rerun uhd_usrp_probe.exe. If the terminal fully outputs hardware parameters of the B210, including clock configuration, RF channels, FPGA version and other information, it indicates the driver and firmware are correctly matched.

Device Connection & Hardware Verification

This section introduces standard hardware wiring specifications and two official UHD detection commands for verifying that the communication link, firmware and driver between the host computer and the USRP device are all functioning properly.

Hardware wiring specification

Connect the USRP B210 to your computer via a blue USB 3.0 port. USB 2.0 ports lack sufficient bandwidth, which will cause issues such as data disconnection, IQ sample packet loss and FPGA loading failures.

IMG_8441

Two official UHD detection commands

Quick scan connected USRP devices: Navigate to the UHD bin directory and run the corresponding command in Command Prompt.

uhd_find_devices

Normal output including device serial number, device name and product model B210 indicates that the hardware has been recognized by the system.

Full Hardware Probe for Complete Device Information via Command Prompt

uhd_usrp_probe

The terminal will fully display details including FPGA version, firmware version, RF transmit/receive channels, frequency range, gain range, clock source and loop self-test results. A passed loop test means the device can normally transmit and receive RF signals.

SDRangel Installation and Usage

This section covers installing SDRangel, an SDR visualization software, and demonstrates FM reception & demodulation using the USRP B210.

Download & install SDRangel software

Step1: Download installation package

https://github.com/f4exb/sdrangel/releases

Download the latest Windows EXE installer.

Step2: Install with administrator privilege

Right-click the installation package and select Run as administrator.

Click Yes in the Windows User Account Control pop-up window, then follow the wizard and click Next to finish the installation.

FM Broadcast Demodulation with USRP Device

Connect the USRP B210 via USB, and run uhd_find_devices in advance to confirm the device can be detected.

Launch SDRangel, click Add Receiver on the blank workspace, and select USRP from the hardware list.

Configure device parameters on the panel: fill in the local FM frequency as the center frequency (example: 103.9 MHz) and set the sample rate to 2.5 Msps

Center Frequency

Sample Rate

Click the purple play button to start RF reception; the spectrum and waterfall diagram will be displayed in real time on the interface.

Click Add Channel, select Broadcast FM Demodulator as the demodulator type, fine-tune channel parameters, and broadcast audio will be output through computer speakers.

Universal Radio Hacker (URH) Installation and Usage

This section covers URH (wireless signal reverse engineering and IQ analysis tool), demonstrating raw RF IQ data capture with USRP B210 for offline analysis.

Download & install URH signal analysis tool

Step1: Download Installer

Open the URH release page at https://github.com/jopohl/urh/releases and download the Windows 64-bit installer Universal.Radio.Hacker-2.10.0-x64.exe.

Step2: Complete Installation

Right-click the installer and run it as administrator, then follow the setup wizard and click Next to finish the installation.

USRP Device Scanning and IQ Raw Data Recording in URH

After launching the software, open the File menu and click the red Record button. In the recording window, select USRP as the hardware device and tap the green refresh icon to detect connected equipment.

Set the center frequency to your target signal frequency (e.g. 103.9 MHz), bandwidth to 2.1 MHz and sample rate to 2.1 MSPS. Adjust RF gain as required, with 25 dB as the initial value. Click Start to begin recording, then hit Stop after 10 to 30 seconds.

You can now save the recorded IQ data to a file for later analysis or replay.

GNURadio Installation and Usage

This section covers Windows deployment of GNU Radio, a graphical SDR framework, and walks through building an FM demodulation reception flowgraph.

Install GNU Radio via Radioconda

Step 1: Download the Installation Package

Visit https://github.com/radioconda/radioconda-installer/releases and download the Windows x86_64 EXE installer.

Step 2: Finish Installation via the Setup Wizard

Run the installer and complete the installation by following the on-screen setup wizard prompts.

Build USRP-Based FM Broadcast Receiver Flowgraph

1.Connect the antenna to the RX1 port of the USRP device, then launch GNU Radio Companion from the Start Menu.

2.Drag and drop the following modules onto the canvas: UHD: USRP Source, WBFM Receive, QT GUI Frequency Sink, Rational Resampler, QT GUI Time Sink, and Audio Sink.

3.Parameter configuration:

UHD: USRP Source: Center frequency set to 103.9 MHz, sampling rate 1.0 MHz, receive gain 60 dB, and bandwidth consistent with the device sampling rate.

WBFM Receive: Quadrature rate matched to the device sampling rate, audio decimation factor of 20.

Rational Resampler: Interpolation factor 24, decimation factor 25.

Audio Sink: Audio sample rate set to 48 kHz.

  1. Port of UHD: USRP Source → Input port of WBFM Receive; Output port of WBFM Receive → Input port of Rational Resampler; Output port of Rational Resampler → Input port of Audio Sink.

5.Save the flowgraph and click the execute button. After compilation finishes, you may listen to the FM broadcast.

SDRSharp Installation and Usage

This section covers SDRSharp deployment and firmware replacement. Connect the Artix-7 USRP B210 using the USRP ExtIO driver and configure parameters to receive 103.9 MHz FM broadcasts.

Install SDRSharp

First, locate the SDRSharp.zip file in the software package we provided, extract and install it. Next, double-click SDRSharp.exe to launch the program, which is ready for immediate use.

Alternatively, go to the GitHub repo: GitHub - extioxxx/usrp-ExtIO: new extio usrp(uhd3.14.0) to download the SDR# package preintegrated with the USRP plugin. Unzip the archive and extract its internal subpackage sdr#_1361_plugins_net3.5_uhd-3.14.0-ExtIO_v1.0.xxx-win32. Copy the custom firmware usrp_b210_fpga.bin from the resource pack into this folder to overwrite the original file, then double-click SDRSharp to launch the software.

Use SDRSharp to receive FM radio broadcasts

On the top left corner, open the "Source" drop-down menu and select "USRP - ExtIO_usrp.dll".

Note: If the software fails to detect the Artix-7 USRP B210, it is mostly caused by missing replacement of the custom firmware usrp_b210_fpga.bin. Re-overwrite this file to fix the issue.

Next, click the adjacent Configure button. In the pop-up configuration window, device parameters will be automatically detected and filled, and full initialization logs will be displayed in the log panel, indicating successful hardware connection.

Now tune the parameters for receiving the 103.9 MHz FM broadcast: enter the center frequency of 103.9M, select WFM from the radio mode dropdown on the right, and set the bandwidth to 180000.

Click the play button to listen to the radio.

Ubuntu System Usage Tutorial

This chapter presents the complete setup and practical experiment workflow of the Artix-7 upgraded USRP B210 on Ubuntu. Contents include UHD deployment, FPGA firmware replacement, hardware validation, installation of mainstream SDR applications, command-line transceiver tests and advanced RF experiments. A unified standard debugging workflow is built for SDR development based on USRP B210.

 UHD Driver Installation & Image Configuration

This section covers the core UHD communication library installation and customized B210 FPGA mirror replacement, solving fx3 is in state 5 device recognition failure error.

Update system source & install core UHD library

UHD is the core library that allows all SDR software to communicate with the USRP B210. We will install it from the official Ubuntu repository.

First, open the terminal and update the package list:

sudo apt update

Install the UHD driver and development files:

sudo apt install -y libuhd-dev uhd-host

Create FPGA image directory and configure environment variables

Create a directory to store FPGA images and set proper permissions:

sudo mkdir -p ~/B210/B210_images

sudo chmod 666 ~/B210/B210_images

Locate the download script path:

find /usr -name "uhd_images_downloader.py" 2>/dev/null

Note: The path varies for different users, please use your own path to download firmware.

Set the environment variable for UHD to find the images:

export UHD_IMAGES_DIR=~/B210/B210_images/

Official firmware download & permission error troubleshooting

Download the official firmware and FPGA images:

/usr/lib/uhd/utils/uhd_images_downloader.py

Note: You may encounter a [Errno 13] Permission denied error. To resolve this, change the directory’s owner to your current user account, which will grant you full control over it.

sudo chown -R $USER:$USER ~/B210

Add full recursive permissions to the directory:

sudo chmod -R 755 ~/B210/B210_images

Reset the environment variable and re-run the downloader:

export UHD_IMAGES_DIR=~/B210/B210_images /usr/lib/uhd/utils/uhd_images_downloader.py

Custom FPGA firmware replacement operation

Copy the custom usrp_b210_fpga.bin file we provided into the image directory to replace the original file. Without replacement, the system cannot detect the device and throw RuntimeError: fx3 is in state 5.

Step1: Locate the original firmware file

sudo find / -name "usrp_b210_fpga.bin" 2>/dev/null

The default storage path example:

/home/nyq/B210/B210_images/usrp_b210_fpga.bin

Step2: Delete the original firmware

cd /home/nyq/B210/B210_images

sudo rm usrp_b210_fpga.bin

Step3: Enable VMware shared folder to import customized firmware

Open VM menu → Settings → Options → Shared Folders, check Always enabled, click Add and select the local folder storing replacement firmware.

Step4: Move customized firmware to target directory

Select the matching firmware for replacement according to the product version. The example shown uses the XC7A75T version.

cd /mnt/hgfs/XC7A75T版本

sudo mv usrp_b210_fpga.bin /home/nyq/B210/B210_images

Firmware replacement completed.

Device Connection & Hardware Verification

This section covers standard hardware connection methods, USB permission configuration to support non-root operation, and two official UHD detection commands to confirm normal communication between host and hardware.

Hardware wiring specification

Connect the USRP B210 to your computer using a blue USB 3.0 port. USB 2.0 will lead to insufficient bandwidth and random disconnection.

Write exclusive udev rules for USRP USB devices

1.Create and write USRP udev rule file

sudo tee /etc/udev/rules.d/10-usrp.rules >/dev/null << 'EOF'

SUBSYSTEM=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0020", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0021", MODE="0666"

SUBSYSTEM=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0022", MODE="0666"

EOF

2.Reload the udev rules to take effect immediately

sudo udevadm control --reload-rules

sudo udevadm trigger

Reload rules and set persistent environment variable

New terminal windows will lose environment variables, reconfigure manually:

export UHD_IMAGES_DIR=/home/nyq/B210/B210_images

Verify variable:

echo $UHD_IMAGES_DIR

Dual hardware detection

Quick scan connected USRP devices

uhd_find_devices

Full hardware probe to read AD9361, FPGA version, serial number

uhd_usrp_probe

Complete AD9361 hardware information output indicates driver, firmware and physical connection work normally.

Universal Radio Hacker (URH) Installation and Usage

This section covers the full installation process of signal recording, analysis and decoding tool URH, and practical IQ raw signal capture operation with USRP B210.

Build independent Python virtual environment & install URH

cd ~

sudo apt install python3.10-venv

python3 -m venv urh-env

source urh-env/bin/activate

pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install PyQt5 numpy scipy psutil pyzmq -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install urh -i https://pypi.tuna.tsinghua.edu.cn/simple

After installation, input urh in terminal to launch software.

URH startup method

Remember to activate the virtual environment every time before opening URH:

source ~/urh-env/bin/activate urh

IQ signal recording operation

After launching URH, click File → red Record button, select USRP in device list, click green refresh icon to scan hardware.

Set signal parameters: center frequency 103.9 MHz, bandwidth 2 MHz, sampling rate 2 MSPS, initial gain 25 dB. Click Start to record 10~30 seconds, then Stop, save IQ data file for later analysis and playback.

GNURadio Installation and Usage

This section covers mainstream graphical SDR development platform GNU Radio deployment, hands-on building of FM demodulation receiving flowgraph for broadcast radio.

Install GNU Radio full components

sudo apt install -y gnuradio gnuradio-dev cmake git libboost-all-dev libcppunit-dev liblog4cpp5-dev python3-pygccxml pybind11-dev liborc-0.4-dev python3-pip clang-format gr-osmosdr

sudo apt install -y vim zsh wget net-tools

Installation verification

Check GNU Radio version:

gnuradio-config-info –version

Connect USRP B210, verify device recognition:

uhd_find_devices

For convenient subsequent use, we can set the UHD image file path as a permanent environment variable.

echo 'export UHD_IMAGES_DIR=/home/nyq/B210/B210_images' >> ~/.bashrc

Reload the environment configuration immediately

source ~/.bashrc

Verify the environment variable configuration

echo $UHD_IMAGES_DIR

If the configuration succeeds, the terminal should output:

/home/nyq/B210/B210_images

This indicates that the UHD image path has been configured correctly.

Build FM broadcast receiver flowgraph

Launch GNU Radio Companion via Terminal

gnuradio-companion

Drag 3 core modules to canvas: USRP Source, WBFM Receive, Audio Sink.

USRP Source parameter configuration: antenna RX2, sample rate 2.4 MHz, center frequency local FM station 103.9MHz.

WBFM Receive setting: Audio Decimation=10, Quadrature Rate consistent with sampling rate.

Audio Sink sample rate set to 48 kHz.

Signal wiring: USRP Source output → WBFM Receive input → WBFM output → Audio Sink input.

Save flowgraph file, click Execute button. After automatic compilation, computer speakers output FM radio audio, proving GNU Radio and USRP work cooperatively.

Gqrx Installation and Usage

This section covers lightweight spectrum visualization tool Gqrx installation, simple spectrum observation and FM broadcast receiving operation with USRP B210.

Install Gqrx

sudo apt update

sudo apt install gqrx-sdr

No error prompts mean installation succeeds.

Input gqrx in terminal to launch software, or open it from application menu.

First run pops up Device Configuration window, select B210/UHD device in dropdown list, click OK to initialize hardware.

FM broadcast receiving parameter configuration

Fill local FM frequency such as 103.9 MHz in frequency input box, select WFM (mono/stereo) demodulation mode in Mode dropdown.

Adjust Volume slider and LNA Gain slider until obvious signal peak appears on spectrum and audio output is clear without noise.

Basic RX/TX Test with Command Line Tools

This section introduces built-in UHD command-line tools without graphical interface, supporting fast spectrum receiving and single frequency signal transmission verification.

Real-time spectrum receiving test

Command format: uhd_fft -f target_frequency

Example: uhd_fft -f 100e6

A real-time FFT spectrum window pops up after running, tunable frequency range: 70 MHz ~ 6 GHz via -f parameter.

Single-tone carrier transmission test

Command format: uhd_siggen --freq frequency --const --amplitude power_coefficient

Example: uhd_siggen --freq 100e6 --const --amplitude 0.3

Parameter explanation: --const generates unmodulated carrier wave; amplitude ranges from 0.0 to 1.0 to control transmit power; press Ctrl+C to stop transmission.

Advanced SDR Applications and Experiments with USRP B210

This section covers multiple advanced practical SDR experiments based on USRP B210, including spectrum monitoring, graphical spectrum analyzer development, interference-suppressed FM receiver, and multi-industry research application scenarios.

Antenna matching & wireless spectrum monitoring

2.4GHz WiFi spectrum observation

Connect broadband antenna to USRP, execute command:

uhd_fft --freq 2.45e9 --gain 40 --samp-rate 20e6

Turn on mobile phone WiFi hotspot, an obvious signal peak will appear on the spectrum window.

FM broadcast spectrum observation

Replace FM dedicated antenna, execute command:

uhd_fft --freq 93M --samp-rate 2M --gain 30

A narrow high amplitude peak corresponds to local FM radio station signal.

GNU Radio self-developed real-time spectrum analyzer

Launch GNU Radio Companion via Terminal

gnuradio-companion

Step1: Drag UHD USRP Source module to canvas

Step2: Module parameter configuration

Ch0 Center Freq: 93M

Ch0 Sample Rate: 2M

Ch0 Gain Value: 40

Antenna: RX2

Step3: Drag QT GUI Frequency Sink spectrum display module

Step4: Connect USRP Source output to QT GUI Frequency Sink input

Step5: Click Run button to launch real-time spectrum window

Compared with command-line uhd_fft, graphical flowgraph supports richer real-time parameter adjustment.

Filter-enhanced high-quality FM demodulation receiver

System audio authority configuration

ls -la /dev/snd

sudo usermod -aG audio $USER

newgrp audio

Groups

aplay -l

sudo apt install alsa-utils sox

play -n synth 2 sin 440

If ALSA fails to detect sound card 0, manually specify audio card:

export ALSA_CARD=1

Note: ALSA is Linux bottom audio interface, PulseAudio is upper audio service, the above configuration is compatible with both.

Install numba for filter operation acceleration

sudo python3 -m pip install numba

Pure Python filter operation runs slowly; numba compiles code to C language to improve processing speed.

Complete FM demodulation signal processing logic

The Gaussian Filter module in this experiment relies on Numba, which requires NumPy 1.22 or newer. Execute python3 -c "import numpy; print(numpy.__version__)" to verify the installed NumPy version. The check result shows the current system version is 1.21.5, meaning an upgrade is mandatory.

Given GNU Radio suffers compatibility conflicts with NumPy 2.x, we avoid the latest release and remove the existing NumPy installation first:

pip3 uninstall numpy

Repeat the above command repeatedly if multiple NumPy versions coexist on the system, until pip outputs that no matching packages are left to uninstall.

Install the compatible fixed version with the following command:

pip3 install --user numpy==1.24.4

Recheck the NumPy version after installation to confirm success.

Launch GNU Radio Companion via Terminal

gnuradio-companion

Signal flow: UHD USRP Source → Rational Resampler (4x decimation) → 100kHz Low-Pass Filter → WBFM Receive → Secondary Rational Resampler (convert 50kHz audio to standard 48kHz) → Audio Sink.

Add QT GUI Frequency Sink to display spectrum before and after filtering; filter cutoff frequency and transition width can be adjusted via real-time slider to suppress out-of-band interference and improve audio clarity.

If the USRP device still cannot be detected at this point, and the UHD driver has been confirmed to be installed correctly, completely close VMware Workstation, then run Command Prompt (CMD) with administrator privileges and restart the VMware USB Arbitration Service to restore USB device passthrough functionality.

net start VMUSBArbService

sc query VMUSBArbService

Multi-scenario extended application introduction

USRP B210 supports multi-modulation research (BPSK/QPSK/16QAM/64QAM/GMSK/OFDM), ISM band equipment protocol reverse engineering, GSM/LTE cellular signal analysis based on srsRAN & OpenBTS, GPS signal simulation for receiver testing, FMCW & passive radar prototype development, amateur radio digital modes (FT8/WSPR/satellite communication), long-term spectrum monitoring with IQ data recording, and rapid prototyping of custom wireless communication protocols.

Reference

https://files.ettus.com/binaries/uhd/latest_release

https://github.com/extioxxx/usrp-ExtIO

https://wiki.analog.com/resources/tools-software/linux-software/gnuradio

https://github.com/btfz-sdr/gnuradio_demo/tree/main/B210%E4%B8%93%E9%A1%B9/03-%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85

https://github.com/btfz-sdr/gnuradio_demo/blob/main/B210%E4%B8%93%E9%A1%B9/07-%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E5%B8%A6%E6%9C%89%E6%BB%A4%E6%B3%A2%E5%8A%9F%E8%83%BD%E7%9A%84FM%E6%94%B6%E9%9F%B3%E6%9C%BA/readme.md

https://github.com/btfz-sdr/gnuradio_demo/tree/main/B210%E4%B8%93%E9%A1%B9/06-%E4%B8%8EGNURadio%E7%9A%84%E5%88%9D%E6%AC%A1%E6%8E%A5%E8%A7%A6

https://github.com/btfz-sdr/gnuradio_demo/tree/main/B210%E4%B8%93%E9%A1%B9/04-%E5%A4%A9%E7%BA%BF%E4%B8%8E%E6%97%A0%E7%BA%BF%E4%BF%A1%E5%8F%B7%E7%9A%84%E4%BE%A6%E5%AF%9F