radio-tuner
Adjust SDR radio settings (frequency, gain, squelch, bandwidth, filters, AGC) in WaveCap-SDR. Use when changing tuning parameters, optimizing reception, or configuring channels.
When & Why to Use This Skill
This Claude skill provides a comprehensive interface for managing WaveCap-SDR radio settings, enabling precise control over frequency, gain, squelch, and demodulation modes. It streamlines the process of optimizing signal reception and configuring hardware parameters through automated API interactions and helper scripts, making it an essential tool for SDR enthusiasts and developers.
Use Cases
- Tuning and Channel Configuration: Effortlessly switch between different radio services like FM broadcast, aviation, or amateur bands by adjusting center frequencies and bandwidth settings.
- Signal Quality Optimization: Enhance audio clarity and reduce background noise by fine-tuning RF gain, setting squelch thresholds, and configuring Automatic Gain Control (AGC) parameters.
- Interference Management: Eliminate unwanted signals and noise by applying notch filters and enabling FM de-emphasis for high-quality audio output in specific environments.
- Hardware Troubleshooting and Monitoring: Monitor SDR stability and resolve common issues like IQ overflows or aliasing by following built-in configuration warnings and best practices.
| name | radio-tuner |
|---|---|
| description | Adjust SDR radio settings (frequency, gain, squelch, bandwidth, filters, AGC) in WaveCap-SDR. Use when changing tuning parameters, optimizing reception, or configuring channels. |
Radio Tuner for WaveCap-SDR
This skill provides tools to adjust SDR radio settings including frequency, gain, squelch, bandwidth, filters, and AGC parameters.
When to Use This Skill
Use this skill when:
- Changing the tuned frequency
- Adjusting gain for optimal signal level
- Setting squelch threshold to eliminate noise
- Configuring channel bandwidth
- Enabling/disabling filters (deemphasis, notch, etc.)
- Adjusting AGC parameters
- Changing demodulation mode
Available Settings
Capture Settings (SDR-level)
| Setting | Description | Range |
|---|---|---|
centerHz |
Center frequency | 1 MHz - 6 GHz |
sampleRate |
Sample rate | Device-dependent |
gain |
RF gain | -100 to 100 dB |
bandwidth |
IF bandwidth | 0 to sample_rate |
ppm |
Frequency correction | -1000 to 1000 |
antenna |
Antenna port | Device-dependent |
Channel Settings (Demodulator-level)
| Setting | Description | Range |
|---|---|---|
mode |
Demodulation mode | wbfm, nbfm, am, ssb, raw, p25, dmr |
offsetHz |
Offset from capture center | -50 MHz to +50 MHz |
squelchDb |
Squelch threshold | -120 to 0 dB |
audioRate |
Output audio rate | 8000 to 192000 Hz |
Filter Settings
| Setting | Description | Default |
|---|---|---|
enableDeemphasis |
FM de-emphasis filter | true (WBFM) |
deemphasisTauUs |
De-emphasis time constant | 75 µs (US), 50 µs (EU) |
enableAgc |
Automatic gain control | true |
agcTargetDb |
AGC target level | -20 dB |
agcAttackMs |
AGC attack time | 10 ms |
agcReleaseMs |
AGC release time | 500 ms |
notchFrequencies |
Notch filter frequencies | [] |
Usage Instructions
Step 1: List Current Settings
Get current capture and channel settings:
# Get capture settings
curl http://127.0.0.1:8087/api/v1/captures/c1 | jq
# Get channel settings
curl http://127.0.0.1:8087/api/v1/channels/ch1 | jq
Or use the helper script:
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/radio-tuner/adjust_settings.py \
--capture c1 --show
Step 2: Adjust Capture Settings
Change frequency:
curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \
-H "Content-Type: application/json" \
-d '{"centerHz": 90300000}'
Change gain:
curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \
-H "Content-Type: application/json" \
-d '{"gain": 35.0}'
Or use the helper script:
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/radio-tuner/adjust_settings.py \
--capture c1 \
--frequency 90.3 \
--gain 35
Step 3: Adjust Channel Settings
Change squelch:
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
-H "Content-Type: application/json" \
-d '{"squelchDb": -50}'
Change mode:
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
-H "Content-Type: application/json" \
-d '{"mode": "nbfm"}'
Enable/disable AGC:
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
-H "Content-Type: application/json" \
-d '{"enableAgc": true, "agcTargetDb": -20, "agcAttackMs": 10, "agcReleaseMs": 500}'
Step 4: Add Notch Filters
Remove interference at specific frequencies:
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
-H "Content-Type: application/json" \
-d '{"notchFrequencies": [1000, 2000, 3000]}'
Helper Script Reference
# Show current settings
python adjust_settings.py --capture c1 --show
# Change frequency (MHz)
python adjust_settings.py --capture c1 --frequency 90.3
# Change gain (dB)
python adjust_settings.py --capture c1 --gain 35
# Change bandwidth (Hz)
python adjust_settings.py --capture c1 --bandwidth 200000
# Change squelch (dB)
python adjust_settings.py --channel ch1 --squelch -50
# Change mode
python adjust_settings.py --channel ch1 --mode nbfm
# Multiple settings at once
python adjust_settings.py --capture c1 --frequency 90.3 --gain 35 --bandwidth 200000
Demodulation Modes
| Mode | Description | Typical Use |
|---|---|---|
wbfm |
Wide-band FM (200 kHz) | FM broadcast radio |
nbfm |
Narrow-band FM (12.5-25 kHz) | Two-way radio, amateur |
am |
Amplitude modulation | Aviation, AM broadcast |
ssb |
Single sideband | Amateur radio, marine |
raw |
No demodulation | Digital modes, ISM |
p25 |
Project 25 digital | Public safety |
dmr |
Digital Mobile Radio | Commercial two-way |
Optimal Settings by Application
FM Broadcast Radio
{
"sampleRate": 1024000,
"bandwidth": 200000,
"mode": "wbfm",
"enableDeemphasis": true,
"deemphasisTauUs": 75,
"squelchDb": -60
}
VHF Marine / Aviation
{
"sampleRate": 2000000,
"bandwidth": 25000,
"mode": "nbfm",
"squelchDb": -50,
"enableAgc": true
}
Amateur Radio SSB
{
"mode": "ssb",
"ssbMode": "usb",
"enableSsbBandpass": true,
"ssbBandpassLowHz": 300,
"ssbBandpassHighHz": 3000,
"squelchDb": -60
}
Configuration Warnings
WaveCap-SDR automatically detects problematic configurations and displays warnings in the UI. Check configWarnings in capture API responses to see current warnings.
Check Current Warnings
curl -s http://127.0.0.1:8087/api/v1/captures/c1 | jq '.configWarnings'
Warning Types
| Code | Severity | Description | Resolution |
|---|---|---|---|
rtl_unstable_sample_rate |
warning | RTL-SDR sample rate <900kHz causes IQ overflows | Use 1.024 MHz, 2.048 MHz, or 2.4 MHz |
bandwidth_exceeds_sample_rate |
warning | Bandwidth > sample rate violates Nyquist | Reduce bandwidth or increase sample rate |
bandwidth_near_sample_rate |
info | Bandwidth >90% of sample rate causes edge aliasing | Use bandwidth ≤80% of sample rate |
sdrplay_high_sample_rate |
info | SDRplay >8 MHz may cause USB issues | Lower sample rate if experiencing dropouts |
zero_gain |
info | Gain set to 0 dB | Increase gain if signals are weak |
Best Practices to Avoid Warnings
RTL-SDR Sample Rates: Use 1.024 MHz, 2.048 MHz, or 2.4 MHz
curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \ -H "Content-Type: application/json" \ -d '{"sampleRate": 1024000}'Bandwidth/Sample Rate Ratio: Keep bandwidth ≤80% of sample rate
# For 2 MHz sample rate, use ≤1.6 MHz bandwidth curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \ -H "Content-Type: application/json" \ -d '{"sampleRate": 2000000, "bandwidth": 1600000}'SDRplay Sample Rates: Stay ≤8 MHz for reliable USB throughput
curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \ -H "Content-Type: application/json" \ -d '{"sampleRate": 6000000}'
Common Issues
Issue: Audio Too Quiet
Solutions:
- Increase
gainon capture - Increase
agcTargetDb(e.g., -15 instead of -20) - Check antenna connection
Issue: Audio Distorted
Solutions:
- Reduce
gainon capture - Lower
agcTargetDb(e.g., -25 instead of -20) - Enable de-emphasis for FM
Issue: Too Much Background Noise
Solutions:
- Increase
squelchDb(less negative, e.g., -40 instead of -60) - Add notch filters for specific interference
- Enable noise blanker
Issue: Signal Cutting In/Out
Solutions:
- Lower
squelchDb(more negative) - Adjust AGC attack/release times
- Check if frequency offset is correct
Issue: IQ Overflows (RTL-SDR)
Solutions:
- Use stable sample rate (1.024 MHz, 2.048 MHz, or 2.4 MHz)
- Avoid sample rates below 900 kHz
- Check USB connection quality
Issue: Aliasing at Spectrum Edges
Solutions:
- Reduce bandwidth to ≤80% of sample rate
- Increase sample rate if wider bandwidth needed
- Use appropriate IF filter settings
Files in This Skill
SKILL.md: This file - instructions for using the skilladjust_settings.py: Helper script for adjusting radio settings