You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following up on the multi-site wideband overload work in #749/#760 — confirmed our remaining "weak site" symptom is not RF, antenna, gain, or USB, and is not fixed by raising sdr.sample_rate. It looks like a sample-rate-dependent bug in the wideband DDC/channelizer path.
gain: 600 (60 dB), sample_rate: 2500000 (the config file's own comment claims "GLOBAL 10 MS/s" but the value is 2.5 MS/s — possibly a stale comment from before a default changed).
Symptom at sample_rate: 2500000 (current default)
Only Mt Anakie (closest to center, -812.5 kHz) decodes. The other three sit at -82 to -86 dBFS on gophertrunk_sdr_iq_power_dbfs, with the "channel iq power very low" WARN, and never get an FSW hit.
Ruled out RF/hardware first:
airspy_rx tuned directly at 420.0125 MHz (Melbourne) shows a strong, unambiguous signal: -5.3 dBFS RMS. So the RF is there.
Physically reset the Airspy (unplug/replug), confirmed clean re-enumeration via airspy_info, no USB errors — no change to the symptom.
gophertrunk capture + gophertrunk spectrum on a 5 s wideband snapshot at the daemon's own settings (2.5 MS/s, center 420.9 MHz, gain 600) found only one carrier anywhere near our taps: Mt Anakie at -813.0 kHz, -78.0 dBFS, SNR 25.2 dB. Nothing detected at the other three offsets. This matches the live decode failures — it's not a decode-vs-RF mismatch, the energy genuinely doesn't show up at this sample rate.
What we tried: raising sample_rate to 10000000
Hypothesis: at 2.5 MS/s the channelizer's anti-alias/decimation filter has a flat passband much narrower than the full ±1.25 MHz Nyquist, rolling off hard before ±900 kHz — which would explain why only the closest-to-center site survives.
Re-ran the same capture+spectrum check at 10 MS/s: now 19 carriers detected across the band, including real carriers at all four of our offsets (Melbourne -888.7 kHz/-92.7 dBFS SNR 12.8 dB, Mt Blackwood +937.5 kHz/-83.1 dBFS SNR 22.4 dB, Mt Anakie -813.0 kHz/-69.3 dBFS SNR 36.2 dB). So the RF and bandwidth theory checks out — at 10 MS/s, all four sites' signals are genuinely present in the capture.
But running the live daemon at sample_rate: 10000000 (same 4 channels, same gain) broke decode for all four sites, including Mt Anakie, which decodes cleanly at 2.5 MS/s. All four taps reported "very low" iq power and zero tsbk decoded lines. Reverting to 2.5 MS/s immediately restored Mt Anakie's clean decode (526 tsbk decoded in the next ~2.5 min window).
Conclusion
This isn't an RF, antenna, gain, or front-end-overload problem — it's reproducible and isolated to the wideband DDC/channelizer's handling of sdr.sample_rate. At 2.5 MS/s the passband is too narrow for taps beyond ~±850 kHz from center (config's own "10 MS/s" comment suggests this rate may already be a regression from an intended default). At 10 MS/s, the RF is present per spectrum, but something in the live DDC/decimation path is apparently hardcoded to 2.5 MS/s assumptions and breaks across the board when the rate changes.
Repro steps
Config: Airspy wideband, center_freq_hz: 420900000, gain: 600, 4 taps at the frequencies above.
At sample_rate: 2500000: only the closest-to-center tap decodes; others sit at low iq_power with no FSW hits.
gophertrunk capture -freq 420900000 -sample-rate 2500000 -gain 600 -seconds 5 -format f32 -out wide.cfile then gophertrunk spectrum -in wide.cfile -format f32 -sample-rate 2500000 -freq 420900000 — confirms only the closest tap shows as a carrier.
Repeat capture/spectrum at -sample-rate 10000000 — all four taps now show as carriers.
Set sample_rate: 10000000 in the daemon config and restart — all four taps fail to decode, including the previously-working one.
Revert to sample_rate: 2500000 — previously-working tap (Mt Anakie) immediately recovers.
Happy to provide the raw wideband .cfile captures from steps 3/4 if useful for the matched-IQ ground truth.
Summary
Following up on the multi-site wideband overload work in #749/#760 — confirmed our remaining "weak site" symptom is not RF, antenna, gain, or USB, and is not fixed by raising
sdr.sample_rate. It looks like a sample-rate-dependent bug in the wideband DDC/channelizer path.Setup
Airspy R2,
role: wideband,center_freq_hz: 420900000, 4 MMR control-channel taps:gain: 600(60 dB),sample_rate: 2500000(the config file's own comment claims "GLOBAL 10 MS/s" but the value is 2.5 MS/s — possibly a stale comment from before a default changed).Symptom at sample_rate: 2500000 (current default)
Only Mt Anakie (closest to center, -812.5 kHz) decodes. The other three sit at -82 to -86 dBFS on
gophertrunk_sdr_iq_power_dbfs, with the "channel iq power very low" WARN, and never get an FSW hit.Ruled out RF/hardware first:
airspy_rxtuned directly at 420.0125 MHz (Melbourne) shows a strong, unambiguous signal: -5.3 dBFS RMS. So the RF is there.gophertrunk_sdr_wideband_input_clip_ratiois 0 — no front-end overload (ruled out the Multiple control channels on one wideband device are hunted sequentially, not decoded in parallel #749 overload scenario).airspy_info, no USB errors — no change to the symptom.gophertrunk capture+gophertrunk spectrumon a 5 s wideband snapshot at the daemon's own settings (2.5 MS/s, center 420.9 MHz, gain 600) found only one carrier anywhere near our taps: Mt Anakie at -813.0 kHz, -78.0 dBFS, SNR 25.2 dB. Nothing detected at the other three offsets. This matches the live decode failures — it's not a decode-vs-RF mismatch, the energy genuinely doesn't show up at this sample rate.What we tried: raising sample_rate to 10000000
Hypothesis: at 2.5 MS/s the channelizer's anti-alias/decimation filter has a flat passband much narrower than the full ±1.25 MHz Nyquist, rolling off hard before ±900 kHz — which would explain why only the closest-to-center site survives.
Re-ran the same capture+spectrum check at 10 MS/s: now 19 carriers detected across the band, including real carriers at all four of our offsets (Melbourne -888.7 kHz/-92.7 dBFS SNR 12.8 dB, Mt Blackwood +937.5 kHz/-83.1 dBFS SNR 22.4 dB, Mt Anakie -813.0 kHz/-69.3 dBFS SNR 36.2 dB). So the RF and bandwidth theory checks out — at 10 MS/s, all four sites' signals are genuinely present in the capture.
But running the live daemon at
sample_rate: 10000000(same 4 channels, same gain) broke decode for all four sites, including Mt Anakie, which decodes cleanly at 2.5 MS/s. All four taps reported "very low" iq power and zerotsbk decodedlines. Reverting to 2.5 MS/s immediately restored Mt Anakie's clean decode (526tsbk decodedin the next ~2.5 min window).Conclusion
This isn't an RF, antenna, gain, or front-end-overload problem — it's reproducible and isolated to the wideband DDC/channelizer's handling of
sdr.sample_rate. At 2.5 MS/s the passband is too narrow for taps beyond ~±850 kHz from center (config's own "10 MS/s" comment suggests this rate may already be a regression from an intended default). At 10 MS/s, the RF is present perspectrum, but something in the live DDC/decimation path is apparently hardcoded to 2.5 MS/s assumptions and breaks across the board when the rate changes.Repro steps
center_freq_hz: 420900000,gain: 600, 4 taps at the frequencies above.sample_rate: 2500000: only the closest-to-center tap decodes; others sit at low iq_power with no FSW hits.gophertrunk capture -freq 420900000 -sample-rate 2500000 -gain 600 -seconds 5 -format f32 -out wide.cfilethengophertrunk spectrum -in wide.cfile -format f32 -sample-rate 2500000 -freq 420900000— confirms only the closest tap shows as a carrier.-sample-rate 10000000— all four taps now show as carriers.sample_rate: 10000000in the daemon config and restart — all four taps fail to decode, including the previously-working one.sample_rate: 2500000— previously-working tap (Mt Anakie) immediately recovers.Happy to provide the raw wideband
.cfilecaptures from steps 3/4 if useful for the matched-IQ ground truth.