diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index f96c63f2bb22b2f15b50e1baafdd06b9339b96d5..a39cf35f6a8bdbf1fcae472ed430c418b0e1c0c2 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -963,7 +963,7 @@ set(PHY_SRC
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.c
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/initial_sync.c
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
-  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if5_mobipass_tools.c
+  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if5_tools.c
   ${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
   ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
   ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
diff --git a/openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.c b/openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.c
deleted file mode 100644
index ab60c2fb0f6dad94e61964178eb404a774949776..0000000000000000000000000000000000000000
--- a/openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
-    OpenAirInterface
-    Copyright(c) 1999 - 2014 Eurecom
-
-    OpenAirInterface 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 of the License, or
-    (at your option) any later version.
-
-
-    OpenAirInterface 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 OpenAirInterface.The full GNU General Public License is
-   included in this distribution in the file called "COPYING". If not,
-   see <http://www.gnu.org/licenses/>.
-
-  Contact Information
-  OpenAirInterface Admin: openair_admin@eurecom.fr
-  OpenAirInterface Tech : openair_tech@eurecom.fr
-  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
-
-  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
-
- *******************************************************************************/
-
-/*! \file PHY/LTE_TRANSPORT/if5_mobipass_tools.c
-* \brief 
-* \author S. Sandeep Kumar, Raymond Knopp
-* \date 2016
-* \version 0.1
-* \company Eurecom
-* \email: ee13b1025@iith.ac.in, knopp@eurecom.fr 
-* \note
-* \warning
-*/
-
-#include "PHY/defs.h"
-
-#include "targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h"
-
-
-void send_IF5(PHY_VARS_eNB *eNB, eNB_rxtx_proc_t *proc, uint8_t *seqno) {      
-  
-  LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
-  void *txp[fp->nb_antennas_tx]; 
-  void *tx_buffer=NULL;
-  __m128i *data_block=NULL, *data_block_head=NULL;
-
-  __m128i *txp128;
-  __m128i t0, t1;
-
-  uint16_t packet_id=0, i;
-  uint16_t db_fulllength=640;
-
-  tx_buffer = memalign(16, MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + db_fulllength*sizeof(int16_t));
-  IF5_mobipass_header_t *header = (IF5_mobipass_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
-  data_block_head = (__m128i *)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + 4);
-  
-  header->flags = 0;
-  header->fifo_status = 0;  
-  header->seqno = *seqno;
-  header->ack = 0;
-  header->word0 = 0;  
-
-  txp[0] = (void*)&eNB->common_vars.txdata[0][0][proc->subframe_tx*eNB->frame_parms.samples_per_tti];
-  txp128 = (__m128i *) txp[0];
-    		    
-  for (packet_id=0; packet_id<(fp->samples_per_tti*2)/db_fulllength; packet_id++) {
-    header->time_stamp = proc->timestamp_tx + packet_id * db_fulllength; 
-    data_block = data_block_head; 
-
-    for (i=0; i<db_fulllength>>3; i+=2) {
-      t0 = _mm_srli_epi16(*txp128++, 4);
-      t1 = _mm_srli_epi16(*txp128++, 4);   
-      
-      *data_block++ = _mm_packs_epi16(t0, t1);     
-    }
-    
-    // Write the packet to the fronthaul
-    if ((eNB->ifdevice.trx_write_func(&eNB->ifdevice,
-                                      packet_id,
-                                      &tx_buffer,
-                                      db_fulllength,
-                                      1,
-                                      IF5_MOBIPASS)) < 0) {
-      perror("ETHERNET write for IF5_MOBIPASS\n");
-    }
-
-    header->seqno += 1;    
-  }
-  
-  *seqno = header->seqno;
-  free(tx_buffer);
-  return;  		    
-}
diff --git a/openair1/PHY/LTE_TRANSPORT/if5_tools.c b/openair1/PHY/LTE_TRANSPORT/if5_tools.c
new file mode 100644
index 0000000000000000000000000000000000000000..ffa1df5863fa0c4e3943bc1302ab40671d5d664e
--- /dev/null
+++ b/openair1/PHY/LTE_TRANSPORT/if5_tools.c
@@ -0,0 +1,165 @@
+/*******************************************************************************
+    OpenAirInterface
+    Copyright(c) 1999 - 2014 Eurecom
+
+    OpenAirInterface 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 of the License, or
+    (at your option) any later version.
+
+
+    OpenAirInterface 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 OpenAirInterface.The full GNU General Public License is
+   included in this distribution in the file called "COPYING". If not,
+   see <http://www.gnu.org/licenses/>.
+
+  Contact Information
+  OpenAirInterface Admin: openair_admin@eurecom.fr
+  OpenAirInterface Tech : openair_tech@eurecom.fr
+  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
+
+  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
+
+ *******************************************************************************/
+
+/*! \file PHY/LTE_TRANSPORT/if5_tools.c
+* \brief 
+* \author S. Sandeep Kumar, Raymond Knopp
+* \date 2016
+* \version 0.1
+* \company Eurecom
+* \email: ee13b1025@iith.ac.in, knopp@eurecom.fr 
+* \note
+* \warning
+*/
+
+#include "PHY/defs.h"
+
+#include "targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h"
+
+
+void send_IF5(PHY_VARS_eNB *eNB, eNB_rxtx_proc_t *proc, uint8_t *seqno, uint16_t packet_type) {      
+  
+  LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
+  void *txp[fp->nb_antennas_tx]; 
+  void *tx_buffer=NULL;
+
+  uint16_t packet_id=0, i=0;
+  
+  if (packet_type == IF5_RRH_GW) {
+
+    unsigned int spp_eth  = eNB->ifdevice.openair0_cfg->samples_per_packet;
+    unsigned int spsf     = eNB->ifdevice.openair0_cfg->samples_per_frame/10;
+    
+    for (i=0; i < fp->nb_antennas_tx; i++)
+      txp[i] = (void*)&eNB->common_vars.txdata[0][i][proc->subframe_tx*fp->samples_per_tti];
+    
+    for (packet_id=0; packet_id < spsf / spp_eth; packet_id++) {
+      eNB->ifdevice.trx_write_func(&eNB->ifdevice,
+                                   (proc->timestamp_tx-eNB->ifdevice.openair0_cfg->tx_sample_advance + packet_id*spp_eth),
+                                   txp,
+                                   spp_eth,
+                                   fp->nb_antennas_tx,
+                                   0);
+    }
+    
+    printf("SPP = %d and packet_id %d\n", spp_eth, packet_id);
+
+  } else if (packet_type == IF5_MOBIPASS) {
+    
+    uint16_t db_fulllength=640;
+    
+    __m128i *data_block=NULL, *data_block_head=NULL;
+
+    __m128i *txp128;
+    __m128i t0, t1;
+
+    tx_buffer = memalign(16, MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + db_fulllength*sizeof(int16_t));
+    IF5_mobipass_header_t *header = (IF5_mobipass_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES);
+    data_block_head = (__m128i *)(tx_buffer + MAC_HEADER_SIZE_BYTES + sizeof_IF5_mobipass_header_t + 4);
+    
+    header->flags = 0;
+    header->fifo_status = 0;  
+    header->seqno = *seqno;
+    header->ack = 0;
+    header->word0 = 0;  
+    
+    txp[0] = (void*)&eNB->common_vars.txdata[0][0][proc->subframe_tx*eNB->frame_parms.samples_per_tti];
+    txp128 = (__m128i *) txp[0];
+              
+    for (packet_id=0; packet_id<(fp->samples_per_tti*2)/db_fulllength; packet_id++) {
+      header->time_stamp = proc->timestamp_tx + packet_id * db_fulllength; 
+      data_block = data_block_head; 
+    
+      for (i=0; i<db_fulllength>>3; i+=2) {
+        t0 = _mm_srli_epi16(*txp128++, 4);
+        t1 = _mm_srli_epi16(*txp128++, 4);   
+        
+        *data_block++ = _mm_packs_epi16(t0, t1);     
+      }
+      
+      // Write the packet to the fronthaul
+      if ((eNB->ifdevice.trx_write_func(&eNB->ifdevice,
+                                        packet_id,
+                                        &tx_buffer,
+                                        db_fulllength,
+                                        1,
+                                        IF5_MOBIPASS)) < 0) {
+        perror("ETHERNET write for IF5_MOBIPASS\n");
+      }
+    
+      header->seqno += 1;    
+    }  
+    *seqno = header->seqno;
+  } else {    
+    AssertFatal(1==0, "send_IF5 - Unknown packet_type %x", packet_type);     
+  }  
+  
+  free(tx_buffer);
+  return;  		    
+}
+
+
+void recv_IF5(PHY_VARS_eNB *eNB, eNB_proc_t *proc, uint16_t packet_type) {
+
+  LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
+  void *rxp[fp->nb_antennas_rx]; 
+  void *rx_buffer=NULL;
+
+  uint16_t packet_id=0, i=0;
+  
+  if (packet_type == IF5_RRH_GW) {
+
+    unsigned int spp_eth  = eNB->ifdevice.openair0_cfg->samples_per_packet;
+    unsigned int spsf     = eNB->ifdevice.openair0_cfg->samples_per_frame/10;
+    
+    openair0_timestamp timestamp[spsf / spp_eth];
+    
+    for (i=0; i < fp->nb_antennas_rx; i++)
+      rxp[i] = (void*)&eNB->common_vars.rxdata[0][i][proc->subframe_rx*fp->samples_per_tti];
+    
+    for (packet_id=0; packet_id < spsf / spp_eth; packet_id++) {
+      eNB->ifdevice.trx_read_func(&eNB->ifdevice,
+                                  &timestamp[packet_id],
+                                  rxp,
+                                  spp_eth,
+                                  fp->nb_antennas_rx);
+    }
+    
+//    proc->timestamp_rx = timestamp[0];
+    
+  } else if (packet_type == IF5_MOBIPASS) {
+    
+    
+  } else {
+    AssertFatal(1==0, "recv_IF5 - Unknown packet_type %x", packet_type);     
+  }  
+  
+  free(rx_buffer);  
+  return;  
+}
diff --git a/openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.h b/openair1/PHY/LTE_TRANSPORT/if5_tools.h
similarity index 90%
rename from openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.h
rename to openair1/PHY/LTE_TRANSPORT/if5_tools.h
index e9bc26f9a65a7906c5a9e66e0ba84fbc74828774..07d6865a54300f95da1eb94f0ad646858289ef7d 100644
--- a/openair1/PHY/LTE_TRANSPORT/if5_mobipass_tools.h
+++ b/openair1/PHY/LTE_TRANSPORT/if5_tools.h
@@ -27,7 +27,7 @@
 
  *******************************************************************************/
 
-/*! \file PHY/LTE_TRANSPORT/if5_mobipass_tools.h
+/*! \file PHY/LTE_TRANSPORT/if5_tools.h
 * \brief 
 * \author S. Sandeep Kumar, Raymond Knopp
 * \date 2016
@@ -41,6 +41,7 @@
 #include <stdint.h>
 #include "PHY/defs.h"
 
+#define IF5_RRH_GW 0x0022
 #define IF5_MOBIPASS 0xbffe
 
 struct IF5_mobipass_header {  
@@ -62,4 +63,6 @@ struct IF5_mobipass_header {
 typedef struct IF5_mobipass_header IF5_mobipass_header_t;
 #define sizeof_IF5_mobipass_header_t 14
 
-void send_IF5(PHY_VARS_eNB*, eNB_rxtx_proc_t*, uint8_t*);
+void send_IF5(PHY_VARS_eNB*, eNB_rxtx_proc_t*, uint8_t*, uint16_t);
+
+void recv_IF5(PHY_VARS_eNB*, eNB_proc_t*, uint16_t);
diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
index 86f580d911de88b2541520e1daf717e415b1e2c7..8fb84e37fc774fe3feb85e4c3f4df143e51bd47a 100644
--- a/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
+++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/if_defs.h
@@ -42,7 +42,7 @@
 #include <stdint.h>
 
 #include "PHY/LTE_TRANSPORT/if4_tools.h"
-#include "PHY/LTE_TRANSPORT/if5_mobipass_tools.h"
+#include "PHY/LTE_TRANSPORT/if5_tools.h"
 
 // ETH transport preference modes
 #define ETH_UDP_MODE        0
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 7f8988dd0d4c1172d0cc2db828a1d97cd9f39797..9111fe42c6092b53c0f32c84c7867d1ca4813f2c 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -69,7 +69,7 @@
 //#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
 
 #include "PHY/LTE_TRANSPORT/if4_tools.h"
-#include "PHY/LTE_TRANSPORT/if5_mobipass_tools.h"
+#include "PHY/LTE_TRANSPORT/if5_tools.h"
 
 #include "PHY/extern.h"
 #include "SCHED/extern.h"
@@ -549,7 +549,7 @@ static void* eNB_thread_rxtx( void* param ) {
 
     } else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == eNodeB_3GPP_BBU) {
       /// **** trx_write_func to IF device **** ///       
-      send_IF5(PHY_vars_eNB_g[0][proc->CC_id], proc, &seqno);
+      send_IF5(PHY_vars_eNB_g[0][proc->CC_id], proc, &seqno, IF5_RRH_GW);
 
     } else { 
       /// **** send_IF4 of txdataF to RRU **** ///