diff --git a/src/sdr/SoapySDRThread.cpp b/src/sdr/SoapySDRThread.cpp index 4013c69..d760c2e 100644 --- a/src/sdr/SoapySDRThread.cpp +++ b/src/sdr/SoapySDRThread.cpp @@ -130,8 +130,10 @@ bool SDRThread::init() { } else { hasHardwareDC.store(false); } - - device->setGainMode(SOAPY_SDR_RX,0,agc_mode.load()); + + if (device->hasGainMode(SOAPY_SDR_RX, 0)) { + device->setGainMode(SOAPY_SDR_RX, 0, agc_mode.load()); + } numChannels.store(getOptimalChannelCount(sampleRate.load())); numElems.store(getOptimalElementCount(sampleRate.load(), TARGET_DISPLAY_FPS)); @@ -484,7 +486,9 @@ void SDRThread::updateSettings() { // } if (agc_mode_changed.load()) { - device->setGainMode(SOAPY_SDR_RX, 0, agc_mode.load()); + if (device->hasGainMode(SOAPY_SDR_RX, 0)) { + device->setGainMode(SOAPY_SDR_RX, 0, agc_mode.load()); + } agc_mode_changed.store(false); if (!agc_mode.load()) { updateGains();