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.
Install command
npx @skill-hub/cli install tobiaswooldridge-wavecap-sdr-signal-monitor
Repository
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 repositoryBest 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
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