Probe and test SDR hardware capabilities (RTL-SDR, SDRplay, HackRF, etc.)...
This skill helps probe SDR hardware to discover capabilities, test configurations, and troubleshoot device issues.
Use this skill when:
The skill uses SoapySDR APIs to:
Find all connected SDR devices using SoapySDRUtil:
# Using SoapySDRUtil (if installed)
SoapySDRUtil --find
# Or use the probe script
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/device-prober/probe_device.py --list
Example output:
Found 2 devices:
[0] driver=rtlsdr, serial=00000001
RTL2838UHIDIR, manufacturer=Realtek, product=RTL2838UHIDIR
[1] driver=sdrplay, serial=240309F070
SDRplay Dev1, model=RSPdx
Get detailed capabilities for a device:
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/device-prober/probe_device.py \
--device "driver=rtlsdr"
Parameters:
--device: Device selector string (e.g., "driver=rtlsdr", "driver=sdrplay,serial=ABC123")--output: Save report to JSON file--test-capture: Test actual capture (verify device works)--test-duration: Seconds for test capture (default: 2)The probe script outputs:
Device Information:
Frequency Ranges:
Sample Rates:
Gain Settings:
Antenna Ports:
Advanced Features:
Verify a specific configuration works:
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/device-prober/probe_device.py \
--device "driver=rtlsdr" \
--test-capture \
--test-duration 5
This performs a short capture to verify:
Device String:
driver=rtlsdr
Typical Capabilities:
Recommended Settings:
device_args: "driver=rtlsdr"
sample_rate: 2048000 # 2.048 MHz
gain_db: 30
Direct Sampling for HF (<30 MHz):
device_args: "driver=rtlsdr,direct_samp=2" # Q-branch for HF
Device String:
driver=sdrplay,serial=YOUR_SERIAL
Typical Capabilities:
Recommended Settings:
device_args: "driver=sdrplay,serial=240309F070"
sample_rate: 2000000 # 2 MHz
gain_db: 40
antenna: "Antenna A"
Device String:
driver=hackrf
Typical Capabilities:
Recommended Settings:
device_args: "driver=hackrf"
sample_rate: 8000000 # 8 MHz
gain_db: 32 # Combined LNA+VGA
Device String:
driver=airspy
Typical Capabilities:
Diagnosis:
# Check if SoapySDR sees the device
SoapySDRUtil --find
# Check USB devices (Linux)
lsusb | grep -E "RTL|Realtek|Airspy|HackRF"
# Check kernel modules (Linux)
lsmod | grep -E "rtl|sdr"
Solutions:
Diagnosis:
# Check if another process is using the device
lsof | grep SDR
ps aux | grep -E "gqrx|sdr|cubic"
Solutions:
pkill -f sdrDiagnosis:
# Test with known good frequency (FM broadcast)
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/device-prober/probe_device.py \
--device "driver=rtlsdr" \
--test-capture \
--test-duration 5
Solutions:
Diagnosis:
# Query supported rates
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/device-prober/probe_device.py \
--device "driver=rtlsdr"
Look for "Sample Rates" section.
Solutions:
Enable bias-T to power LNA through antenna port:
device_args: "driver=rtlsdr,bias_tee=1"
Warning: Only use with LNA that expects bias-T. Can damage amplifiers not designed for it.
Select antenna port (RSPdx):
device_args: "driver=sdrplay,serial=240309F070"
antenna: "Antenna B" # or "Antenna A", "Hi-Z"
Enable FM/DAB notch filters:
device_args: "driver=sdrplay,rfnotch_ctrl=1,dabnotch_ctrl=1"
Enable RX amplifier:
device_args: "driver=hackrf,amp=1"
After probing device, update backend/config/wavecapsdr.yaml:
device:
driver: soapy # Use SoapySDR driver
device_args:
- "driver=rtlsdr" # Or device string from probe
presets:
my_device:
center_hz: 100000000 # From frequency range
sample_rate: 2048000 # From supported rates
gain_db: 30 # From gain range
antenna: "RX" # From available antennas
SKILL.md: This file - instructions for using the skillprobe_device.py: Device capability probe scriptSoapySDRUtil --probe=driver=xxx for maximum detail