diff --git a/scripts/udp_gs_tester.py b/scripts/udp_gs_tester.py
index f7b069d792e1ac33b41893f4b93f60d46b935085..68c9afe0b1734ba2d13559e954523d270d8117f5 100755
--- a/scripts/udp_gs_tester.py
+++ b/scripts/udp_gs_tester.py
@@ -128,7 +128,7 @@ def send_loop(sock, mavlink, acks):
 
 def main():
     acks = []
-    mavlink = MAVLink(None)
+    mavlink = MAVLink(None, srcSystem=1, srcComponent=0)
 
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.bind(("", RECV_PORT))
diff --git a/src/shared/Components/FilterSelector/FilterSelector.cpp b/src/shared/Components/FilterSelector/FilterSelector.cpp
index 37206b8a88c3e404757fa7416998ae0a19c25bde..ef6b251167cd0d6bf6b4db4aa41a495309193404 100644
--- a/src/shared/Components/FilterSelector/FilterSelector.cpp
+++ b/src/shared/Components/FilterSelector/FilterSelector.cpp
@@ -19,6 +19,7 @@
 #include "FilterSelector.h"
 
 #include <Modules/Mavlink/MavlinkVersionHeader.h>
+#include <Modules/SkywardHubStrings.h>
 
 #include <QLabel>
 #include <QPushButton>
@@ -116,6 +117,9 @@ void FilterSelector::parseMessagesList()
             for (unsigned int ii = 0; ii < messagesList[i].num_fields; ii++)
                 fields.append(messagesList[i].fields[ii].name);
 
+            fields.append(SkywardHubStrings::mavlink_component_id_name);
+            fields.append(SkywardHubStrings::mavlink_system_id_name);
+
             messages[QString("Mav/") + messagesList[i].name] = fields;
         }
     }
diff --git a/src/shared/Modules/Mavlink/BaseMavlinkModule.cpp b/src/shared/Modules/Mavlink/BaseMavlinkModule.cpp
index 2dc7c52a7f8d3289b92149b81a45984b0ebea139..0c5b4b286932385db441e9e8c6301c8e80b5e622 100644
--- a/src/shared/Modules/Mavlink/BaseMavlinkModule.cpp
+++ b/src/shared/Modules/Mavlink/BaseMavlinkModule.cpp
@@ -20,6 +20,8 @@
 
 #include <Modules/SkywardHubStrings.h>
 
+int BaseMavlinkModule::ACTIVE_MAVLINK_MODULES = 0;
+
 BaseMavlinkModule::BaseMavlinkModule(MavlinkPort *port, QWidget *parent)
     : DefaultModule(parent), port(port), mavlinkCodec(port, this)
 {
@@ -90,6 +92,9 @@ void BaseMavlinkModule::onStartClicked()
 {
     if (open())
     {
+        // Keep track of all active and listening mavlink modules
+        ACTIVE_MAVLINK_MODULES++;
+
         disableControls();
         linkQualityTimer.start(linkQualityPeriod);
 
@@ -111,6 +116,9 @@ void BaseMavlinkModule::onStopClicked()
     stop();
     port->close();
     enableControls();
+
+    // Keep track of all active and listening mavlink modules
+    ACTIVE_MAVLINK_MODULES--;
 }
 
 void BaseMavlinkModule::onCommandReceived(const Message &msg)
@@ -127,9 +135,15 @@ void BaseMavlinkModule::onCommandReceived(const Message &msg)
         return;
     }
 
-    if (!port->isOpen())
+    // If we are not active, don't process this message
+    if (!startToggleButton->state())
     {
-        error(tr("Mavlink"), tr("Cannot send message: port is closed."));
+        // Only show this error if there are no other active modules
+        if (ACTIVE_MAVLINK_MODULES == 0)
+        {
+            error(tr("Mavlink"), tr("Cannot send message: port is closed."));
+        }
+
         return;
     }
 
@@ -168,14 +182,12 @@ void BaseMavlinkModule::onOpenLogFolderClick()
 
 void BaseMavlinkModule::enableControls()
 {
-    sysIdComboBox->setEnabled(true);
     logCheckBox->setEnabled(true);
     childEnableControls();
 }
 
 void BaseMavlinkModule::disableControls()
 {
-    sysIdComboBox->setEnabled(false);
     logCheckBox->setEnabled(false);
     childDisableControls();
 }
diff --git a/src/shared/Modules/Mavlink/BaseMavlinkModule.h b/src/shared/Modules/Mavlink/BaseMavlinkModule.h
index 8438fd312669b757f46a591b1d11fada3a71561d..3cf583097ce6b68b9f8c330b0bcdcc5e87a87b75 100644
--- a/src/shared/Modules/Mavlink/BaseMavlinkModule.h
+++ b/src/shared/Modules/Mavlink/BaseMavlinkModule.h
@@ -87,4 +87,6 @@ private:
     QTimer linkQualityTimer;
     const int linkQualityPeriod = 2000;  // [ms]
     int msgArrived              = 0;
+
+    static int ACTIVE_MAVLINK_MODULES;
 };
\ No newline at end of file
diff --git a/src/shared/Modules/Mavlink/MavlinkCodec.cpp b/src/shared/Modules/Mavlink/MavlinkCodec.cpp
index 1e8648bc5b3096c44739cedc2ca03caddff9e32f..37daea184d8ac5a115df1962a0184fc27276f967 100644
--- a/src/shared/Modules/Mavlink/MavlinkCodec.cpp
+++ b/src/shared/Modules/Mavlink/MavlinkCodec.cpp
@@ -132,6 +132,12 @@ Message MavlinkCodec::decodeMessage(const mavlink_message_t& msg)
     for (unsigned i = 0; i < info.num_fields; i++)
         fields[QString(info.fields[i].name)] = decodeField(msg, info.fields[i]);
 
+    // Also embed system/component informations
+    fields[SkywardHubStrings::mavlink_system_id_name] =
+        Field(static_cast<uint64_t>(msg.sysid));
+    fields[SkywardHubStrings::mavlink_component_id_name] =
+        Field(static_cast<uint64_t>(msg.compid));
+
     Message output;
     output.setTopic(
         Topic(SkywardHubStrings::mavlink_received_msg_topic + "/" + info.name));
diff --git a/src/shared/Modules/SkywardHubStrings.h b/src/shared/Modules/SkywardHubStrings.h
index 8a43f0e7634645db2a7e1e6db252634f0db731b6..4c8ff5b1348a80ef4d853dd8e4ae8f3449a92c32 100644
--- a/src/shared/Modules/SkywardHubStrings.h
+++ b/src/shared/Modules/SkywardHubStrings.h
@@ -76,4 +76,7 @@ static const QString mavlink_received_msg_ACK_topic =
 static const QString mavlink_received_msg_NACK_topic =
     mavlink_received_msg_topic + "/NACK_TM";
 
+static const QString mavlink_system_id_name    = "system_id";
+static const QString mavlink_component_id_name = "component_id";
+
 };  // namespace SkywardHubStrings