diff --git a/debian/changelog b/debian/changelog
index a0e65da66..a9cc4675b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,9 @@
 sdrangel (3.7.2-1) unstable; urgency=medium
 
   * PlutoSDR: Remove from device enumeration if device is not accessible
+  * RTLSDR: Fixed gains retrieval in the GUI
 
- -- Edouard Griffiths, F4EXB <f4exb06@gmail.com>  Sun, 01 Oct 2017 21:14:18 +0200
+ -- Edouard Griffiths, F4EXB <f4exb06@gmail.com>  Sat, 23 Sep 2017 05:14:18 +0200
 
 sdrangel (3.7.1-1) unstable; urgency=medium
 
diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
index fd06f4887..6c2b84309 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
+++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp
@@ -52,8 +52,6 @@ RTLSDRGui::RTLSDRGui(DeviceSourceAPI *deviceAPI, QWidget* parent) :
 	displaySettings();
 
 	connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
-
-    queryDeviceReport(); // will reply with MsgReportRTLSDR to report gain list
 }
 
 RTLSDRGui::~RTLSDRGui()
@@ -132,7 +130,6 @@ bool RTLSDRGui::handleMessage(const Message& message)
 {
 	if (RTLSDRInput::MsgReportRTLSDR::match(message))
 	{
-		qDebug() << "RTLSDRGui::handleMessage: MsgReportRTLSDR";
 		m_gains = ((RTLSDRInput::MsgReportRTLSDR&) message).getGains();
 		displayGains();
 		return true;
@@ -319,12 +316,6 @@ void RTLSDRGui::on_record_toggled(bool checked)
     m_sampleSource->getInputMessageQueue()->push(message);
 }
 
-void RTLSDRGui::queryDeviceReport()
-{
-    RTLSDRInput::MsgQueryRTLSDR* message = RTLSDRInput::MsgQueryRTLSDR::create();
-    m_sampleSource->getInputMessageQueue()->push(message);
-}
-
 void RTLSDRGui::updateHardware()
 {
 	RTLSDRInput::MsgConfigureRTLSDR* message = RTLSDRInput::MsgConfigureRTLSDR::create(m_settings);
diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h
index 5575a31df..5b8b002ee 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrgui.h
+++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h
@@ -65,7 +65,6 @@ private:
 	int m_lastEngineState;
 	MessageQueue m_inputMessageQueue;
 
-	void queryDeviceReport();
 	void displayGains();
 	void displaySettings();
 	void sendSettings();
diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
index e1feecf62..147b06904 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
+++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp
@@ -29,7 +29,6 @@
 #include "dsp/filerecord.h"
 
 MESSAGE_CLASS_DEFINITION(RTLSDRInput::MsgConfigureRTLSDR, Message)
-MESSAGE_CLASS_DEFINITION(RTLSDRInput::MsgQueryRTLSDR, Message)
 MESSAGE_CLASS_DEFINITION(RTLSDRInput::MsgReportRTLSDR, Message)
 MESSAGE_CLASS_DEFINITION(RTLSDRInput::MsgFileRecord, Message)
 
@@ -250,19 +249,6 @@ bool RTLSDRInput::handleMessage(const Message& message)
 
         return true;
     }
-    else if (MsgQueryRTLSDR::match(message))
-    {
-        //MsgQueryRTLSDR& conf = (MsgQueryRTLSDR&) message;
-        qDebug() << "RTLSDRInput::handleMessage: MsgQueryRTLSDR";
-
-        MsgReportRTLSDR *message = MsgReportRTLSDR::create(m_gains);
-
-        if (getMessageQueueToGUI()) {
-            getMessageQueueToGUI()->push(message);
-        }
-
-        return true;
-    }
     else if (MsgFileRecord::match(message))
     {
         MsgFileRecord& conf = (MsgFileRecord&) message;
@@ -436,6 +422,17 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, bool force)
     return true;
 }
 
+void RTLSDRInput::setMessageQueueToGUI(MessageQueue *queue)
+{
+    qDebug("RTLSDRInput::setMessageQueueToGUI: %p", queue);
+    DeviceSampleSource::setMessageQueueToGUI(queue);
+
+    if (queue) {
+        MsgReportRTLSDR *message = MsgReportRTLSDR::create(m_gains);
+        queue->push(message);
+    }
+}
+
 void RTLSDRInput::set_ds_mode(int on)
 {
 	rtlsdr_set_direct_sampling(m_dev, on);
diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.h b/plugins/samplesource/rtlsdr/rtlsdrinput.h
index 4f140d3ce..d3e807ae8 100644
--- a/plugins/samplesource/rtlsdr/rtlsdrinput.h
+++ b/plugins/samplesource/rtlsdr/rtlsdrinput.h
@@ -50,21 +50,6 @@ public:
 		{ }
 	};
 
-	class MsgQueryRTLSDR : public Message {
-		MESSAGE_CLASS_DECLARATION
-
-	public:
-		static MsgQueryRTLSDR* create()
-		{
-			return new MsgQueryRTLSDR();
-		}
-
-	protected:
-		MsgQueryRTLSDR() :
-			Message()
-		{ }
-	};
-
     class MsgReportRTLSDR : public Message {
         MESSAGE_CLASS_DECLARATION
 
@@ -116,6 +101,7 @@ public:
 	virtual quint64 getCenterFrequency() const;
 
 	virtual bool handleMessage(const Message& message);
+	virtual void setMessageQueueToGUI(MessageQueue *queue);
 
 	const std::vector<int>& getGains() const { return m_gains; }
 	void set_ds_mode(int on);
diff --git a/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp b/plugins/samplesource/rtlsdr/rtlsdrplugin.cpp
index ad1851ac3..b168512fd 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.5.2"),
+	QString("3.7.2"),
 	QString("(c) Edouard Griffiths, F4EXB"),
 	QString("https://github.com/f4exb/sdrangel"),
 	true,
diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h
index e74f9fb1f..a966e69f7 100644
--- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h
+++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h
@@ -318,7 +318,7 @@ public:
 
 	virtual bool handleMessage(const Message& message);
 
-	void setMessageQueueToGUI(MessageQueue *queue);
+	virtual void setMessageQueueToGUI(MessageQueue *queue);
 
 private:
 	DeviceSourceAPI *m_deviceAPI;
diff --git a/sdrbase/dsp/devicesamplesource.h b/sdrbase/dsp/devicesamplesource.h
index 1b5a8d9cc..a604c13c2 100644
--- a/sdrbase/dsp/devicesamplesource.h
+++ b/sdrbase/dsp/devicesamplesource.h
@@ -42,7 +42,7 @@ public:
 	virtual bool handleMessage(const Message& message) = 0;
 
 	MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; }
-	void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
+	virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
 	MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; }
     SampleSinkFifo* getSampleFifo() { return &m_sampleFifo; }