diff --git a/lib/trx_interface/udp_socket.h b/lib/trx_interface/udp_socket.h
new file mode 100644
index 0000000..2f424c9
--- /dev/null
+++ b/lib/trx_interface/udp_socket.h
@@ -0,0 +1,65 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GRGSM_TRX_UDP_SOCKET_H
+#define INCLUDED_GRGSM_TRX_UDP_SOCKET_H
+
+#include <gnuradio/thread/thread.h>
+
+#include <boost/array.hpp>
+#include <boost/asio.hpp>
+#include <pmt/pmt.h>
+
+namespace gr {
+  namespace grgsm {
+
+    class udp_socket
+    {
+    private:
+      boost::asio::io_service d_io_service;
+      std::vector<char> d_rxbuf;
+      gr::thread::thread d_thread;
+      bool d_started;
+      bool d_finished;
+
+      boost::asio::ip::udp::endpoint d_udp_endpoint_rx;
+      boost::asio::ip::udp::endpoint d_udp_endpoint_tx;
+      boost::shared_ptr<boost::asio::ip::udp::socket> d_udp_socket;
+
+      void handle_udp_read(const boost::system::error_code& error,
+        size_t bytes_transferred);
+      void run_io_service(void);
+
+    public:
+      udp_socket(
+        const std::string &remote_addr,
+        const std::string &src_port,
+        const std::string &dst_port);
+      ~udp_socket();
+
+      void udp_send(uint8_t *data, size_t len);
+    };
+
+  } /* namespace blocks */
+} /* namespace gr */
+
+#endif /* INCLUDED_GRGSM_TRX_UDP_SOCKET_H */
