diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h
index c328af5d7..1b67daf1d 100644
--- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h
+++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmod.h
@@ -98,7 +98,6 @@ public:
 	virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "BeamSteeringCWMod"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
     uint32_t getBasebandSampleRate() const { return m_basebandSampleRate; }
diff --git a/plugins/channelmimo/interferometer/interferometer.h b/plugins/channelmimo/interferometer/interferometer.h
index cd64f25e7..d92d4b8b7 100644
--- a/plugins/channelmimo/interferometer/interferometer.h
+++ b/plugins/channelmimo/interferometer/interferometer.h
@@ -99,7 +99,6 @@ public:
 	virtual bool handleMessage(const Message& cmd); //!< Processing of a message. Returns true if message has actually been processed
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "Interferometer"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
     uint32_t getDeviceSampleRate() const { return m_deviceSampleRate; }
diff --git a/plugins/channelrx/chanalyzer/chanalyzer.h b/plugins/channelrx/chanalyzer/chanalyzer.h
index d9db7e53a..73044ea64 100644
--- a/plugins/channelrx/chanalyzer/chanalyzer.h
+++ b/plugins/channelrx/chanalyzer/chanalyzer.h
@@ -78,7 +78,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = objectName(); }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodadsb/adsbdemod.h b/plugins/channelrx/demodadsb/adsbdemod.h
index 9a84cfe19..326831f62 100644
--- a/plugins/channelrx/demodadsb/adsbdemod.h
+++ b/plugins/channelrx/demodadsb/adsbdemod.h
@@ -74,7 +74,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodam/amdemod.h b/plugins/channelrx/demodam/amdemod.h
index 7d5f6f853..2b6056052 100644
--- a/plugins/channelrx/demodam/amdemod.h
+++ b/plugins/channelrx/demodam/amdemod.h
@@ -72,7 +72,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodatv/atvdemod.h b/plugins/channelrx/demodatv/atvdemod.h
index 603aee11c..2867cde22 100644
--- a/plugins/channelrx/demodatv/atvdemod.h
+++ b/plugins/channelrx/demodatv/atvdemod.h
@@ -71,7 +71,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = objectName(); }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodbfm/bfmdemod.h b/plugins/channelrx/demodbfm/bfmdemod.h
index 9e01bbe84..070653ddf 100644
--- a/plugins/channelrx/demodbfm/bfmdemod.h
+++ b/plugins/channelrx/demodbfm/bfmdemod.h
@@ -80,7 +80,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemod.h b/plugins/channelrx/demodchirpchat/chirpchatdemod.h
index 1ddf8e3d6..30e27786a 100644
--- a/plugins/channelrx/demodchirpchat/chirpchatdemod.h
+++ b/plugins/channelrx/demodchirpchat/chirpchatdemod.h
@@ -210,7 +210,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return 0; }
 
diff --git a/plugins/channelrx/demoddatv/datvdemod.h b/plugins/channelrx/demoddatv/datvdemod.h
index 0a8b217fc..9de91f350 100644
--- a/plugins/channelrx/demoddatv/datvdemod.h
+++ b/plugins/channelrx/demoddatv/datvdemod.h
@@ -42,7 +42,6 @@ public:
 
     virtual void destroy() { delete this; }
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = objectName(); }
     virtual qint64 getCenterFrequency() const { return m_settings.m_centerFrequency; }
 
diff --git a/plugins/channelrx/demoddsd/dsddemod.h b/plugins/channelrx/demoddsd/dsddemod.h
index 580738eb2..423e3e783 100644
--- a/plugins/channelrx/demoddsd/dsddemod.h
+++ b/plugins/channelrx/demoddsd/dsddemod.h
@@ -73,7 +73,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodfreedv/freedvdemod.h b/plugins/channelrx/demodfreedv/freedvdemod.h
index f6c2b12cc..65c4ab7ca 100644
--- a/plugins/channelrx/demodfreedv/freedvdemod.h
+++ b/plugins/channelrx/demodfreedv/freedvdemod.h
@@ -86,7 +86,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodnfm/nfmdemod.h b/plugins/channelrx/demodnfm/nfmdemod.h
index d7365bd42..3fed38d92 100644
--- a/plugins/channelrx/demodnfm/nfmdemod.h
+++ b/plugins/channelrx/demodnfm/nfmdemod.h
@@ -72,7 +72,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodssb/ssbdemod.h b/plugins/channelrx/demodssb/ssbdemod.h
index d5819a2ff..185c6a68d 100644
--- a/plugins/channelrx/demodssb/ssbdemod.h
+++ b/plugins/channelrx/demodssb/ssbdemod.h
@@ -75,7 +75,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/demodwfm/wfmdemod.h b/plugins/channelrx/demodwfm/wfmdemod.h
index b2ffa71d3..4691bafa7 100644
--- a/plugins/channelrx/demodwfm/wfmdemod.h
+++ b/plugins/channelrx/demodwfm/wfmdemod.h
@@ -71,7 +71,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/filesink/filesink.h b/plugins/channelrx/filesink/filesink.h
index e4d991682..617963244 100644
--- a/plugins/channelrx/filesink/filesink.h
+++ b/plugins/channelrx/filesink/filesink.h
@@ -73,7 +73,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "File Sink"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
 
diff --git a/plugins/channelrx/freqtracker/freqtracker.h b/plugins/channelrx/freqtracker/freqtracker.h
index 10a407519..be120455a 100644
--- a/plugins/channelrx/freqtracker/freqtracker.h
+++ b/plugins/channelrx/freqtracker/freqtracker.h
@@ -71,7 +71,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channelrx/localsink/localsink.h b/plugins/channelrx/localsink/localsink.h
index e3255d36e..82b2d6615 100644
--- a/plugins/channelrx/localsink/localsink.h
+++ b/plugins/channelrx/localsink/localsink.h
@@ -93,7 +93,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "Local Sink"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
 
diff --git a/plugins/channelrx/remotesink/remotesink.h b/plugins/channelrx/remotesink/remotesink.h
index 29a737d06..76fc79e86 100644
--- a/plugins/channelrx/remotesink/remotesink.h
+++ b/plugins/channelrx/remotesink/remotesink.h
@@ -72,7 +72,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "Remote Sink"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
 
diff --git a/plugins/channelrx/sigmffilesink/sigmffilesink.h b/plugins/channelrx/sigmffilesink/sigmffilesink.h
index a19b6ea15..8adb3d07c 100644
--- a/plugins/channelrx/sigmffilesink/sigmffilesink.h
+++ b/plugins/channelrx/sigmffilesink/sigmffilesink.h
@@ -73,7 +73,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "SigMF File Sink"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
 
diff --git a/plugins/channelrx/udpsink/udpsink.h b/plugins/channelrx/udpsink/udpsink.h
index 92ea9afe7..757440cf7 100644
--- a/plugins/channelrx/udpsink/udpsink.h
+++ b/plugins/channelrx/udpsink/udpsink.h
@@ -79,7 +79,6 @@ public:
 	virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/filesource/filesource.h b/plugins/channeltx/filesource/filesource.h
index 76841fa9a..147c38c76 100644
--- a/plugins/channeltx/filesource/filesource.h
+++ b/plugins/channeltx/filesource/filesource.h
@@ -175,7 +175,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return 0; }
 
diff --git a/plugins/channeltx/localsource/localsource.h b/plugins/channeltx/localsource/localsource.h
index 6a0264aa1..0c4c4a142 100644
--- a/plugins/channeltx/localsource/localsource.h
+++ b/plugins/channeltx/localsource/localsource.h
@@ -90,7 +90,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = "Local Sink"; }
     virtual qint64 getCenterFrequency() const { return m_frequencyOffset; }
 
diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h
index 2ada722b0..6a1c6079a 100644
--- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h
+++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_mod.h
@@ -97,7 +97,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modam/ammod.h b/plugins/channeltx/modam/ammod.h
index 4f1ac606b..73fd12d36 100644
--- a/plugins/channeltx/modam/ammod.h
+++ b/plugins/channeltx/modam/ammod.h
@@ -182,7 +182,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modatv/atvmod.h b/plugins/channeltx/modatv/atvmod.h
index 9fdfde245..64a302279 100644
--- a/plugins/channeltx/modatv/atvmod.h
+++ b/plugins/channeltx/modatv/atvmod.h
@@ -254,7 +254,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modchirpchat/chirpchatmod.h b/plugins/channeltx/modchirpchat/chirpchatmod.h
index 06f446250..ab92bb87b 100644
--- a/plugins/channeltx/modchirpchat/chirpchatmod.h
+++ b/plugins/channeltx/modchirpchat/chirpchatmod.h
@@ -96,7 +96,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modfreedv/freedvmod.h b/plugins/channeltx/modfreedv/freedvmod.h
index f8b3867b0..7a3ac9ff8 100644
--- a/plugins/channeltx/modfreedv/freedvmod.h
+++ b/plugins/channeltx/modfreedv/freedvmod.h
@@ -186,7 +186,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modnfm/nfmmod.h b/plugins/channeltx/modnfm/nfmmod.h
index 017744d52..735aa981b 100644
--- a/plugins/channeltx/modnfm/nfmmod.h
+++ b/plugins/channeltx/modnfm/nfmmod.h
@@ -182,7 +182,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modpacket/packetmod.h b/plugins/channeltx/modpacket/packetmod.h
index 5115aa4b0..42a804381 100644
--- a/plugins/channeltx/modpacket/packetmod.h
+++ b/plugins/channeltx/modpacket/packetmod.h
@@ -103,7 +103,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modssb/ssbmod.h b/plugins/channeltx/modssb/ssbmod.h
index a6d611cf8..3a640b2f9 100644
--- a/plugins/channeltx/modssb/ssbmod.h
+++ b/plugins/channeltx/modssb/ssbmod.h
@@ -184,7 +184,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/modwfm/wfmmod.h b/plugins/channeltx/modwfm/wfmmod.h
index 1b7335cc7..8e0cda3bc 100644
--- a/plugins/channeltx/modwfm/wfmmod.h
+++ b/plugins/channeltx/modwfm/wfmmod.h
@@ -182,7 +182,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/channeltx/remotesource/remotesource.h b/plugins/channeltx/remotesource/remotesource.h
index de334eb21..c74bc5a83 100644
--- a/plugins/channeltx/remotesource/remotesource.h
+++ b/plugins/channeltx/remotesource/remotesource.h
@@ -165,7 +165,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return 0; }
 
diff --git a/plugins/channeltx/udpsource/udpsource.h b/plugins/channeltx/udpsource/udpsource.h
index 342d90c9c..b18bb2097 100644
--- a/plugins/channeltx/udpsource/udpsource.h
+++ b/plugins/channeltx/udpsource/udpsource.h
@@ -103,7 +103,6 @@ public:
     virtual bool handleMessage(const Message& cmd);
 
     virtual void getIdentifier(QString& id) { id = objectName(); }
-    virtual const QString& getURI() const { return getName(); }
     virtual void getTitle(QString& title) { title = m_settings.m_title; }
     virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; }
 
diff --git a/plugins/feature/simpleptt/simpleptt.h b/plugins/feature/simpleptt/simpleptt.h
index f81661860..9970ff50a 100644
--- a/plugins/feature/simpleptt/simpleptt.h
+++ b/plugins/feature/simpleptt/simpleptt.h
@@ -104,7 +104,6 @@ public:
     virtual void destroy() { delete this; }
     virtual bool handleMessage(const Message& cmd);
 
-    virtual const QString& getURI() const { return getName(); }
     virtual void getIdentifier(QString& id) const { id = objectName(); }
     virtual void getTitle(QString& title) const { title = m_settings.m_title; }
 
diff --git a/sdrbase/channel/channelapi.cpp b/sdrbase/channel/channelapi.cpp
index 8df494a05..e349e3995 100644
--- a/sdrbase/channel/channelapi.cpp
+++ b/sdrbase/channel/channelapi.cpp
@@ -20,10 +20,11 @@
 #include "util/uid.h"
 #include "channelapi.h"
 
-ChannelAPI::ChannelAPI(const QString& name, StreamType streamType) :
+ChannelAPI::ChannelAPI(const QString& uri, StreamType streamType) :
     m_featuresSettingsFeedbackBlockCount(0),
     m_streamType(streamType),
-    m_name(name),
+    m_name(uri),
+    m_uri(uri),
     m_indexInDeviceSet(-1),
     m_deviceSetIndex(0),
     m_deviceAPI(0),
diff --git a/sdrbase/channel/channelapi.h b/sdrbase/channel/channelapi.h
index 5d18a557e..ce17445ed 100644
--- a/sdrbase/channel/channelapi.h
+++ b/sdrbase/channel/channelapi.h
@@ -52,7 +52,7 @@ public:
     virtual void destroy() = 0;
 
     virtual void getIdentifier(QString& id) = 0;
-    virtual const QString& getURI() const = 0;
+    const QString& getURI() const { return m_uri; }
     virtual void getTitle(QString& title) = 0;
     virtual void setName(const QString& name) { m_name = name; }
     virtual const QString& getName() const { return m_name; }
@@ -140,6 +140,8 @@ private:
      * In GUI version it is supported by GUI object name accessed through ChannelGUI.
      */
     QString m_name;
+    /** Unique identifier attached to channel type */
+    QString m_uri;
 
     int m_indexInDeviceSet;
     int m_deviceSetIndex;
diff --git a/sdrbase/feature/feature.cpp b/sdrbase/feature/feature.cpp
index 5cf9c8036..80cc689ac 100644
--- a/sdrbase/feature/feature.cpp
+++ b/sdrbase/feature/feature.cpp
@@ -26,9 +26,10 @@
 
 MESSAGE_CLASS_DEFINITION(Feature::MsgChannelSettings, Message)
 
-Feature::Feature(const QString& name, WebAPIAdapterInterface *webAPIAdapterInterface) :
+Feature::Feature(const QString& uri, WebAPIAdapterInterface *webAPIAdapterInterface) :
 	m_webAPIAdapterInterface(webAPIAdapterInterface),
-    m_name(name),
+    m_name(uri),
+	m_uri(uri),
     m_uid(UidCalculator::getNewObjectId())
 {
     connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
diff --git a/sdrbase/feature/feature.h b/sdrbase/feature/feature.h
index 939ccd9f7..abbe56c47 100644
--- a/sdrbase/feature/feature.h
+++ b/sdrbase/feature/feature.h
@@ -93,7 +93,7 @@ public:
     virtual void destroy() = 0;
 	virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed
 
-    virtual const QString& getURI() const = 0;
+    const QString& getURI() const { return m_uri; }
     virtual void getIdentifier(QString& id) const = 0;
     virtual void getTitle(QString& title) const = 0;
     virtual void setName(const QString& name) { m_name = name; }
@@ -195,7 +195,8 @@ protected slots:
 	void handleInputMessages();
 
 private:
-    QString m_name;
+    QString m_name; //!< Unique identifier in a device set used for sorting may change depending on relative position in device set
+    QString m_uri;  //!< Unique non modifiable identifier attached to channel type
     uint64_t m_uid;
     int m_indexInFeatureSet;
 };