Skip to content

Title: Waterfall/spectrum stuck on "Connecting to radio" at launch; VFO and RHS controls functional (Windows, FLEX-6600 fw 4.2.18.41174) #2203

@nreed97

Description

@nreed97

Here is the complete bug report, ready to paste into GitHub:


Title: Waterfall/spectrum stuck on "Connecting to radio" at launch; VFO and RHS controls functional (Windows, FLEX-6600 fw 4.2.18.41174)


What happened?

On launch, AetherSDR establishes a TCP connection to the FLEX-6600 successfully — the right-hand panel controls (VFO frequency display, tune, mode selectors, etc.) are responsive and appear to reflect radio state — but the SpectrumWidget remains frozen on the "Connecting to radio" overlay indefinitely. No FFT spectrum or waterfall data is ever rendered. The display does not recover without restarting the application. The issue is fully reproducible on launch.


What did you expect?

After a successful connection, the SpectrumWidget should begin rendering the live FFT spectrum (PCC 0x8003) and scrolling waterfall tiles (PCC 0x8004) within a second or two of the radio completing its VITA-49 UDP stream setup. The "Connecting to radio" overlay should clear once the first FFT or waterfall VITA-49 packet is received and processed by PanadapterStream.


Steps to reproduce

  1. Launch AetherSDR 0.9.3 on Windows.
  2. In the ConnectionPanel (left pane), confirm the FLEX-6600 appears in the radio discovery list (UDP broadcast on port 4992).
  3. Click Connect.
  4. Observe that the right-hand applet panel controls (VFO, tune, RX applet, etc.) become active and reflect radio state.
  5. Observe that the center SpectrumWidget (FFT + waterfall pane) remains stuck on the "Connecting to radio" overlay.
  6. Wait 30–60 seconds — the display does not recover.

Radio model & firmware

  • Radio: FlexRadio FLEX-6600
  • Firmware: 4.2.18.41174

OS & version

  • OS: Windows (version not specified)
  • AetherSDR: 0.9.3
  • Qt: 6.7.3

Developer Notes

Symptom analysis

The fact that the VFO, tune, and RHS controls are functional confirms that the TCP command channel on port 4992 is healthyRadioConnection is receiving V, H, and S status messages, and RadioModel / SliceModel are being populated correctly.

The "Connecting to radio" overlay in SpectrumWidget is shown when no VITA-49 FFT or waterfall packets have been received. This points squarely at the VITA-49 UDP path (PanadapterStream, UDP port 4991) failing silently — the radio is either not sending packets to the client's UDP port, or the packets are being sent but blocked or dropped before PanadapterStream can process them.

Most likely root causes

1. Windows Firewall blocking inbound UDP (most probable)

On Windows, inbound UDP traffic on ephemeral or application-defined ports is blocked by default unless an exception is created. The VITA-49 stream (port 4991 or the dynamically bound PanadapterStream port) is the most likely victim. The TCP connection succeeds because outbound TCP is generally unrestricted, but inbound UDP packets from the radio carrying FFT/waterfall data are silently dropped by the firewall.

To test: Temporarily disable Windows Firewall (or add an inbound UDP rule for AetherSDR) and retry. If the waterfall appears, this is confirmed.

2. UDP port registration step failing or not completing

Per the connection sequence in RadioModel (step 4–5 of the protocol), AetherSDR must:

  • Bind the UDP socket in PanadapterStream
  • Send a single \x00 byte to radio:4992 to punch a NAT hole / register the source port
  • Issue client udpport <port> so the radio knows where to send VITA-49 packets

On firmware v4.2.18.41174, the behavior of client udpport may differ from v1.4.0.0 (where error 0x50001000 was expected and handled). If the firmware v4.x returns a different response code that RadioConnection treats as a fatal error, it may silently abort the stream setup before the radio begins sending VITA-49 data.

3. PanadapterStream socket binding to wrong interface on Windows

If PanadapterStream binds to 0.0.0.0 (all interfaces) and the radio is on a different subnet or VLAN than the default route, Windows may not deliver the UDP packets to the socket. On Linux, SO_REUSEADDR / SO_REUSEPORT semantics also differ from Windows.

4. Stream ID filtering mismatch (less likely but possible)

PanadapterStream::setOwnedStreamIds(panId, wfId) filters VITA-49 packets by stream ID. If the display pan / display waterfall status messages arrive out of order or are parsed with the wrong handle on this firmware version, the owned stream IDs may never be set, causing all received packets to be silently dropped in the PCC router.

Files and functions to investigate

File Area of interest
src/core/PanadapterStream.cpp UDP socket bind, setOwnedStreamIds(), PCC dispatcher
src/core/RadioConnection.cpp client udpport response handler — check error code branch for fw 4.x
src/models/RadioModel.cpp Connection sequence steps 4–7; createDefaultSlice() / SmartConnect path; m_ownedSliceIds population timing
src/gui/SpectrumWidget.cpp Condition that clears "Connecting to radio" overlay — verify it fires on first updateSpectrum() or updateWaterfallRow() call
src/gui/ConnectionPanel.cpp Connect button state machine

Logging to enable

In Help → Support, enable the following diagnostic categories before connecting, then share the full log bundle:

  • RadioConnection — will show the full V/H/R/S/M protocol exchange, including the client udpport response code from this firmware version
  • PanadapterStream — will confirm whether the UDP socket binds successfully, which port is used, whether any VITA-49 packets arrive, and whether any are dropped by the stream ID filter
  • RadioModel — will show the connection sequence state machine, slice discovery, and when (if ever) setOwnedStreamIds() is called with valid pan/waterfall IDs

A Wireshark capture on the host NIC filtering for udp.port == 4991 during a connect attempt would definitively confirm whether the radio is sending VITA-49 packets at all and whether they are arriving at the host.

Aether_Hang.txt

support-bundle-20260430-110356.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseWaiting for reporter to provide additional information

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions