Skip to content
device-prober logo

Device Prober for WaveCap-SDR

device-prober

Probe and test SDR hardware capabilities (RTL-SDR, SDRplay, HackRF, etc.). Use when verifying device detection, discovering supported sample rates and gains, testing antenna ports, or troubleshooting SDR hardware issues.

SKILL.md

Full skill instructions

Device Prober for WaveCap-SDR

This skill helps probe SDR hardware to discover capabilities, test configurations, and troubleshoot device issues.

When to Use This Skill

Use this skill when:

  • New SDR device not detected or working
  • Need to discover supported sample rates and frequencies
  • Testing different antenna ports or gain settings
  • Verifying device-specific features (bias-T, direct sampling, etc.)
  • Troubleshooting "device not found" errors
  • Comparing multiple SDR devices
  • Finding optimal settings for a specific device
  • Documenting device capabilities

How It Works

The skill uses SoapySDR APIs to:

  1. Enumerate devices - Find all connected SDR hardware
  2. Query capabilities - Sample rates, gain ranges, antennas, frequencies
  3. Test configurations - Verify settings work before using in WaveCap-SDR
  4. Generate reports - Document device specs for reference

Usage Instructions

Step 1: List All SDR Devices

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

Step 2: Probe Specific Device

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)

Step 3: Interpret Results

The probe script outputs:

Device Information:

  • Driver name (rtlsdr, sdrplay, hackrf, etc.)
  • Hardware ID, serial number
  • Manufacturer, product name

Frequency Ranges:

  • Supported tuning ranges (e.g., 24 MHz - 1.7 GHz for RTL-SDR)
  • Channel count (usually 1 for SDR receivers)

Sample Rates:

  • Supported sample rates (e.g., 225 kHz - 3.2 MHz for RTL-SDR)
  • Recommended rates for best performance

Gain Settings:

  • Available gain elements (LNA, VGA, IF, etc.)
  • Gain ranges in dB
  • Automatic gain control (AGC) support

Antenna Ports:

  • Available antenna connectors
  • Default antenna selection

Advanced Features:

  • Bias-T support (power LNA through antenna port)
  • Direct sampling mode (HF reception on RTL-SDR)
  • Clock references
  • Sensor information (temperature, etc.)

Step 4: Test Device Configuration

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 can be opened
  • Sample rate configuration works
  • IQ samples are being received
  • No errors or timeouts

Common Device Configurations

RTL-SDR (RTL2832U)

Device String:

driver=rtlsdr

Typical Capabilities:

  • Frequency: 24 MHz - 1.766 GHz (with gap 1.1-1.25 GHz)
  • Sample rate: 225 kHz - 3.2 MHz (optimal: 2-2.4 MHz)
  • Gain: 0-50 dB (typically use 20-40 dB)
  • Antennas: RX (single input)
  • Features: Bias-T (some models), direct sampling (HF mode)

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

SDRplay RSP1A/​RSPdx

Device String:

driver=sdrplay,serial=YOUR_SERIAL

Typical Capabilities:

  • Frequency: 1 kHz - 2 GHz
  • Sample rate: 62.5 kHz - 10 MHz
  • Gain: LNA 0-27 dB, IF -59 to 0 dB
  • Antennas: A, B, Hi-Z (RSPdx)
  • Features: Bias-T, notch filters

Recommended Settings:

device_args: "driver=sdrplay,serial=240309F070"
sample_rate: 2000000  # 2 MHz
gain_db: 40
antenna: "Antenna A"

HackRF One

Device String:

driver=hackrf

Typical Capabilities:

  • Frequency: 1 MHz - 6 GHz
  • Sample rate: 2-20 MHz
  • Gain: LNA 0-40 dB, VGA 0-62 dB
  • TX capable (not used in WaveCap-SDR)

Recommended Settings:

device_args: "driver=hackrf"
sample_rate: 8000000  # 8 MHz
gain_db: 32  # Combined LNA+VGA

Airspy R2/​Mini

Device String:

driver=airspy

Typical Capabilities:

  • Frequency: 24 MHz - 1.8 GHz
  • Sample rate: 2.5 or 10 MHz
  • Gain: Multiple stages, 0-21 dB total
  • High dynamic range

Troubleshooting Device Issues

Issue: Device Not Detected

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:

  • Install SoapySDR driver for your device
  • Check USB cable (try different port/​cable)
  • Verify device permissions (udev rules on Linux)
  • Update firmware (SDRplay, Airspy, etc.)

Issue: "Failed to open device"

Diagnosis:

# Check if another process is using the device
lsof | grep SDR
ps aux | grep -E "gqrx|sdr|cubic"

Solutions:

  • Close other SDR software (GQRX, SDR#, CubicSDR)
  • Kill zombie processes: pkill -f sdr
  • Unplug and replug device
  • Reboot system

Issue: Poor Signal Quality

Diagnosis:

# 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:

  • Check antenna connection (tight SMA connector)
  • Try different antenna (appropriate for frequency)
  • Adjust gain (too high = overload, too low = weak signal)
  • Move away from interference sources (computers, USB3)
  • Use shielded USB cable

Issue: Sample Rate Not Supported

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:

  • Use supported sample rate from device capabilities
  • RTL-SDR: Use 2.048 MHz or 2.4 MHz (avoid 2.8-3.2 MHz unless needed)
  • SDRplay: Use 2 MHz for compatibility
  • HackRF: Use 8 MHz or 10 MHz

Advanced: Device-Specific Settings

RTL-SDR Bias-T

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.

SDRplay Antenna Selection

Select antenna port (RSPdx):

device_args: "driver=sdrplay,serial=240309F070"
antenna: "Antenna B"  # or "Antenna A", "Hi-Z"

SDRplay Notch Filters

Enable FM/​DAB notch filters:

device_args: "driver=sdrplay,rfnotch_ctrl=1,dabnotch_ctrl=1"

HackRF Amplifier

Enable RX amplifier:

device_args: "driver=hackrf,amp=1"

Integration with WaveCap-SDR

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

Files in This Skill

  • SKILL.md: This file - instructions for using the skill
  • probe_device.py: Device capability probe script

Notes

  • Always check device permissions on Linux (udev rules)
  • Some features require specific firmware versions
  • Direct sampling (RTL-SDR HF mode) has reduced performance
  • Gain is device-specific (RTL-SDR uses single gain, SDRplay uses LNA+IF)
  • Sample rates outside native range may have degraded performance
  • Use SoapySDRUtil --probe=driver=xxx for maximum detail

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View