diff --git a/grc/trx/gsm_trx_burst_if.xml b/grc/trx/gsm_trx_burst_if.xml
index 99427b3..49979a3 100644
--- a/grc/trx/gsm_trx_burst_if.xml
+++ b/grc/trx/gsm_trx_burst_if.xml
@@ -3,7 +3,7 @@
   <name>TRX Burst Interface</name>
   <key>gsm_trx_burst_if</key>
   <import>import grgsm</import>
-  <make>grgsm.trx_burst_if($remote_addr, $base_port)</make>
+  <make>grgsm.trx_burst_if($bind_addr, $remote_addr, $base_port)</make>
 
   <param>
     <name>base_port</name>
@@ -13,6 +13,13 @@
   </param>
 
   <param>
+    <name>bind_addr</name>
+    <key>bind_addr</key>
+    <value>0.0.0.0</value>
+    <type>string</type>
+  </param>
+
+  <param>
     <name>remote_addr</name>
     <key>remote_addr</key>
     <value>127.0.0.1</value>
diff --git a/include/grgsm/misc_utils/udp_socket.h b/include/grgsm/misc_utils/udp_socket.h
index 15b2c66..d1ceb9f 100644
--- a/include/grgsm/misc_utils/udp_socket.h
+++ b/include/grgsm/misc_utils/udp_socket.h
@@ -53,8 +53,9 @@
 
     public:
       udp_socket(
-        const std::string &remote_addr,
+        const std::string &bind_addr,
         const std::string &src_port,
+        const std::string &remote_addr,
         const std::string &dst_port,
         size_t mtu);
       ~udp_socket();
diff --git a/include/grgsm/trx/trx_burst_if.h b/include/grgsm/trx/trx_burst_if.h
index 0e7a35a..9277dc5 100644
--- a/include/grgsm/trx/trx_burst_if.h
+++ b/include/grgsm/trx/trx_burst_if.h
@@ -48,6 +48,7 @@
        * creating new instances.
        */
       static sptr make(
+        const std::string &bind_addr,
         const std::string &remote_addr,
         const std::string &base_port);
     };
diff --git a/lib/misc_utils/udp_socket.cc b/lib/misc_utils/udp_socket.cc
index 73393a0..c43f183 100644
--- a/lib/misc_utils/udp_socket.cc
+++ b/lib/misc_utils/udp_socket.cc
@@ -38,8 +38,9 @@
   namespace gsm {
 
     udp_socket::udp_socket(
-      const std::string &remote_addr,
+      const std::string &bind_addr,
       const std::string &src_port,
+      const std::string &remote_addr,
       const std::string &dst_port,
       size_t mtu)
     {
@@ -50,7 +51,7 @@
       udp::resolver resolver(d_io_service);
 
       udp::resolver::query rx_query(
-        udp::v4(), remote_addr, src_port,
+        udp::v4(), bind_addr, src_port,
         boost::asio::ip::resolver_query_base::passive);
       udp::resolver::query tx_query(
         udp::v4(), remote_addr, dst_port,
diff --git a/lib/trx/trx_burst_if_impl.cc b/lib/trx/trx_burst_if_impl.cc
index e3fcc89..f72eecd 100644
--- a/lib/trx/trx_burst_if_impl.cc
+++ b/lib/trx/trx_burst_if_impl.cc
@@ -48,19 +48,22 @@
 
     trx_burst_if::sptr
     trx_burst_if::make(
+      const std::string &bind_addr,
       const std::string &remote_addr,
       const std::string &base_port)
     {
       int base_port_int = boost::lexical_cast<int> (base_port);
 
       return gnuradio::get_initial_sptr
-        (new trx_burst_if_impl(remote_addr, base_port_int));
+        (new trx_burst_if_impl(bind_addr, remote_addr,
+          base_port_int));
     }
 
     /*
      * The private constructor
      */
     trx_burst_if_impl::trx_burst_if_impl(
+      const std::string &bind_addr,
       const std::string &remote_addr,
       int base_port
     ) : gr::block("trx_burst_if",
@@ -79,8 +82,8 @@
         std::string data_dst_port = boost::lexical_cast<std::string> (base_port + 102);
 
         // Init DATA interface
-        d_data_sock = new udp_socket(remote_addr,
-          data_src_port, data_dst_port, DATA_IF_MTU);
+        d_data_sock = new udp_socket(bind_addr, data_src_port,
+          remote_addr, data_dst_port, DATA_IF_MTU);
 
         // Bind DATA interface handler
         d_data_sock->udp_rx_handler = boost::bind(
diff --git a/lib/trx/trx_burst_if_impl.h b/lib/trx/trx_burst_if_impl.h
index 27ec259..fdb49f2 100644
--- a/lib/trx/trx_burst_if_impl.h
+++ b/lib/trx/trx_burst_if_impl.h
@@ -40,7 +40,8 @@
       void burst_pack(pmt::pmt_t msg, uint8_t *buf);
 
      public:
-      trx_burst_if_impl(const std::string &remote_addr, int base_port);
+      trx_burst_if_impl(const std::string &bind_addr,
+        const std::string &remote_addr, int base_port);
       ~trx_burst_if_impl();
 
       void handle_dl_burst(pmt::pmt_t msg);
diff --git a/python/trx/radio_if.py b/python/trx/radio_if.py
index 2648cc9..25a35a5 100644
--- a/python/trx/radio_if.py
+++ b/python/trx/radio_if.py
@@ -81,7 +81,8 @@
 	def __init__(self, phy_args, phy_sample_rate,
 			phy_rx_gain, phy_tx_gain, phy_ppm,
 			phy_rx_antenna, phy_tx_antenna,
-			trx_remote_addr, trx_base_port):
+			trx_remote_addr, trx_base_port,
+			trx_bind_addr = "0.0.0.0"):
 
 		print("[i] Init Radio interface")
 
@@ -95,8 +96,8 @@
 
 		# TRX Burst Interface
 		self.trx_burst_if = grgsm.trx_burst_if(
-			trx_remote_addr, str(trx_base_port))
-
+			trx_bind_addr, trx_remote_addr,
+			str(trx_base_port))
 
 		# RX path definition
 		self.phy_src = uhd.usrp_source(phy_args,
