Debug no signal
Use when a receiver runs but produces no output, noise, or the wrong result — systematically locate the fault instead of guessing, using render and measure to see the problem.From its SKILL.md
npx -y skills add yoelbassin/gr-mcp --skill debug-no-signalAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.1 KB, as published. Nobody here has run it
Debug No Signal
A receiver that runs status: ok but produces silence or garbage has a DSP fault, not a crash. Find it systematically; do not randomly tweak parameters.
Method (systematic-debugging applied to RF)
- Reproduce and name the symptom. Re-run and state precisely what's wrong: silent audio, broadband noise, a tone at the wrong pitch, low level.
- See, don't guess. Render a
spectrogram(and/orpsd_plot) of the channelized capture — the stage right afterfreq_xlating_lowpass— andmeasureit. Most faults are visible there. - Check hypotheses cheapest-first, changing ONE thing per iteration:
- Wrong offset or sign. After channelizing, the target should sit at 0 Hz. If it's offset by ±X, your
center_offsetvalue or its sign is wrong (center_offset = target_freq − capture_center_freq). - Over/under-decimation. The post-decimation rate must be ≥ ~2× the signal bandwidth, and for FM must equal the demodulator's
quad_rate. Checksample_rate / decimation. - Filter too narrow/wide.
cutoffbelow the signal bandwidth clips it (muffled/silent); far too wide lets in neighbors (noisy). - Levels / wrong channel.
measurethe channelized capture: very low SNR means you channelized empty spectrum — re-check the target frequency from survey-spectrum. - Demod/rate mismatch. For
nbfm_rx,quad_ratemust be an integer multiple ofaudio_rate; awav_sinksample_ratemust match the audio stream rate.
- Wrong offset or sign. After channelizing, the target should sit at 0 Hz. If it's offset by ±X, your
- Re-verify after each change the same way build-receiver verifies. Stop when the output is correct.
- If no vocabulary block fixes it (e.g. the signal isn't FM at all), report the gap → escape-hatch.
Judgment
- One change at a time. If you change three params and it works, you've learned nothing and it'll break next time.
- Trust the spectrogram over your mental model of the math.