Delegate independent tasks to specialized agents working concurrently with isolated context.
Radio Tuner for WaveCap-SDR
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.
SKILL.md
Full skill instructions
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
More Other skills
brand-guidelines
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
internal-comms
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Fundamental design principles for writing maintainable, testable Python code.
responsive-design
Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.
Generate Playwright tests from scenarios using interactive browser exploration and validation.
Automated website exploration and test case generation using Playwright.
Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.
gdpr-data-handling
GDPR-compliant data handling with consent management, data subject rights, and privacy controls.
Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.
refactor-plan
Detailed multi-file refactor planning with safety checks and rollback guidance.
