Skip to content
Back to skills

Collection

ASecurity

Adjust SDR radio settings (frequency, gain, squelch, bandwidth, filters, AGC) in WaveCap-SDR. Use when changing tuning parameters, optimizing reception, or configuring channels.

  • 24 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
developmentpythonbashgitapibackend

Works with

  • api

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro scans all 21 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add mattnigh/skills_collection --skill collection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Collection?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Collection
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mattnigh-collection-0319c9f0/badge)](https://www.skillsdirectory.com/skills/mattnigh-collection-0319c9f0)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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:

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

```bash
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/radio-tuner/adjust_settings.py \
  --capture c1 --show
```

### Step 2: Adjust Capture Settings

Change frequency:
```bash
curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \
  -H "Content-Type: application/json" \
  -d '{"centerHz": 90300000}'
```

Change gain:
```bash
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:
```bash
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:
```bash
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
  -H "Content-Type: application/json" \
  -d '{"squelchDb": -50}'
```

Change mode:
```bash
curl -X PATCH http://127.0.0.1:8087/api/v1/channels/ch1 \
  -H "Content-Type: application/json" \
  -d '{"mode": "nbfm"}'
```

Enable/disable AGC:
```bash
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:
```bash
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

```bash
# 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
```json
{
  "sampleRate": 1024000,
  "bandwidth": 200000,
  "mode": "wbfm",
  "enableDeemphasis": true,
  "deemphasisTauUs": 75,
  "squelchDb": -60
}
```

### VHF Marine / Aviation
```json
{
  "sampleRate": 2000000,
  "bandwidth": 25000,
  "mode": "nbfm",
  "squelchDb": -50,
  "enableAgc": true
}
```

### Amateur Radio SSB
```json
{
  "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

```bash
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

1. **RTL-SDR Sample Rates**: Use 1.024 MHz, 2.048 MHz, or 2.4 MHz
   ```bash
   curl -X PATCH http://127.0.0.1:8087/api/v1/captures/c1 \
     -H "Content-Type: application/json" \
     -d '{"sampleRate": 1024000}'
   ```

2. **Bandwidth/Sample Rate Ratio**: Keep bandwidth ≤80% of sample rate
   ```bash
   # 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}'
   ```

3. **SDRplay Sample Rates**: Stay ≤8 MHz for reliable USB throughput
   ```bash
   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 `gain` on capture
- Increase `agcTargetDb` (e.g., -15 instead of -20)
- Check antenna connection

### Issue: Audio Distorted
**Solutions**:
- Reduce `gain` on 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 skill
- `adjust_settings.py`: Helper script for adjusting radio settings

Files in this skill

  • 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md15.1 KB
  • 17hz__nextjs-template__claude__skills__example-skill__SKILL.md316 B
  • 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md3.5 KB
  • 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md5.4 KB
  • 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md7.7 KB
  • 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md26.1 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md15.7 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md17.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md9.4 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md12.5 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md16.6 KB
  • 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md11.2 KB
  • 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md14.8 KB
  • 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md16.2 KB
  • 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md11.8 KB
  • 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md17.5 KB
  • 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md19.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md6.2 KB
  • 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md18.1 KB
  • 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md24.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…