diff --git a/app.go b/app.go index 7fd4c7a..a7aa592 100644 --- a/app.go +++ b/app.go @@ -10681,9 +10681,6 @@ func (a *App) AudioStartMonitor() error { return fmt.Errorf("audio not initialized") } cfg, _ := a.GetAudioSettings() - if strings.TrimSpace(cfg.FromRadio) == "" { - return fmt.Errorf(`no "From radio" capture device set — pick the rig's USB Audio CODEC in Settings → Audio`) - } // When the rig's audio arrives over the NETWORK (Icom 50003), the monitor // must be render-only: this button used to start a USB capture from the // "From radio" device as well, and that second producer — often another @@ -10695,6 +10692,13 @@ func (a *App) AudioStartMonitor() error { applog.Printf("audio: RX monitor start (network sink only → listen=%q)", cfg.ListeningDevice) return a.audioMgr.StartMonitorSink(cfg.ListeningDevice) } + // Only the USB path needs a capture device — checked AFTER the network + // branch, which needs none: with From-radio empty (the normal network + // setup) this refusal was un-ticking the speakers checkbox the instant it + // was ticked. + if strings.TrimSpace(cfg.FromRadio) == "" { + return fmt.Errorf(`no "From radio" capture device set — pick the rig's USB Audio CODEC in Settings → Audio`) + } applog.Printf("audio: RX monitor start (from=%q → listen=%q)", cfg.FromRadio, cfg.ListeningDevice) a.audioMgr.SetMonitorGain(cfg.FromGain) return a.audioMgr.StartMonitor(cfg.FromRadio, cfg.ListeningDevice)