diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
index 9e23c9e0d..2f0e6b7cb 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
+++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
@@ -33,6 +33,7 @@ RTLSDRGui::RTLSDRGui(DeviceSourceAPI *deviceAPI, QWidget* parent) :
 	QWidget(parent),
 	ui(new Ui::RTLSDRGui),
 	m_deviceAPI(deviceAPI),
+	m_forceSettings(true),
 	m_settings(),
 	m_sampleSource(0),
 	m_lastEngineState((DSPDeviceSourceEngine::State)-1)
@@ -117,6 +118,7 @@ bool RTLSDRGui::deserialize(const QByteArray& data)
     {
         displayGains();
         displaySettings();
+        m_forceSettings = true;
         sendSettings();
         return true;
     }
@@ -345,8 +347,9 @@ void RTLSDRGui::on_transverter_clicked()
 
 void RTLSDRGui::updateHardware()
 {
-	RTLSDRInput::MsgConfigureRTLSDR* message = RTLSDRInput::MsgConfigureRTLSDR::create(m_settings);
+	RTLSDRInput::MsgConfigureRTLSDR* message = RTLSDRInput::MsgConfigureRTLSDR::create(m_settings, m_forceSettings);
 	m_sampleSource->getInputMessageQueue()->push(message);
+	m_forceSettings = false;
 	m_updateTimer.stop();
 }
 
diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h
index 168a295f5..fd36e7e3d 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrgui.h
+++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h
@@ -55,6 +55,7 @@ private:
 	Ui::RTLSDRGui* ui;
 
 	DeviceSourceAPI* m_deviceAPI;
+	bool m_forceSettings;
 	RTLSDRSettings m_settings;
 	QTimer m_updateTimer;
 	QTimer m_statusTimer;
diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
index 533f9f2c0..0cd85ee72 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
+++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
@@ -249,7 +249,7 @@ bool RTLSDRInput::handleMessage(const Message& message)
         MsgConfigureRTLSDR& conf = (MsgConfigureRTLSDR&) message;
         qDebug() << "RTLSDRInput::handleMessage: MsgConfigureRTLSDR";
 
-        bool success = applySettings(conf.getSettings(), false);
+        bool success = applySettings(conf.getSettings(), conf.getForce());
 
         if (!success)
         {
diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.h b/plugins/samplesource/rtlsdr/rtlsdrinput.h
index b439153f4..21f866063 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrinput.h
+++ b/plugins/samplesource/rtlsdr/rtlsdrinput.h
@@ -35,18 +35,21 @@ public:
 
 	public:
 		const RTLSDRSettings& getSettings() const { return m_settings; }
+		bool getForce() const { return m_force; }
 
-		static MsgConfigureRTLSDR* create(const RTLSDRSettings& settings)
+		static MsgConfigureRTLSDR* create(const RTLSDRSettings& settings, bool force)
 		{
-			return new MsgConfigureRTLSDR(settings);
+			return new MsgConfigureRTLSDR(settings, force);
 		}
 
 	private:
 		RTLSDRSettings m_settings;
+		bool m_force;
 
-		MsgConfigureRTLSDR(const RTLSDRSettings& settings) :
+		MsgConfigureRTLSDR(const RTLSDRSettings& settings, bool force) :
 			Message(),
-			m_settings(settings)
+			m_settings(settings),
+			m_force(force)
 		{ }
 	};
 
diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp
index 7b84b270c..a6c44ae48 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp
+++ b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp
@@ -11,7 +11,7 @@
 
 const PluginDescriptor RTLSDRPlugin::m_pluginDescriptor = {
 	QString("RTL-SDR Input"),
-	QString("3.7.3"),
+	QString("3.7.4"),
 	QString("(c) Edouard Griffiths, F4EXB"),
 	QString("https://github.com/f4exb/sdrangel"),
 	true,