aethersdr / aethersdr/AetherSDR

KiwiSDR wf_share=1: client discards the waterfall on channels with rx_chan >= wf_chans

Open
#5,656 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug maintainer-review protocol spectrum
Dominant language
C++
Stars
221
Forks
117
Avg merge
2d 7h
Merged PRs (30d)
299

Description

What happens

On KiwiSDR v1.900+ receivers configured with a shared waterfall (rx8.wf3, wf_share=1, e.g. kphsdr.com and kiwisdr.kfsdr.com), every receive channel gets a waterfall, but AetherSDR marks the waterfall unavailable whenever the session lands on rx_chan >= wf_chans and shows the "KiwiSDR waterfall unavailable" overlay with the radio's own waterfall underneath. On an 8-channel receiver that throws away a real waterfall on 5 of 8 slots.

Why

KiwiSdrClient::updateWaterfallAvailability() gates on m_waterfallRxChannel >= m_waterfallChannelCount only; the client never parses wf_share (grep -rn wf_share src/ is empty).

Upstream server (rx/rx_waterfall.cpp): wf->isWF = (rx_chan < (kiwi.wf_share ? rx_chans : wf_chans) && conn->isWF_conn); the setup burst still advertises wf_chans=3 (the DDC count) next to wf_share=1. The stock browser client gates the same way: wf.audioFFT_active = ((rx_chan >= wf_chans && !kiwi.wf_share) || wf.no_wf) (openwebrx.js).

Expected

Parse wf_share on the W/F stream and treat rx_chan < rx_chans as waterfall-capable when wf_share=1, mirroring the stock client's rx_chan >= wf_chans && !wf_share gate. A socket-free replay of a v1.900 setup burst with rx_chan=5 wf_chans=3 wf_share=1 should assert waterfallAvailable() == true.

Related: the zoom_cap scale regression (separate issue) affects the channels that do get a waterfall; this one is about the channels that should.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with KiwiSdrClient::updateWaterfallAvailability() and the W/F stream setup parsing; grep the src/ tree for the existing waterfall fields, then compare the stock gate in openwebrx.js. Replay a setup burst with rx_chan=5, wf_chans=3, and wf_share=1, and verify that waterfallAvailable() returns true without a socket connection.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop, networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
76/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.