微信图片_20250625135844

Product Introduction

The USRP B210 (Kintex‑7 FPGA) is an optimized revision of the classic USRP B210 software-defined radio unit. While fully retaining the original RF front-end and software compatibility, this device upgrades the original Xilinx Spartan‑6 FPGA to the newer Xilinx Kintex‑7 series chip, and connects to the host PC via a USB 3.0 Type‑C port.

Its RF module features a dual-transmit dual-receive full-duplex front-end built around the AD9361 RFIC. It covers a frequency range of 70 MHz to 6 GHz with a maximum real-time bandwidth of 56 MHz. The RF circuitry has been reoptimized via simulation and adopts a frequency-divided RF front-end architecture.

The GPS disciplined oscillator (GPSDO) slot reserved on the original B210 has been eliminated to greatly reduce the device footprint. An onboard integrated GPS module handles timing synchronization instead. External pulse-per-second (PPS) and 10 MHz reference clock inputs are routed out through MMCX connectors, allowing the unit to lock to laboratory-grade reference clocks. The onboard GPS module can also be disabled when necessary, with external signals used as the PPS reference source instead.

Key Features

• Xilinx Kintex-7 series FPGA in place of the original Spartan-6, with a Vivado 2024.1 source project

• USB 3.0 Type-C host interface, up to 56 MHz real-time transmission bandwidth

• 70 MHz to 6 GHz continuous tuning range, AD9361 RF front end

• 2T2R full duplex: TRX1 and TRX2 transmit/receive ports, RX1 and RX2 receive-only ports, all SMA

• External PPS input and external 10 MHz reference input on MMCX connectors

• Onboard GPS module, with the option of replacing it as the PPS source

• RF circuit optimised through simulation, frequency-division RF front-end design

• GPSDO slot removed to reduce board size: 70 x 97 x 11.5 mm

• Fully backward compatible with original USRP B210 software and flowgraphs

Device Core Parameters

The table below summarises the parameters that differ from, or that are worth restating against, the original USRP B210.

Item

Specification

FPGA

Xilinx Kintex-7 series, replacing the original Spartan-6

RF front end

AD9361 RFIC, 2T2R full duplex

Tuning range

70 MHz to 6 GHz

Host interface

USB 3.0 Type-C

Max real-time bandwidth

56 MHz

RF ports

TRX1 / RX1 / RX2 / TRX2, SMA connectors

Reference inputs

GPS / PPS / 10 MHz on MMCX, plus an onboard GPS module

GPSDO

Slot removed to reduce board size

Board size

70 x 97 x 11.5 mm

FPGA source project

Built with Vivado 2024.1

Connectors and Indicators

IMG_256
IMG_256

Connectors

Marking

Connector

Function

TRX1

SMA

Channel 1 transmit / receive port

RX1

SMA

Channel 1 receive-only port

RX2

SMA

Channel 2 receive-only port

TRX2

SMA

Channel 2 transmit / receive port

USB

USB 3.0 Type-C

Host interface and bus power

PPS

MMCX

External pulse-per-second timing input

10M

MMCX

External 10 MHz reference clock input

GPS

MMCX

GPS antenna input for the onboard GPS module

Indicators

Marking

Meaning

PWER

Power indicator. Lights when the board is powered from the USB port.

STAS

Status indicator.

CLK

Clock indicator, related to reference clock selection and lock.

USR

User-defined indicator, driven by the loaded FPGA image.

Comparison with the Original USRP B210

Item

Original USRP B210

This board

FPGA

Xilinx Spartan-6

Xilinx Kintex-7 series

FPGA toolchain

Xilinx ISE

Xilinx Vivado 2024.1

Host interface

USB 3.0

USB 3.0 Type-C

GPSDO

Optional GPSDO slot

Slot removed, onboard GPS module instead

Reference inputs

PPS and 10 MHz

PPS, 10 MHz and GPS antenna, all MMCX

Board size

Larger, GPSDO slot occupies space

70 x 97 x 11.5 mm

RF front end

AD9361, 2T2R

AD9361, 2T2R, re-optimised through simulation

FPGA image

Stock Ettus image

Customised image, supplied in the resource package

Software compatibility

UHD

UHD, fully compatible with the original

Note: Software compatibility is complete, but the FPGA image is not interchangeable. Always use the usrp_b210_fpga.bin supplied in the resource package for this board.

Supporting Resource Package

Folder

Contents

USRP_B210 resources \ windows software

uhd_4.6.0.0-release_Win64_VS2019.exe, libusb-1.0.dll, erllc_uhd_winusb_driver.zip

USRP_B210 resources \ BIN file to be replaced

usrp_b210_fpga.bin, the customised FPGA image for this board

In the shipped package the folder names are written in Chinese as USRP_B210 资料 \windows 软件 and USRP_B210 资料 \ 需替换 BIN 文件. The commands and paths in this manual use those names exactly as they appear on disk.

Windows Deployment and Usage

This chapter covers the complete Windows deployment: UHD driver installation, environment variable configuration, the two errors that commonly appear at first run, hardware verification, and then the installation and hands-on use of SDRangel, Universal Radio Hacker, GNU Radio and SDRSharp.

The reference machine for this chapter is 64-bit Windows 11.

Install the Official UHD USB Driver

UHD is the core library that allows all SDR software to communicate with the USRP B210. Install the official Windows release first, before anything else.

Step 1 Get the installation package

Open your browser and visit https://files.ettus.com/binaries/uhd/latest_release. Open the directory that matches your Windows version and download the first compatible installer inside it, for example uhd_4.10.0.0-release_Win64_VS2019.exe. Alternatively, use the identical installer pre-included in the supporting resource package at USRP_B210资料\windows软件\uhd_4.6.0.0-release_Win64_VS2019.exe.

Step 2 Run the installer as administrator

Right-click the installer and run it as administrator. If a Windows SmartScreen warning appears, click More info followed by Run anyway. Follow the installation wizard: click Next, accept the licence agreement, then click Install. The installation takes approximately 30 seconds.

Step 3 Connect the hardware and check the device

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

Step 4 Manual driver update for an unrecognised device

If the device fails to enumerate automatically, right-click the unknown device and select Update driver. Manually specify the driver folder inside the UHD installation directory, then unplug and replug the USB device. If Windows still fails to bind a driver, extract erllc_uhd_winusb_driver.zip from USRP_B210资料\windows软件 and point the update dialog at the extracted folder to install the WinUSB driver.

Configure the UHD Environment Variables

Press Win + R to open the Run window, type sysdm.cpl and click OK. Switch to the Advanced tab of the System Properties window, then click the Environment Variables button.

Create two new system environment variables:

Save the configuration and reopen the Command Prompt window for the settings to take effect. Environment variables are read when a process starts, so an already-open Command Prompt will not see them.

Fix 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 a Command Prompt in that folder, then run:

uhd_usrp_probe.exe

The system pops up a prompt indicating that libusb-1.0.dll cannot be found.

Solution: copy libusb-1.0.dll from the supporting resource package at USRP_B210 资料 \windows 软件 into the bin directory of UHD, then run the command again.

Replace the Custom FPGA Firmware to Fix the fx3 state 5 Error

Running uhd_usrp_probe now triggers a different error:

RuntimeError: fx3 is in state 5

This is caused by a mismatched FPGA image file. The stock Ettus image does not match the Kintex-7 FPGA on this board. Follow the steps below.

Step 1 Locate the default storage path of the FPGA binary

The terminal displays the loading path:

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

Step 3 Re-detect the hardware

Run uhd_usrp_probe.exe again. If the terminal fully outputs the hardware parameters of the B210, including clock configuration, RF channels and FPGA version, the driver and firmware are correctly matched.

Hardware Wiring Specification

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

The Two Official UHD Detection Commands

These two commands are the definitive test of the deployment. Run them from the UHD bin directory in a Command Prompt.

Quick scan for connected USRP devices

uhd_find_devices

Normal output includes the device serial number, the device name and the product model B210, which means the hardware has been recognised by the system.

Full hardware probe

uhd_usrp_probe

The terminal fully displays the FPGA version, the firmware version, the RF transmit and receive channels, the frequency range, the gain range, the clock source and the loopback self-test result. A passed loopback test means the device can transmit and receive RF signals normally.

Note: Do not proceed to any application in the rest of this chapter until both commands succeed. Every SDR application on Windows finds this board through UHD, so a failure here will reappear as "device not found" in each of them.

SDRangel Installation and Usage

SDRangel is an SDR visualisation and demodulation application with a broad set of demodulators. This section installs it and demodulates an FM broadcast with the USRP B210.

Download and install SDRangel

Step 1 Download the installation package

Open https://github.com/f4exb/sdrangel/releases and download the latest Windows EXE installer.

Step 2 Install with administrator privilege

Right-click the installation package and select Run as administrator. Click Yes in the Windows User Account Control pop-up, then follow the wizard and click Next to finish the installation.

FM broadcast demodulation with the USRP device

Step 1 Connect and confirm the device

Connect the USRP B210 over USB, and run uhd_find_devices beforehand to confirm the device is detected.

Step 2 Add a receiver

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

Step 3 Configure the device parameters

Configure the device parameters on the panel: enter your local FM frequency as the centre frequency, for example 97.4 MHz, and set the sample rate to 2.5 Msps.

Step 4 Start RF reception

Click the purple play button to start RF reception. The spectrum and waterfall display appear in real time.

Step 5 Add the demodulator channel

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

Universal Radio Hacker Installation and Usage

Universal Radio Hacker (URH) is a wireless signal reverse engineering and IQ analysis tool. This section captures raw RF IQ data with the USRP B210 for offline analysis.

Download and install the URH signal analysis tool

Step 1 Download the 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.

Step 2 Complete the installation

Right-click the installer and run it as administrator, then follow the setup wizard and click Next to finish the installation. The official binary package contains all dependencies, so no Python environment configuration is required.

Device scanning and IQ raw data recording

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 click the green refresh icon to detect connected equipment.

Set the parameters as follows:

Parameter

Value

Centre frequency

103.9MHz

Bandwidth

2.1 MHz

Sample rate

2.1 MHz

RF gain

25 dB as a starting value, adjust as required

Click Start to begin recording, then click Stop after 10 to 30 seconds.

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

GNU Radio Installation and Usage

GNU Radio is a graphical SDR framework. This section deploys it on Windows through Radioconda and builds 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. Radioconda bundles GNU Radio together with UHD support and the Python environment it needs, so no manual dependency resolution is required.

Build a USRP-based FM broadcast receiver flowgraph

Step 1 Connect the antenna and launch the software

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

Step 2 Drag the modules onto the canvas

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.

Step 3 Parameter configuration

Module

Parameters

UHD: USRP Source

Centre frequency 103.9 MHz, sample rate 1.0 MHz, gain 60 dB, bandwidth equal to the device sample rate

WBFM Receive

Quadrature rate equal to the device sample rate, audio decimation 20

Rational Resampler

Interpolation 24, decimation 25

Audio Sink

Audio sample rate 48 kHz

Step 4 Signal connection routing

Output port of UHD: USRP Source to the input port of WBFM Receive; output port of WBFM Receive to the input port of Rational Resampler; output port of Rational Resampler to the input port of Audio Sink.

Step 5 Save and run

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

SDRSharp Installation and Usage

SDRSharp connects to the Kintex-7 USRP B210 through the USRP ExtIO plug-in. This section covers the deployment, the firmware replacement it needs, and reception of a 97.4 MHz FM broadcast.

Install SDRSharp

If you already have an SDRSharp.zip build bundled with the USRP ExtIO plug-in, extract it and double-click SDRSharp.exe to launch the program. It is ready for immediate use.

Otherwise, go to the GitHub repository extioxxx/usrp-ExtIO (new extio usrp, uhd 3.14.0) and download the SDR# package pre-integrated with the USRP plug-in. 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 USRP_B210资料\需替换BIN文件 into this folder to overwrite the original file, then double-click SDRSharp to launch the software.

Note: SDRSharp keeps its own copy of the FPGA image inside its program folder. Replacing the image once under C:\Program Files\UHD is not enough. If SDRSharp fails to detect the board, this is almost always the reason.

Use SDRSharp to receive FM radio broadcasts

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

Next, click the adjacent Configure button. In the configuration window that pops up, the device parameters are automatically detected and filled in, and the full initialisation log is displayed in the log panel, which indicates a successful hardware connection.

Now tune the parameters for receiving a 97.4 MHz FM broadcast:

Parameter

Value

Centre frequency

97.4M

Radio mode

WFM

Bandwidth

180000

Click the play button to listen to the radio.

Ubuntu Deployment and Usage

This chapter covers the complete Ubuntu deployment: installing the core UHD library, creating the FPGA image directory, downloading the official images, replacing the customised FPGA image, writing udev rules so the device is usable without sudo, verifying the hardware, and then installing and using Universal Radio Hacker, GNU Radio, Gqrx and the UHD command line tools.

Update the System Source and Install the Core UHD Library

UHD is the core library that allows all SDR software to communicate with the USRP B210. Install it from the official Ubuntu repository. Open a terminal and update the package list:

udo apt update

Install the UHD driver and development files:

sudo apt install -y libuhd-dev uhd-host

Create the FPGA Image Directory and Configure the Environment Variable

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

sudo mkdir -p ~/B210/B210_images

sudo chmod 755 ~/B210/B210_images

Locate the download script:

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

Note: The path varies between distributions and users. Use the path that the find command reports on your own machine rather than copying the one printed in this manual.

Set the environment variable that tells UHD where to look for images:

export UHD_IMAGES_DIR=~/B210/B210_images/

Download the Official Firmware and Resolve Permission Errors

Download the official firmware and FPGA images:

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

You may hit a permission error at this point. The directory was created with sudo and is therefore owned by root. Change the owner to your own account so that you have 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

Replace the Custom FPGA Firmware

Copy the custom usrp_b210_fpga.bin supplied in the resource package at USRP_B210资料/需替换BIN文件/usrp_b210_fpga.bin into the image directory, replacing the file that the downloader fetched. Without this replacement the system cannot detect the device and throws RuntimeError: fx3 is in state 5.

Step 1 Locate the original firmware file

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

A typical result is:

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

Step 2 Delete the original firmware

cd /home/nyq/B210/B210_images

sudo rm usrp_b210_fpga.bin

Step 3 Enable the VMware shared folder to import the custom firmware

If you are running Ubuntu inside VMware, open the VM menu, then Settings, Options, Shared Folders. Check Always enabled, click Add and select the local folder that holds the replacement firmware. On bare metal, simply copy the file across with your file manager or with scp and skip to step 4.

Step 4 Move the custom firmware to the target directory

cd /mnt/hgfs/需替换BIN文件

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

Firmware replacement is now complete.

Hardware Wiring Specification

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

Write Exclusive udev Rules for the USRP USB Device

Without a udev rule the device node is only accessible to root, so every SDR application has to be started with sudo. The rules below give normal users access.

Step 1 Create and write the 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

Step 2 Reload the udev rules to take effect immediately

sudo udevadm control --reload-rules

sudo udevadm trigger

Unplug and replug the device so the new rule is applied to the device node.

Set a Persistent Environment Variable

A new terminal window loses the environment variable set with export, so it has to be reconfigured:

export UHD_IMAGES_DIR=/home/nyq/B210/B210_images

Verify the variable:

echo $UHD_IMAGES_DIR

Dual Hardware Detection

Quick scan for connected USRP devices

uhd_find_devices

Full hardware probe

Read the AD9361 details, the FPGA version and the serial number:

uhd_usrp_probe

A complete AD9361 hardware information output indicates that the driver, the firmware and the physical connection all work normally.

Note: As on Windows, do not go further until both commands succeed. Every application below reaches the hardware through UHD.

Universal Radio Hacker Installation and Usage

This section installs the signal recording, analysis and decoding tool URH, and performs a raw IQ capture with the USRP B210.

Build an independent Python virtual environment and install URH

Installing URH into a virtual environment keeps its Python dependencies away from the system packages that GNU Radio relies on.

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, type urh in the terminal to launch the 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 and then the red Record button. Select USRP in the device list and click the green refresh icon to scan the hardware.

Set the signal parameters:

Parameter

Value

Centre frequency

103.9 MHz

Bandwidth

2 MHz

Sample rate

2 MSPS

Initial gain

25 dB

Click Start to record for 10 to 30 seconds, then click Stop and save the IQ data file for later analysis and playback.

GNU Radio Installation and Usage

Install the full GNU Radio component set

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 and permanent environment variable

Check the GNU Radio version:

gnuradio-config-info --version

Connect the USRP B210 and verify device recognition:

uhd_find_devices

For convenience, set the UHD image path as a permanent environment variable:

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

Reload the shell configuration immediately:

source ~/.bashrc

Verify the configuration:

echo $UHD_IMAGES_DIR

If the configuration succeeded, the terminal outputs /home/nyq/B210/B210_images, which means the UHD image path is configured correctly.

Build the FM broadcast receiver flowgraph

Launch GNU Radio Companion from the terminal:

gnuradio-companion

Drag three core modules onto the canvas: UHD: USRP Source, WBFM Receive and Audio Sink.

Module parameters:

Module

Parameters

UHD: USRP Source

Antenna RX2, sample rate 500 kHz, centre frequency 103.9 MHz (103.9e6), gain 55

WBFM Receive

Audio decimation 10, quadrature rate equal to the device sample rate

Audio Sink

Audio sample rate 48 kHz

Signal wiring: USRP Source output to WBFM Receive input, then WBFM Receive output to Audio Sink input.

Save the flowgraph file and click the Execute button. After automatic compilation the computer speakers output FM radio audio, which proves that GNU Radio and the USRP are working together.

Gqrx Installation and Usage

Gqrx is a lightweight spectrum visualisation and reception tool, useful for a quick look at a band without building a flowgraph.

Install Gqrx

sudo apt update

sudo apt install gqrx-sdr

No error prompts means the installation succeeded.

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

The first run pops up a Device Configuration window. Select the B210 / UHD device in the drop-down list and click OK to initialise the hardware.

FM broadcast receiving parameter configuration

Enter your local FM frequency, such as 103.9 MHz, in the frequency input box, and select WFM (mono) or WFM (stereo) in the Mode drop-down.

Adjust the Volume slider and the LNA Gain slider until an obvious signal peak appears on the spectrum and the audio output is clear and free of noise.

Basic RX/TX Test with the Command Line Tools

UHD ships two command line utilities that need no graphical framework, which makes them the fastest way to confirm that both the receive path and the transmit path are alive.

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. The tunable range is 70 MHz to 6 GHz via the -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 an unmodulated carrier wave; amplitude ranges from 0.0 to 1.0 and controls the transmit power; press Ctrl+C to stop transmission.

Advanced SDR Applications and Experiments

This chapter covers a set of advanced practical experiments based on the USRP B210: spectrum monitoring, building a graphical spectrum analyser, an interference-suppressed FM receiver, and the wider research scenarios the board is suited to. The commands are given for Ubuntu; the GNU Radio flowgraphs are identical on Windows.

2.4 GHz WiFi spectrum observation

Connect a broadband antenna to the USRP and execute:

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

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

FM broadcast spectrum observation

Fit an FM antenna and execute:

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

A narrow, high-amplitude peak corresponds to a local FM radio station.

Build a Real-time Spectrum Analyser in GNU Radio

Launch GNU Radio Companion from the terminal:

gnuradio-companion

Step 1 Drag the UHD: USRP Source module onto the canvas

Step 2 Module parameter configuration

Parameter

Value

Ch0 Center Freq

93M

Ch0 Sample Rate

2M

Ch0 Gain Value

40

Antenna

RX2

Step 3 Drag the QT GUI Frequency Sink display module onto the canvas

Step 4 Connect the USRP Source output to the QT GUI Frequency Sink input

Step 5 Click Run to launch the real-time spectrum window

Compared with the command line uhd_fft, the graphical flowgraph supports far richer real-time parameter adjustment, and it is the natural starting point for adding your own processing blocks.

Filter-enhanced High-quality FM Demodulation Receiver

This experiment inserts a low-pass filter into the FM chain to suppress out-of-band interference and improve audio clarity. It has more host-side dependencies than the earlier experiments, so work through the three subsections in order.

System audio permission 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 you hear a 440 Hz tone, the audio path is working.

Install numba for filter operation acceleration

sudo apt update

sudo apt install python3-pip -y

sudo python3 -m pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

This first installs the pip package manager for Python 3, then installs Numba from a domestic mirror.

Complete FM demodulation signal processing logic

The Gaussian filter module in this experiment depends on Numba, which requires NumPy 1.22 or higher. Check the currently installed version:

python3 -c "import numpy; print(numpy.__version__)"

On a current Ubuntu the answer is often 2.2.6. GNU Radio has compatibility conflicts with the NumPy 2.x series, so downgrade to a stable compatible version rather than using the latest release. Remove the existing installation first:

sudo pip3 uninstall numpy

Check the version again:

python3 -c "import numpy; print(numpy.__version__)"

If the output is now 1.21.5, that copy was pre-installed as an Ubuntu system dependency and cannot be fully removed. Force an upgrade to NumPy 1.24.4:

sudo pip3 install numpy==1.24.4 --force-reinstall -i https://pypi.tuna.tsinghua.edu.cn/simple

Recheck the version to confirm success:

python3 -c "import numpy; print(numpy.__version__)"

Launch GNU Radio Companion:

gnuradio-companion

Build the following signal flow: UHD: USRP Source, then Rational Resampler with 4x decimation, then a 100 kHz low-pass filter, then WBFM Receive, then a second Rational Resampler that converts the 50 kHz audio to the standard 48 kHz, then Audio Sink.

Add a QT GUI Frequency Sink to display the spectrum before and after filtering. The filter cutoff frequency and transition width can be adjusted with a 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 is confirmed to be installed correctly, close VMware Workstation completely, then run Command Prompt as administrator on the Windows host and restart the VMware USB Arbitration Service to restore USB device passthrough:

net start VMUSBArbService

sc query VMUSBArbService

Multi-scenario Extended Applications

The USRP B210 supports a broad range of research and teaching work:

• Digital modulation research: BPSK, QPSK, 16QAM, 64QAM, GMSK and OFDM

• ISM band equipment protocol reverse engineering

• GSM and LTE cellular signal analysis based on srsRAN and OpenBTS

• GPS signal simulation for receiver testing

• FMCW and passive radar prototype development

• Amateur radio digital modes: FT8, WSPR and satellite communication

• Long-term spectrum monitoring with continuous IQ data recording

• Rapid prototyping of custom wireless communication protocols

Because the FPGA is a Kintex-7 part with a Vivado 2024.1 source project, the board can also be used as a general FPGA development target, with custom logic inserted into the sample path ahead of the USB interface.

Troubleshooting and Parameter Quick Reference

This chapter compiles all faults mentioned in the preceding chapters into a fault lookup table, and sorts out the receiving parameters for each tool for direct reuse by readers.

Windows Troubleshooting

Symptom

Cause and Fix

The system reports that libusb-1.0.dll cannot be found

The dependency is missing from the UHD bin folder. Copy libusb-1.0.dll into the bin directory of UHD.

RuntimeError: fx3 is in state 5

The FPGA image does not match this board. Copy the custom usrp_b210_fpga.bin into C:\Program Files\UHD\share\uhd\images.

The device appears in Device Manager as an unknown device

Right-click the device, select Update driver and point it at the driver folder inside the UHD installation directory. If that fails, extract erllc_uhd_winusb_driver.zip and install the WinUSB driver from the extracted folder.

uhd_find_devices finds nothing

Check that the board is on a blue USB 3.0 port, and that the environment variables were created before the Command Prompt was opened.

Environment variables appear to have no effect

They are read at process start. Close every Command Prompt window and open a new one.

SDRSharp does not see the board although UHD does

SDRSharp carries its own copy of the FPGA image. Copy the custom usrp_b210_fpga.bin into the SDRSharp program folder as well.

Ubuntu Troubleshooting

Symptom

Cause and Fix

RuntimeError: fx3 is in state 5

FPGA image not replaced. Copy the custom image from USRP_B210资料/需替换BIN文件 into UHD_IMAGES_DIR.

[Errno] Permission denied while downloading images

The image directory is owned by root. Run sudo chown -R $USER:$USER ~/B210 and retry.

The device is only visible with sudo

udev rules not written or not reloaded. Write /etc/udev/rules.d/10-usrp.rules, then run sudo udevadm control --reload-rules and sudo udevadm trigger.

UHD cannot find the images in a new terminal

UHD_IMAGES_DIR is not persistent. Append it to ~/.bashrc and run source ~/.bashrc.

USRP not detected inside the virtual machine

Close VMware completely, then run net start VMUSBArbService as administrator on the host to restore USB passthrough.

Numba reports that the NumPy version is too old

Uninstall the existing NumPy and install numpy==1.24.4. Avoid the 2.x series, which conflicts with GNU Radio.

No audio from a working flowgraph

Add your user to the audio group with sudo usermod -aG audio $USER, then verify with play -n synth 2 sin 440.

Per-tool Parameter Reference

Tool

Centre Freq

Sample Rate

Gain

Notes

SDRangel (Windows)

97.4 MHz

2.5 Msps

Panel slider

Broadcast FM Demodulator channel

URH (Windows)

103.9 MHz

2.1 MSPS

25 dB

Bandwidth 2.1 MHz

URH (Ubuntu)

103.9 MHz

2 MSPS

25 dB

Bandwidth 2 MHz

GNU Radio FM (Windows)

103.9 MHz

1.0 MHz

60 dB

Audio decimation 20, resampler 24/25

GNU Radio FM (Ubuntu)

103.9 MHz

500 kHz

55

Audio decimation 10, antenna RX2

GNU Radio analyser

93 MHz

2 MHz

40

Antenna RX2, QT GUI Frequency Sink

Gqrx

103.9 MHz

Auto

LNA slider

WFM (mono / stereo)

SDRSharp

97.4 MHz

Auto

Auto

WFM, bandwidth 180000

uhd_fft (FM)

93 MHz

2 M

30

Spectrum observation

uhd_fft (WiFi)

2.45 GHz

20 M

40

2.4 GHz band observation

uhd_siggen

100 MHz

-

amplitude 0.3

--const unmodulated carrier

UHD Command Quick Reference

Command

Purpose

uhd_find_devices

Quick scan for connected USRP devices, prints serial and product

uhd_usrp_probe

Full hardware probe: FPGA version, firmware version, RF channels, gain and clock tree

uhd_fft -f <freq>

Real-time FFT spectrum window, 70 MHz to 6 GHz

uhd_siggen --freq <freq> --const --amplitude <a>

Unmodulated single-tone carrier transmission

uhd_images_downloader.py

Download the official firmware and FPGA images into UHD_IMAGES_DIR

Reference

https://opensourcesdrlab.com/products/b210-kintex-7

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

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

https://www.beautifulzzzz.com/gnuradio/tutorial/topic/2

If you have any questions, please feel free to contact us at any time.

Follow our YouTube channel for more video tutorials, including full content of the procedures in this manual.

https://www.youtube.com/@OpenSourceSDRLab