Back to skills
SkillHub ClubShip Full StackFull Stack

signal-monitor

Get real-time signal quality metrics (RSSI, SNR, S-meter) from WaveCap-SDR channels. Use when checking signal strength, monitoring reception quality, or debugging weak signals.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
1
Hot score
77
Updated
March 20, 2026
Overall rating
C2.7
Composite score
2.7
Best-practice grade
S96.0

Install command

npx @skill-hub/cli install tobiaswooldridge-wavecap-sdr-signal-monitor

Repository

TobiasWooldridge/WaveCap-SDR

Skill path: .claude/skills/signal-monitor

Get real-time signal quality metrics (RSSI, SNR, S-meter) from WaveCap-SDR channels. Use when checking signal strength, monitoring reception quality, or debugging weak signals.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: TobiasWooldridge.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install signal-monitor into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/TobiasWooldridge/WaveCap-SDR before adding signal-monitor to shared team environments
  • Use signal-monitor for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: signal-monitor
description: Get real-time signal quality metrics (RSSI, SNR, S-meter) from WaveCap-SDR channels. Use when checking signal strength, monitoring reception quality, or debugging weak signals.
---

# Signal Monitor for WaveCap-SDR

This skill provides real-time signal quality metrics from SDR channels, including RSSI, SNR, signal power, and S-meter readings.

## When to Use This Skill

Use this skill when:
- Checking signal strength of a tuned station
- Monitoring reception quality over time
- Debugging weak or noisy signals
- Comparing signal quality between antennas
- Verifying that a channel is receiving properly
- Getting S-meter readings (ham radio style)

## Available Metrics

| Metric | Description | Range |
|--------|-------------|-------|
| RSSI (dB) | Received Signal Strength Indicator | -100 to 0 dB |
| SNR (dB) | Signal-to-Noise Ratio | 0 to 60+ dB |
| Signal Power (dB) | Audio output power level | -80 to 0 dB |
| S-Units | Ham radio S-meter reading | S0 to S9+60 |
| Squelch State | Whether squelch is open/closed | true/false |

## Usage Instructions

### Step 1: Get Channel Metrics

Use the helper script to get signal metrics:

```bash
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/signal-monitor/get_signal_stats.py \
  --channel ch1 \
  --port 8087
```

Or use curl directly:

```bash
# Get extended metrics for a channel
curl http://127.0.0.1:8087/api/v1/channels/ch1/metrics/extended | jq

# Example output:
{
  "channelId": "ch1",
  "rssiDb": -45.2,
  "snrDb": 28.5,
  "signalPowerDb": -22.1,
  "sUnits": "S8",
  "squelchOpen": true,
  "streamSubscribers": 1,
  "streamDropsPerSec": 0.0,
  "captureState": "running",
  "timestamp": 1700000000.0
}
```

### Step 2: Monitor Signal Over Time

Monitor signal quality continuously:

```bash
PYTHONPATH=backend backend/.venv/bin/python .claude/skills/signal-monitor/get_signal_stats.py \
  --channel ch1 \
  --monitor \
  --interval 1.0 \
  --duration 60
```

### Step 3: Get Spectrum Snapshot

Get a single FFT spectrum snapshot (without WebSocket):

```bash
curl http://127.0.0.1:8087/api/v1/captures/c1/spectrum/snapshot | jq '.centerHz, .sampleRate'
```

## Interpreting S-Meter Readings

| S-Units | Signal Quality | Typical Use |
|---------|---------------|-------------|
| S0-S2 | Very weak | Marginal reception |
| S3-S5 | Weak | Usable with noise |
| S6-S7 | Moderate | Good reception |
| S8-S9 | Strong | Excellent reception |
| S9+10 | Very strong | Local/powerful station |
| S9+20+ | Extremely strong | Possible overload |

## API Reference

### GET /channels/{chan_id}/metrics/extended

Returns extended signal metrics including S-meter reading.

**Response:**
```json
{
  "channelId": "ch1",
  "rssiDb": -45.2,
  "snrDb": 28.5,
  "signalPowerDb": -22.1,
  "sUnits": "S8",
  "squelchOpen": true,
  "streamSubscribers": 1,
  "streamDropsPerSec": 0.0,
  "captureState": "running",
  "timestamp": 1700000000.0
}
```

### GET /captures/{cid}/spectrum/snapshot

Returns single FFT spectrum snapshot.

**Response:**
```json
{
  "power": [-80.1, -78.5, ...],
  "freqs": [90000000, 90000122, ...],
  "centerHz": 90300000,
  "sampleRate": 250000,
  "timestamp": 1700000000.0
}
```

### GET /channels/{chan_id}/metrics/history?seconds=60

Returns time-series of metrics (currently single point).

## Common Issues

### Issue: No Signal / Low RSSI
**Symptoms**: RSSI below -90 dB, S0-S1 readings
**Solutions**:
- Check antenna connection
- Verify frequency is correct
- Increase gain in capture settings
- Check for interference

### Issue: Low SNR Despite Good RSSI
**Symptoms**: RSSI is good but SNR is poor (<10 dB)
**Solutions**:
- Reduce gain (may be overloading)
- Check for nearby interference
- Try different antenna
- Enable noise blanker

### Issue: Squelch Always Closed
**Symptoms**: squelchOpen is always false
**Solutions**:
- Lower squelch threshold (more negative dB)
- Check if signal is actually present
- Verify channel offset is correct

## Files in This Skill

- `SKILL.md`: This file - instructions for using the skill
- `get_signal_stats.py`: Helper script for fetching and displaying signal metrics