diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..a86e18d3
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "tools/multicomm/QGC/MAVLINK Broker/c_library_v2"]
+ path = tools/multicomm/QGC/MAVLINK Broker/c_library_v2
+ url = git@github.com:mavlink/c_library_v2.git
+[submodule "tools/multicomm/MAVLINK Broker/c_library_v2"]
+ path = tools/multicomm/MAVLINK Broker/c_library_v2
+ url = git@github.com:mavlink/c_library_v2.git
diff --git a/tools/multicomm/MAVLINK Broker/Makefile b/tools/multicomm/MAVLINK Broker/Makefile
new file mode 100644
index 00000000..ac8f7e75
--- /dev/null
+++ b/tools/multicomm/MAVLINK Broker/Makefile
@@ -0,0 +1,15 @@
+CXX = g++
+SRCS = mavlink_relay_server.cpp
+OBJS = $(SRCS:.cpp = .o)
+TARGET = mavlink_relay_server
+INC = -I./c_library_v2
+
+all : $(TARGET)
+ $(CXX) -o $(TARGET) $(OBJS) $(INC)
+
+$(TARGET) :
+ $(CXX) -c $(SRCS) $(INC)
+
+clean :
+ rm -f $(TARGET)
+ rm -f *.o
\ No newline at end of file
diff --git a/tools/multicomm/MAVLINK Broker/README.md b/tools/multicomm/MAVLINK Broker/README.md
new file mode 100644
index 00000000..e5ec0755
--- /dev/null
+++ b/tools/multicomm/MAVLINK Broker/README.md
@@ -0,0 +1,90 @@
+# Access QGroundControl with marvlink broker
+
+

+
+
+## Overview
+* Run mavlink broker on GCS host
+* Setup mavlink service on UAVs
+ * Run up mavlink-router to rout mavlink message to GSC host from UAVs
+
+ or
+
+ * Run up mavros to forward mavlink to GSC host
+
+* Run QGC to connect local port which broker forward to
+
+## Run up Broker
+First, go to this folder. And then,
+
+ make
+ ./mavlink_relay_server {TCP_PORT=20250} {UDP_PORT=20200}
+
+TCP and UDP is used for connecting GCSs and vehicles relatively.
+
+**argument examples:**
+
+TCP_PORT = 20250 (default), UDP_PORT = 20200 (default)
+
+ ./mavlink_relay_server
+
+TCP_PORT = 20000, UDP_PORT = 20200 (default)
+
+ ./mavlink_relay_server 20000
+
+TCP_PORT = 20000, UDP_PORT = 19000
+
+ ./mavlink_relay_server 20000 19000
+
+
+### Run up marvlink router on UVAs
+
+Please see the output of `mavlink-routerd --help` for the full list of command
+line options. The most important facts are:
+
+- The TCP server is enabled by default
+- TCP and UDP endpoints can be added multiple times
+- UDP endpoints added with the `-e` option are started in `normal` mode
+ (sending data to the specified address and port)
+- The last parameter (without a key) can either be one UART device or an UDP
+ connection. This UDP endpoint will be started in `server` mode (waiting for
+ an incoming connection)!
+To route mavlink packets from UART `ttyUSB0` to 2 other UDP endpoints, use the
+following command:
+
+ $ mavlink-routerd -e {GCS_IP}:14550 -e 127.0.0.1:14550 /dev/ttyUSB0:115200
+
+The `115200` after the colon in `/dev/ttyUSB0:115200` sets the UART baudrate.
+See more options with `mavlink-routerd --help`.
+
+### Run up mavros router on UVAs
+
+And mavros is used on UAVs that install LTE dongle for send packet to server.
+
+ roslaunch mavros px4.launch fcu_url:="udp://:14540@{your server's IP}:{your server's UDP port}"
+ roslaunch mavros px4.launch fcu_url:="/dev/ttyUSB0:115200" gcs_url:="{your server's IP}:{your server's UDP port}"
+
+
+
+
+## Run QGC to connect port which broker forward to
+
+You can set UDP connection at QGC as follow.
+
+1. exec QGC
+2. Application SEttings
+3. Comm Links
+4. Add
+5. Type to TCP
+6. Set Host Address (your server's fixed IP address), TCP Port (port number you set above)
+7. Click OK
+8. Select slot and click Connect
+
+
+

+
+
+
+
+
+
diff --git a/tools/multicomm/MAVLINK Broker/assets/BROCKER.png b/tools/multicomm/MAVLINK Broker/assets/BROCKER.png
new file mode 100644
index 00000000..246f2cd6
Binary files /dev/null and b/tools/multicomm/MAVLINK Broker/assets/BROCKER.png differ
diff --git a/tools/multicomm/MAVLINK Broker/assets/broker.JPG b/tools/multicomm/MAVLINK Broker/assets/broker.JPG
new file mode 100644
index 00000000..28d2eed9
Binary files /dev/null and b/tools/multicomm/MAVLINK Broker/assets/broker.JPG differ
diff --git a/tools/multicomm/MAVLINK Broker/c_library_v2 b/tools/multicomm/MAVLINK Broker/c_library_v2
new file mode 160000
index 00000000..5637057a
--- /dev/null
+++ b/tools/multicomm/MAVLINK Broker/c_library_v2
@@ -0,0 +1 @@
+Subproject commit 5637057af5ab8ec5667e3f8e5f8c73d3bc60eed8
diff --git a/tools/multicomm/MAVLINK Broker/mavlink_relay_server.cpp b/tools/multicomm/MAVLINK Broker/mavlink_relay_server.cpp
new file mode 100644
index 00000000..f8199143
--- /dev/null
+++ b/tools/multicomm/MAVLINK Broker/mavlink_relay_server.cpp
@@ -0,0 +1,299 @@
+/*
+ * When number of GCS and vehicle is N, M respectively,
+ * this server relay packet to eachother.
+ */
+#include
+#include
+#include
+#include