USRP B210 Driver Setup Guide
Complete driver installation and verification guide for Ettus Research USRP B210 on TelcoChisel, including UHD firmware, USB buffer tuning, and PREEMPT_RT kernel optimizations.
USRP B210 Driver Setup on TelcoChisel
The Ettus Research USRP B210 is the most versatile SDR platform for telecom security testing, supporting 2×2 MIMO with 56 MHz bandwidth from 70 MHz to 6 GHz. This guide covers complete driver installation, firmware flashing, USB buffer optimization, and PREEMPT_RT kernel configuration for zero-underrun operation on TelcoChisel.
Prerequisites
- TelcoChisel OS (4.0.0 or later recommended)
- Ettus USRP B210 with USB 3.0 cable
- USB 3.0 port (blue connector) — USB 2.0 will limit bandwidth
Step 1: Verify USB Connection
# Check USB detection
lsusb | grep -i ettus
# Expected: Bus 002 Device 003: ID 2500:0020 Ettus Research LLC USRP B200
# Verify USB 3.0 speed (important for high-bandwidth captures)
lsusb -t | grep -A2 "2500:0020"
# Look for "5000M" (USB 3.0) not "480M" (USB 2.0)
Step 2: Install/Verify UHD Drivers
TelcoChisel pre-installs UHD, but verify the version:
# Check UHD library version
uhd_config_info --version
# Expected: UHD 4.6.0 or later
# Verify UHD firmware images are present
uhd_images_downloader --list-targets | head -20
If UHD needs updating:
# Update UHD from TelcoChisel repositories
sudo apt update && sudo apt install -y uhd-host libuhd-dev uhd-firmware
Step 3: Download FPGA Firmware
# Download B210 FPGA images (required for first-time setup)
sudo uhd_images_downloader
# Verify firmware files exist
ls -la /usr/share/uhd/images/ | grep b2
# Should show: usrp_b200_fpga.bin, usrp_b210_fpga.bin
Step 4: Detect and Test the Device
# Scan for connected USRP devices
uhd_find_devices
# Expected output:
# --------------------------------------------------
# -- UHD Device 0
# --------------------------------------------------
# Device Address:
# serial: 318B42
# name:
# product: B210
# type: b200
# Run comprehensive hardware self-test
uhd_usrp_probe
Step 5: USB Buffer Optimization
Critical for preventing buffer underruns at high sample rates:
# Increase USB buffer size (temporary — active until reboot)
sudo sysctl -w net.core.rmem_max=33554432
sudo sysctl -w net.core.wmem_max=33554432
# Make permanent
echo "net.core.rmem_max=33554432" | sudo tee -a /etc/sysctl.d/99-usrp-buffers.conf
echo "net.core.wmem_max=33554432" | sudo tee -a /etc/sysctl.d/99-usrp-buffers.conf
sudo sysctl -p /etc/sysctl.d/99-usrp-buffers.conf
Step 6: USB Permissions (udev Rules)
# Verify TelcoChisel UHD udev rules are installed
cat /etc/udev/rules.d/uhd-usrp.rules
# Should contain: ATTR{idVendor}=="2500", MODE="0666"
# If missing, create the rule
echo 'ATTR{idVendor}=="2500", ATTR{idProduct}=="0020", MODE="0666"' | \
sudo tee /etc/udev/rules.d/99-uhd-usrp.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
Step 7: PREEMPT_RT Kernel Verification
TelcoChisel ships with a PREEMPT_RT kernel for zero-underrun SDR operation:
# Verify RT kernel is active
uname -r
# Expected: 6.8.0-rt-telco
# Check preemption model
cat /sys/kernel/realtime
# Expected: 1
# Set real-time scheduling priority for UHD threads
sudo chrt -f 99 uhd_rx_samples_to_file --args "type=b200" --rate 30.72e6 --freq 2140e6 --duration 5 --file /tmp/test.cf32
Step 8: Validation Test
Run a full bandwidth test at 5G-ready sample rates:
# Test 30.72 MS/s (20 MHz LTE/5G bandwidth) for 10 seconds
uhd_rx_samples_to_file --args "type=b200" --rate 30.72e6 --freq 2140e6 --duration 10 --file /tmp/bandwidth-test.cf32
# Check for underruns in output — should see 0
# "U" characters in output indicate buffer underruns
# Test MIMO 2x2 configuration
uhd_rx_samples_to_file --args "type=b200" --channels "0,1" --rate 15.36e6 --freq 2140e6 --duration 5 --file /tmp/mimo-test.cf32
Troubleshooting
| Issue | Solution |
|---|---|
No devices found | Check USB cable, try different USB 3.0 port, verify udev rules |
USB 2.0 detected | Use a blue USB 3.0 port, avoid USB hubs |
Buffer underruns (U) | Increase USB buffers (Step 5), verify RT kernel, reduce sample rate |
Permission denied | Run as root or fix udev rules (Step 6) |
FPGA compatibility error | Re-run uhd_images_downloader, power-cycle the B210 |