diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp
index 4d106f7441263e3f8a4bd68b8eeef12a1c68640e..55bf66d207e7fa8cd0cf67b1656af849e16045cc 100644
--- a/src/modules/mavlink/mavlink_messages.cpp
+++ b/src/modules/mavlink/mavlink_messages.cpp
@@ -1775,9 +1775,16 @@ protected:
 			msg.flags |= UTM_DATA_AVAIL_FLAGS_TIME_VALID;
 		}
 
+#ifndef BOARD_HAS_NO_UUID
+		px4_guid_t px4_guid;
+		board_get_px4_guid(px4_guid);
+		static_assert(sizeof(px4_guid_t) == sizeof(msg.uas_id), "GUID byte length mismatch");
+		memcpy(&msg.uas_id, &px4_guid, sizeof(msg.uas_id));
+		msg.flags |= UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE;
+#else
 		// TODO Fill ID with something reasonable
 		memset(&msg.uas_id[0], 0, sizeof(msg.uas_id));
-		//msg.flags |= UTM_DATA_AVAIL_FLAGS_UAS_ID_AVAILABLE;
+#endif /* BOARD_HAS_NO_UUID */
 
 		// Handle global position
 		if (_global_pos_time > 0) {