diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 90929d563b0ce741fa125119a90c4341c70160e2..7569566faae5bff7d654ad0693e90b25efeb96db 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -133,9 +133,6 @@ else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
   if (CPUINFO MATCHES "avx2")
     set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx2")
   endif()
-  if (CPUINFO MATCHES "sse4_2")
-    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.2")
-  endif()
   if (CPUINFO MATCHES "sse4_1")
     set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.1")
   endif()
@@ -149,8 +146,8 @@ set(C_FLAGS_PROCESSOR " ${C_FLAGS_PROCESSOR} ${CFLAGS_PROCESSOR_USER}")
 Message("C_FLAGS_PROCESSOR is ${C_FLAGS_PROCESSOR}")
 
 if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
-  if ( (NOT( C_FLAGS_PROCESSOR MATCHES "ssse3")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.1")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.2")) )
-    Message(FATAL_ERROR "For x86 Architecture, you must have following flags: -mssse3 -msse4.1 -msse4.2. The current detected flags are: ${C_FLAGS_PROCESSOR}. You can pass the flags manually in build script, for example: ./build_oai --cflags_processor \"-mssse3 -msse4.1 -msse4.2\" ")
+  if ( (NOT( C_FLAGS_PROCESSOR MATCHES "ssse3")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.1")) )
+    Message(FATAL_ERROR "For x86 Architecture, you must have following flags: -mssse3 -msse4.1. The current detected flags are: ${C_FLAGS_PROCESSOR}. You can pass the flags manually in build script, for example: ./build_oai --cflags_processor \"-mssse3 -msse4.1\" ")
   endif()
 endif()
 
@@ -435,7 +432,7 @@ elseif (${RF_BOARD} STREQUAL "OAI_BLADERF")
     )
   LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu")
   set(option_HW_lib "bladeRF")
-#set(LOWLATENCY False)
+set(LOWLATENCY False)
 
 elseif (${RF_BOARD} STREQUAL "ETHERNET")
   include_directories ("${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB")
@@ -462,6 +459,7 @@ add_boolean_option(ENABLE_SECURITY         True  "Enable LTE integrity and ciphe
 add_boolean_option(ENABLE_USE_MME          True  "eNB connected to MME (INTERFACE S1-C), not standalone eNB")
 add_boolean_option(NO_RRM                  True  "DO WE HAVE A RADIO RESSOURCE MANAGER: NO")
 add_boolean_option(USER_MODE True "????")
+add_boolean_option(RRC_DEFAULT_RAB_IS_AM False "set the RLC mode to AM for the default bearer")
 
 add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
 add_boolean_option(DISABLE_USE_NAS False "???")
@@ -1649,7 +1647,7 @@ foreach(myExe s1ap
     ${OPENAIR3_DIR}/TEST/test_${myExe}.c
     )
   target_link_libraries (test_${myExe}
-    -Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
+    -Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} 
     )
 endforeach(myExe)
 
diff --git a/cmake_targets/autotests/010113/CMakeLists.txt b/cmake_targets/autotests/010113/CMakeLists.txt
deleted file mode 100644
index 2ac0caecde90d32c80f1400e4ddd6db9a57e8401..0000000000000000000000000000000000000000
--- a/cmake_targets/autotests/010113/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-set(OAI_NW_DRIVER_TYPE_ETHERNET True)
-set(OAI_NW_DRIVER_USE_NETLINK True)
-set(NAS_NETLINK True)
-include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010114/CMakeLists.txt b/cmake_targets/autotests/010114/CMakeLists.txt
deleted file mode 100644
index 23497976f14d20f5595cfe07744614ae7cc3d55d..0000000000000000000000000000000000000000
--- a/cmake_targets/autotests/010114/CMakeLists.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-set(ADDR_CONF False)
-set(DEBUG_OMG False)
-set(DISABLE_XER_PRINT False)
-set(DRIVER2013 False)
-set(ENABLE_FXP True)
-set(ENABLE_ITTI True)
-set(ENABLE_NAS_UE_LOGGING False)
-set(ENABLE_NEW_MULTICAST True)
-set(ENABLE_PGM_TRANSPORT True)
-set(ENABLE_RAL False)
-set(ENABLE_SECURITY False)
-set(ENABLE_USE_CPU_EXECUTION_TIME True)
-set(ENABLE_USE_MME False)
-set(ENABLE_VCD_FIFO True)
-set(HARD_RT False)
-set(JUMBO_FRAME True)
-set(LARGE_SCALE False)
-set(LINK_ENB_PDCP_TO_GTPV1U False)
-set(LINUX_LIST False)
-set(LINUX True)
-set(LOCALIZATION False)
-set(LOG_NO_THREAD True)
-set(LOWLATENCY False)
-set(MAC_CONTEXT 1)
-set(MAX_NUM_CCs 1)
-set(MIH_C_MEDIEVAL_EXTENSIONS False)
-set(MSG_PRINT False)
-set(MU_RECEIVER False)
-set(NAS_ADDRESS_FIX true)
-set(NAS_NETLINK True)
-set(NAS_UE True)
-set(NEW_FFT True)
-set(NO_RRM True)
-set(OAI_EMU True)
-set(OAI_EMU True)
-set(OAI_NW_DRIVER_TYPE_ETHERNET True)
-set(OPENAIR1 False)
-set(OPENAIR2 True)
-set(OPENAIR_EMU True)
-set(OPENAIR_LTE True)
-set (PACKAGE_NAME "oaisim")
-set(PACKAGE_NAME "oaisim")
-set(PBS_SIM False)
-set(PC_DSP False)
-set(PC_TARGET False)
-set(PDCP_MSG_PRINT False)
-set(PERFECT_CE False)
-set(PHY_ABSTRACTION True)
-set(PHY_ABSTRACTION True)
-set(PHY_EMUL False)
-set(PHYSIM False)
-set(PUCCH True)
-set(RANDOM_BF False)
-set(RF_BOARD "NoBoard")
-set(RLC_STOP_ON_LOST_PDU True)
-set(RRC_ASN1_VERSION Rel8)
-set(RRC_ASN1_VERSION "Rel8")
-set(RRC_MSG_PRINT False)
-set(RTAI False)
-set(SECU False)
-set(SMBV False)
-set(SPECTRA False)
-set(TEST_OMG False)
-set(USE_3GPP_ADDR_AS_LINK_ADDR False)
-set(USE_MME False)
-set(USER_MODE True)
-set(XER_PRINT False)
-set(XFORMS False)
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010115/CMakeLists.txt b/cmake_targets/autotests/010115/CMakeLists.txt
deleted file mode 100644
index 01c00574a4bcb574eeacaed4373b092b967d0caa..0000000000000000000000000000000000000000
--- a/cmake_targets/autotests/010115/CMakeLists.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-set ( ADDR_CONF False )
-set ( DEBUG_OMG False )
-set ( DISABLE_USE_NAS False )
-set ( DISABLE_XER_PRINT False )
-set ( DRIVER2013 False )
-set ( EMOS False )
-set ( ENABLE_FXP True )
-set ( ENABLE_ITTI True )
-set ( ENABLE_NAS_UE_LOGGING False )
-set ( ENABLE_NEW_MULTICAST True )
-set ( ENABLE_PGM_TRANSPORT True )
-set ( ENABLE_RAL False )
-set ( ENABLE_SECURITY False )
-set ( ENABLE_STANDALONE_EPC False )
-set ( ENABLE_USE_CPU_EXECUTION_TIME True )
-set ( ENABLE_USE_MME False )
-set ( ENABLE_VCD_FIFO True )
-set ( ENB_MODE True )
-set ( EPC_BUILD False )
-set ( HARD_RT False )
-set ( JUMBO_FRAME True )
-set ( LARGE_SCALE False )
-set ( LINK_ENB_PDCP_TO_GTPV1U False )
-set ( LINK_ENB_PDCP_TO_IP_DRIVER False )
-set ( LINUX_LIST False )
-set ( LINUX True )
-set ( LOCALIZATION False )
-set ( LOG_NO_THREAD True )
-set ( LOWLATENCY False )
-set ( MAC_CONTEXT 1 )
-set ( MAX_NUM_CCs 1 )
-set ( MESSAGE_CHART_GENERATOR         False )
-set ( MESSAGE_CHART_GENERATOR_RLC_MAC False )
-set ( MESSAGE_CHART_GENERATOR_PHY     False )
-set ( MIH_C_MEDIEVAL_EXTENSIONS False )
-set ( MSG_PRINT False )
-set ( MU_RECEIVER False )
-set ( NAS_ADDRESS_FIX False )
-set ( NAS_BUILT_IN_EPC False )
-set ( NAS_BUILT_IN_UE False )
-set ( NAS_MME False )
-set ( NAS_NETLINK False )
-set ( NAS_UE False )
-set ( NB_ANTENNAS_RX 2 )
-set ( NB_ANTENNAS_TX 2 )
-set ( NB_ANTENNAS_TXRX 2 )
-set ( NEW_FFT True )
-set ( NO_RRM True )
-set ( OAI_EMU True )
-set ( OAI_NW_DRIVER_TYPE_ETHERNET True )
-set ( OAI_NW_DRIVER_USE_NETLINK False )
-set ( OAISIM True )
-set ( OPENAIR1 False )
-set ( OPENAIR2 True )
-set ( OPENAIR_EMU False )
-set ( OPENAIR_LTE True )
-set ( PBS_SIM False )
-set ( PC_DSP False )
-set ( PC_TARGET False )
-set ( PDCP_MSG_PRINT False )
-set ( PDCP_USE_NETLINK_QUEUES False )
-set ( PDCP_USE_NETLINK True )
-set ( PERFECT_CE False )
-set ( PHY_ABSTRACTION True )
-set ( PHY_CONTEXT 1 )
-set ( PHY_EMUL False )
-set ( PHYSIM False )
-set ( PUCCH True )
-set ( RANDOM_BF False )
-set ( RF_BOARD False )
-set ( RLC_STOP_ON_LOST_PDU True )
-set ( RRC_ASN1_VERSION Rel10 )
-set ( RRC_DEFAULT_RAB_IS_AM False )
-set ( RRC_MSG_PRINT False )
-set ( RTAI False )
-set ( S1AP_LIMIT_STREAM_ID_TO_1 False )
-set ( S1AP_VERSION R10 )
-set ( SMBV False )
-set ( SPECTRA False )
-set ( STOP_ON_IP_TRAFFIC_OVERLOAD False )
-set ( TEST_OMG False )
-set ( TRACE_RLC_AM_BO False )
-set ( TRACE_RLC_AM_FREE_SDU False )
-set ( TRACE_RLC_AM_HOLE False )
-set ( TRACE_RLC_AM_PDU True )
-set ( TRACE_RLC_AM_RESEGMENT False )
-set ( TRACE_RLC_AM_RX_DECODE False )
-set ( TRACE_RLC_AM_RX False )
-set ( TRACE_RLC_AM_STATUS_CREATION False )
-set ( TRACE_RLC_AM_TX False )
-set ( TRACE_RLC_AM_TX_STATUS False )
-set ( TRACE_RLC_PAYLOAD False )
-set ( TRACE_RLC_UM_DAR False )
-set ( TRACE_RLC_UM_DISPLAY_ASCII_DATA False )
-set ( TRACE_RLC_UM_PDU True )
-set ( TRACE_RLC_UM_RX False )
-set ( TRACE_RLC_UM_SEGMENT False )
-set ( TRACE_RLC_UM_TX_STATUS False )
-set ( USE_3GPP_ADDR_AS_LINK_ADDR False )
-set ( USE_MME False )
-set ( USER_MODE True )
-set ( XER_PRINT False )
-set ( XFORMS False )
-
-include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010204/CMakeLists.txt b/cmake_targets/autotests/010204/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010204/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010205/CMakeLists.txt b/cmake_targets/autotests/010205/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010205/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010400/CMakeLists.txt b/cmake_targets/autotests/010400/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010400/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010401/CMakeLists.txt b/cmake_targets/autotests/010401/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010401/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010402/CMakeLists.txt b/cmake_targets/autotests/010402/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010402/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010403/CMakeLists.txt b/cmake_targets/autotests/010403/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e6c4bdfe476b509a37e93e9c2357f4107aacad7e
--- /dev/null
+++ b/cmake_targets/autotests/010403/CMakeLists.txt
@@ -0,0 +1,87 @@
+cmake_minimum_required(VERSION 2.8)
+
+set (  CMAKE_BUILD_TYPE "RelWithDebInfo" )
+set (  ADDR_CONF False )
+set (  DEBUG_OMG False )
+set (  DISABLE_XER_PRINT False )
+set (  DRIVER2013 True )
+set (  EMOS False )
+set (  ENABLE_FXP True )
+set (  ENABLE_ITTI True )
+set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NEW_MULTICAST True )
+set (  ENABLE_PGM_TRANSPORT True )
+set (  ENABLE_RAL False )
+set (  ENABLE_SECURITY False )
+set (  ENABLE_STANDALONE_EPC False)
+set (  ENABLE_USE_CPU_EXECUTION_TIME True )
+set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_RAW_SOCKET_FOR_SGI False)
+set (  ENABLE_VCD_FIFO False )
+set (  ENB_MODE True )
+set (  EXMIMO_IOT True )
+set (  HARD_RT False )
+set (  JUMBO_FRAME True )
+set (  LARGE_SCALE False )
+set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINUX_LIST False )
+set (  LINUX True )
+set (  LOCALIZATION False )
+set (  LOG_NO_THREAD 1 )
+set (  LOWLATENCY False )
+set (  MAC_CONTEXT 1 )
+set (  MAX_NUM_CCs 1 )
+set (  MESSAGE_CHART_GENERATOR         False )
+set (  MESSAGE_CHART_GENERATOR_RLC_MAC False )
+set (  MESSAGE_CHART_GENERATOR_PHY     False )
+set (  MIH_C_MEDIEVAL_EXTENSIONS False )
+set (  MSG_PRINT False )
+set (  MU_RECEIVER False )
+set (  NAS_ADDRESS_FIX True )
+set (  NAS_BUILT_IN_UE False)
+set (  NAS_MME False )
+set (  NAS_UE False )
+set (  NB_ANTENNAS_RX "2" )
+set (  NB_ANTENNAS_TX "2" )
+set (  NB_ANTENNAS_TXRX "2" )
+set (  NEW_FFT True )
+set (  NO_RRM True )
+set (  OAI_EMU True )
+set (  OAISIM True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_USE_NETLINK True )
+set (  OPENAIR1 True )
+set (  OPENAIR2 True )
+set (  OPENAIR_EMU False )
+set (  OPENAIR_LTE True )
+set (  PACKAGE_NAME "oaisim" )
+set (  PBS_SIM False )
+set (  PDCP_USE_NETLINK True )
+set (  PC_DSP True )
+set (  PC_TARGET True )
+set (  PDCP_MSG_PRINT False )
+set (  PERFECT_CE False )
+set (  PHY_ABSTRACTION True )
+set (  PHY_CONTEXT False )
+set (  PHY_EMUL False )
+set (  PHYSIM True )
+set (  PUCCH True )
+set (  RANDOM_BF False )
+set (  RF_BOARD "False" )
+set (  RRC_ASN1_VERSION "Rel10" )
+set (  RLC_STOP_ON_LOST_PDU False )
+set (  RRC_MSG_PRINT False )
+set (  RTAI False )
+set (  SECU False )
+set (  SMBV False )
+set (  SPECTRA False )
+set (  TEST_OMG False )
+set (  USE_3GPP_ADDR_AS_LINK_ADDR False )
+set (  USE_MME "R10" )
+set (  USER_MODE True )
+set (  XER_PRINT False )
+set ( XFORMS False )
+set ( PRINT_STATS False )
+set ( RRC_ASN1_VERSION "Rel10")
+set ( ENABLE_VCD_FIFO False )
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/010309/CMakeLists.txt b/cmake_targets/autotests/015000/CMakeLists.txt
similarity index 93%
rename from cmake_targets/autotests/010309/CMakeLists.txt
rename to cmake_targets/autotests/015000/CMakeLists.txt
index 36a9eb75da8391cf560ac6a1210e6c7bcb10f517..47cf5074b5b067a9c8e75608e6c5757504ba46c0 100644
--- a/cmake_targets/autotests/010309/CMakeLists.txt
+++ b/cmake_targets/autotests/015000/CMakeLists.txt
@@ -5,7 +5,7 @@ set(RF_BOARD None)
 set(XFORMS False)
 
 set(DEBUG_PHY False)
-set(MU_RECIEVER Flase)
+set(MU_RECIEVER False)
 set(RANDOM_BF False)
 set(PBS_SIM False)
 set(PERFECT_CE False)
diff --git a/cmake_targets/autotests/010307/CMakeLists.txt b/cmake_targets/autotests/015001/CMakeLists.txt
similarity index 93%
rename from cmake_targets/autotests/010307/CMakeLists.txt
rename to cmake_targets/autotests/015001/CMakeLists.txt
index 36a9eb75da8391cf560ac6a1210e6c7bcb10f517..47cf5074b5b067a9c8e75608e6c5757504ba46c0 100644
--- a/cmake_targets/autotests/010307/CMakeLists.txt
+++ b/cmake_targets/autotests/015001/CMakeLists.txt
@@ -5,7 +5,7 @@ set(RF_BOARD None)
 set(XFORMS False)
 
 set(DEBUG_PHY False)
-set(MU_RECIEVER Flase)
+set(MU_RECIEVER False)
 set(RANDOM_BF False)
 set(PBS_SIM False)
 set(PERFECT_CE False)
diff --git a/cmake_targets/autotests/010308/CMakeLists.txt b/cmake_targets/autotests/015002/CMakeLists.txt
similarity index 93%
rename from cmake_targets/autotests/010308/CMakeLists.txt
rename to cmake_targets/autotests/015002/CMakeLists.txt
index 36a9eb75da8391cf560ac6a1210e6c7bcb10f517..47cf5074b5b067a9c8e75608e6c5757504ba46c0 100644
--- a/cmake_targets/autotests/010308/CMakeLists.txt
+++ b/cmake_targets/autotests/015002/CMakeLists.txt
@@ -5,7 +5,7 @@ set(RF_BOARD None)
 set(XFORMS False)
 
 set(DEBUG_PHY False)
-set(MU_RECIEVER Flase)
+set(MU_RECIEVER False)
 set(RANDOM_BF False)
 set(PBS_SIM False)
 set(PERFECT_CE False)
diff --git a/cmake_targets/autotests/010306/CMakeLists.txt b/cmake_targets/autotests/015003/CMakeLists.txt
similarity index 93%
rename from cmake_targets/autotests/010306/CMakeLists.txt
rename to cmake_targets/autotests/015003/CMakeLists.txt
index 36a9eb75da8391cf560ac6a1210e6c7bcb10f517..47cf5074b5b067a9c8e75608e6c5757504ba46c0 100644
--- a/cmake_targets/autotests/010306/CMakeLists.txt
+++ b/cmake_targets/autotests/015003/CMakeLists.txt
@@ -5,7 +5,7 @@ set(RF_BOARD None)
 set(XFORMS False)
 
 set(DEBUG_PHY False)
-set(MU_RECIEVER Flase)
+set(MU_RECIEVER False)
 set(RANDOM_BF False)
 set(PBS_SIM False)
 set(PERFECT_CE False)
diff --git a/cmake_targets/autotests/015004/CMakeLists.txt b/cmake_targets/autotests/015004/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015004/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015005/CMakeLists.txt b/cmake_targets/autotests/015005/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015005/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015006/CMakeLists.txt b/cmake_targets/autotests/015006/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015006/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015007/CMakeLists.txt b/cmake_targets/autotests/015007/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015007/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015008/CMakeLists.txt b/cmake_targets/autotests/015008/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015008/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015009/CMakeLists.txt b/cmake_targets/autotests/015009/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015009/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015100/CMakeLists.txt b/cmake_targets/autotests/015100/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015100/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/015101/CMakeLists.txt b/cmake_targets/autotests/015101/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..47cf5074b5b067a9c8e75608e6c5757504ba46c0
--- /dev/null
+++ b/cmake_targets/autotests/015101/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8)
+set(PACKAGE_NAME "unitary_tests_simulators")
+set(PHYSIM True)
+set(RF_BOARD None)
+set(XFORMS False)
+
+set(DEBUG_PHY False)
+set(MU_RECIEVER False)
+set(RANDOM_BF False)
+set(PBS_SIM False)
+set(PERFECT_CE False)
+set(NAS_UE False)
+set(MESSAGE_CHART_GENERATOR False)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)
diff --git a/cmake_targets/autotests/README.txt b/cmake_targets/autotests/README.txt
index 24f3a71c8d78e2d9478d8b68a2a704aa472d4926..a370ae573d5d303868172b6c4bb601754d30b986 100644
--- a/cmake_targets/autotests/README.txt
+++ b/cmake_targets/autotests/README.txt
@@ -5,40 +5,141 @@ Obj.#   Case#   Test#	Description
 
 01                      pre-commit test case
 01      01              Build OAI 
-01      01      00      Check Makefiles and 
-01      01      01      Build oaisim Rel8
-01      01      02      Build oaisim Rel8 + network device driver(nasmesh_fix)	
-01      01      03      Build lte-softmode Rel8 	
-01      01      04      Build dlsim  Rel8
-01      01      05      Build ulsim  Rel8
-01      01      06      Build oaisim Rel10
-01      01      07      Build oaisim Rel8 with cellular RRC for eNB
-01      01      08      Build oaisim Rel8 with cellular RRC for UE
-01      01      09      "commented test in targets/TEST/OAI/case01.py"
-01      01      10      "commented test in targets/TEST/OAI/case01.py" 
-01      01      11      "commented test in targets/TEST/OAI/case01.py" 
-01      01      12      "commented test in targets/TEST/OAI/case01.py" 
-01      01      13      Build network device driver(oai_nw_drv type ethernet)
-01      01      14      Build oaisim Rel8 with RRC lite (new cellular+ITTI) + RAL (802.21) 
-01      01      15      Build oaisim Rel10 with RRC lite (new cellular+ITTI) + RAL (802.21) 
-
-01      02              Run OAI Rel8, and check the operation
-01      02      00      Run OAI Rel8, and search for segmentation fault or exit
-01      02      01      Run OAI Rel8, and search for execution errors
-01      02      02      Run OAI Rel8 in abstraction mode and check that RRC proc is finished completely for the configured number of eNB and UE
-01      02      03      Run OAI Rel8 in abstraction mode, send ping from from one eNB to each UE, and check that there is no packet losses
-01      02      04      Run OAI Rel8 with full PHY, and check that the RRC proc for eNBsxUEs
-01      02      05      Run OAI Rel8 with full PHY in FDD mode, and check that the RRC proc for eNBsxUEs
-
-01      03              Run OAI Rel10, and check the operation
-01      03      00      Run OAI Rel10, and search for segmentation fault or exit
-01      03      01      Run OAI Rel10, and search for execution errors
-01      03      02      Run OAI Rel10 in abstraction mode, and check the RRC proc for eNBsxUEs	
-01      03      03      Run OAI Rel10 in full phy mode, and check the RRC proc for eNBsxUEs
-01      03      04      Run OAI Rel10 in full phy mode in FDD mode, and check the RRC proc for eNBsxUEs
-01      03      05      Run OAI Rel10 with eMBMS enabled, and check the SIB13 and MCCH
-01      03      06      Run OAI Rel10 with eMBMS enabled, and check the MTCH
-01      03      07      Run OAI Rel10 with eMBMS enabled and FDD mode, and check the MTCH
+01      01      01      Build oaisim.Rel8
+01      01      02      Build oaisim.Rel10	
+01      01      03      Build oaisim_noS1.Rel10	
+01      01      10      Build lte-softmodem_noS1.USRP.Rel10
+01      01      11      Build lte-softmodem_noS1.EXMIMO.Rel10
+01      01      12      Build lte-softmodem_noS1.BLADERF.Rel10
+01      01      13      Build lte-softmodem_noS1.ETHERNET.Rel10
+01      01      20      Build lte-softmodem.USRP.Rel10
+01      01      21      Build lte-softmodem.EXMIMO.Rel10
+01      01      22      Build lte-softmodem.BLADERF.Rel10
+01      01      23      Build lte-softmodem.ETHERNET.Rel10
+
+01      01      30      Build (dlsim.Rel10 + ulsim.Rel10 + pucchsim.Rel10 + prachsim.Rel10 + pdcchsim.Rel10 + pbchsim.Rel10 + mbmssim.Rel10
+                        secu_knas_encrypt_eia1.Rel10 secu_kenb.Rel10 aes128_ctr_encrypt.Rel10 aes128_ctr_decrypt.Rel10 secu_knas_encrypt_eea2.Rel10
+                        secu_knas.Rel10 secu_knas_encrypt_eea1.Rel10 kdf.Rel10 aes128_cmac_encrypt.Rel10 secu_knas_encrypt_eia2.Rel10)
+
+01      01      40      Build RRH Gateway for USRP (Rel 10)
+01      01      41      Build RRH Gateway for EXMIMO  (Rel 10)
+01      01      42      Build RRH Gateway for BLADERF  (Rel 10)
+
+
+
+01      02              Run OAISIM-NOS1 Rel10 (TDD + 5MHz/10MHz/20MHz + TM 1,2), and check the operation
+01      02      00      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit
+01      02      01      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors
+01      02      02      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit
+01      02      03      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors
+01      02      04      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) without PHY_ABSTRACTION mode, ping from from eNB to UE,
+                        and for check for no packet losses
+01      02      05      Run OAISIM-NOS1 Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION  mode, send ping from from eNB to UE,
+                        and check for no packet losses
+
+01      03              Run OAISIM-NOS1 Rel10 (FDD + 5MHz/10MHz/20MHz + TM 1,2), and check the operation
+01      03      00      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 1 UE 1 eNB (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit
+01      03      01      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors
+01      03      02      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit
+01      03      03      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors
+01      03      04      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) without PHY_ABSTRACTION mode, ping from from eNB to UE,
+                        and for check for no packet losses
+01      03      05      Run OAISIM-NOS1 Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION  mode, send ping from from eNB to UE,
+                        and check for no packet losses
+
+
+
+01      04              OAISIM-NOS1 MBSFN Tests
+01      04      00      Check if eMBMS procedure is not finished completely, make sure that the SIB13/MCCH have been correclty received by UEs
+01      04      01      Check if eMBMS multicast/broadcast data is received, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs
+01      04      02      Check for eMBMS multicast/broadcast data received in fdd mode, make sure that the SIB13/MCCH/MTCH have been correctly
+                        received by UEs
+01      04      03      Check for eMBMS multicast/broadcast DF relaying working properly in fdd mode, make sure that the SIB13/MCCH/MTCH have been 
+                        correclty received by UEs
+
+
+01      50              Run PHY unitary secuirity tests
+01      50      00      test_aes128_cmac_encrypt
+01      50      01      test_aes128_ctr_decrypt
+01      50      02      test_aes128_ctr_encrypt
+01      50      03      test_secu_kenb
+01      50      04      test_secu_knas
+01      50      05      test_secu_knas_encrypt_eea1
+01      50      06      test_secu_knas_encrypt_eea2
+01      50      07      test_secu_knas_encrypt_eia1
+01      50      08      test_secu_knas_encrypt_eia2
+01      50      09      test_kdf
+        
+
+
+01      51              Run PHY simulator tests
+01      51      00      dlsim test cases (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB), 
+                        (Test 5: 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)),
+                        (Test 6: 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)),
+                        (Test 6b: 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)),
+                        (Test 7: 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)),
+                        (Test 7b: 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)),
+                        (Test 10: 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)),
+                        (Test 10b: 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)),
+                        (Test 11: 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%))
+		        (TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)),
+		        (TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
+01      51      01      ulsim Test cases. (Test 1, 5 MHz, FDD (MCS 5), AWGN, 6dB), 
+                        (Test 2, 5 MHz, FDD (MCS 16), AWGN , 12dB (70%)),
+                        (Test 3, 10 MHz, R3.FDD (MCS 5), AWGN, 6dB (70%)),
+                        (Test 4, 10 MHz, R3-1.FDD (MCS 16), AWGN, 12dB (70%)),
+                        (Test 5, 20 MHz, FDD (MCS 5), AWGN, 6dB (70%)),
+                        (Test 6, 20 MHz, FDD (MCS 16), AWGN, 12 dB (70%))
+01      51      02      pucchsim (TBD)
+01      51      03      prachsim (TBD)
+01      51      04      pdcchsim (TBD)
+01      51      05      pbchsim (TBD)
+01      51      06      mbmssim (TBD)
+
+
+01      55              lte-softmodem tests with USRP B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX, 2TX/2RX
+01      55      00      Band 7 FDD 5MHz UL Throughput for 60 sec for 1TX/1RX
+01      55      01      Band 7 FDD 10MHz UL Throughput for 60 sec for 1TX/1RX
+01      55      02      Band 7 FDD 20MHz UL Throughput for 60 sec for 1TX/1RX
+01      55      03      Band 7 FDD 5MHz DL Throughput for 60 sec for 1TX/1RX
+01      55      04      Band 7 FDD 10MHz DL Throughput for 60 sec for 1TX/1RX
+01      55      05      Band 7 FDD 20MHz DL Throughput for 60 sec for 1TX/1RX
+01      55      06      Band 7 FDD 5MHz UL Throughput for 60 sec for 2TX/2RX
+01      55      07      Band 7 FDD 10MHz UL Throughput for 60 sec for 2TX/2RX
+01      55      08      Band 7 FDD 20MHz UL Throughput for 60 sec for 2TX/2RX
+01      55      09      Band 7 FDD 5MHz DL Throughput for 60 sec for 2TX/2RX
+01      55      10      Band 7 FDD 10MHz DL Throughput for 60 sec for 2TX/2RX
+01      55      11      Band 7 FDD 20MHz DL Throughput for 60 sec for 2TX/2RX
+
+01      56              lte-softmodem tests with USRP B210  RF as eNB and  OAI EPC (eNB and EPC are on same machines) w/ Bandrich COTS UE
+
+
+01      57              lte-softmodem tests with USRP B210 RF as eNB and OAI EPC (eNB and EPC are on different machines) w/ Bandrich COTS UE
+
+01      58               lte-softmodem tests with USRP X310 RF as eNB and ALU EPC w/ Bandrich COTS UE for `TX/1RX, 2TX/2RX
+01      58      00      Band 7 FDD 5MHz UL Throughput for 60 sec for 1TX/1RX
+01      58      01      Band 7 FDD 10MHz UL Throughput for 60 sec for 1TX/1RX
+01      58      02      Band 7 FDD 20MHz UL Throughput for 60 sec for 1TX/1RX
+01      58      03      Band 7 FDD 5MHz DL Throughput for 60 sec for 1TX/1RX
+01      58      04      Band 7 FDD 10MHz DL Throughput for 60 sec for 1TX/1RX
+01      58      05      Band 7 FDD 20MHz DL Throughput for 60 sec for 1TX/1RX
+
+01      59              lte-softmodem tests with USRP X310  RF as eNB and  OAI EPC (eNB and EPC are on same machines) w/ Bandrich COTS UE
+
+01      61              lte-softmodem tests with USRP X310 RF as eNB and OAI EPC (eNB and EPC are on different machines) w/ Bandrich COTS UE
+
+01      61              lte-softmodem tests with EXMIMO RF as eNB and ALU EPC w/ Bandrich COTS UE for `TX/1RX, 2TX/2RX
+01      61      00      Band 7 FDD 5MHz UL Throughput for 60 sec for 1TX/1RX
+01      61      01      Band 7 FDD 10MHz UL Throughput for 60 sec for 1TX/1RX
+01      61      02      Band 7 FDD 20MHz UL Throughput for 60 sec for 1TX/1RX
+01      61      03      Band 7 FDD 5MHz DL Throughput for 60 sec for 1TX/1RX
+01      61      04      Band 7 FDD 10MHz DL Throughput for 60 sec for 1TX/1RX
+01      61      05      Band 7 FDD 20MHz DL Throughput for 60 sec for 1TX/1RX
+
+01      62              lte-softmodem tests with EXMIMO RF as eNB and OAI EPC (eNB and EPC are on same machines) w/ Bandrich COTS UE
+01      63              lte-softmodem tests with EXMIMO RF as eNB and  OAI EPC (eNB and EPC are on different machines) w/ Bandrich COTS UE
+
+01      64              lte-softmodem-noS1 tests
 
 02                      Functional test case
 
@@ -48,3 +149,10 @@ Obj.#   Case#   Test#	Description
  
 05                      Performance test case 
 
+
+#TODO: Add test cases for 10,20 MHz
+#TODO: Add test cases for TDD/FDD 
+#TODO: Test and compile seperately for Rel8/Rel10
+#TODO: Case03.py eMBMS test case
+
+
diff --git a/cmake_targets/autotests/core.py b/cmake_targets/autotests/core.py
new file mode 100644
index 0000000000000000000000000000000000000000..8881781144ddf2acd61bac0fd5942c53a33b4093
--- /dev/null
+++ b/cmake_targets/autotests/core.py
@@ -0,0 +1,350 @@
+#******************************************************************************
+
+#  Eurecom OpenAirInterface
+#  Copyright(c) 1999 - 2013 Eurecom
+
+#  This program is free software; you can redistribute it and/or modify it
+#  under the terms and conditions of the GNU General Public License,
+#  version 2, as published by the Free Software Foundation.
+
+#  This program is distributed in the hope 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
+#  this program; if not, write to the Free Software Foundation, Inc.,
+#  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+#  The full GNU General Public License is included in this distribution in
+#  the file called "COPYING".
+
+#  Contact Information
+#  Openair Admin: openair_admin@eurecom.fr
+#  Openair Tech : openair_tech@eurecom.fr
+#  Forums       : http://forums.eurecom.fsr/openairinterface
+#  Address      : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France
+
+#*****************************************************************************
+
+# \file core.py
+# \brief OAI core testing class that provides various primitives to send/recv cmd to openair class searching for patterns and process the responses and tag the test case as passed/failed/skipped 
+# \author Navid Nikaein
+# \date 2013
+# \version 0.1
+# @ingroup _test
+
+
+import pexpect
+import time
+import re
+import string
+import sys
+import os
+
+import openair
+import log
+
+class core:
+    def __init__(self):
+        self.send_cr = 1
+        self.expect_echo = 0
+        self.expect_response = 1
+        self.flag_errors = 1
+        self.log = None
+
+    def clean(self, obj):
+        if type(obj) is str:
+            return obj
+        else:
+            return repr(obj)
+
+    def mark(self, marker):
+        if self.log:
+            print >> self.log, "\n\n{" + marker + "}\n\n"
+            
+    def expected(self, expected, got):
+        return "================================= Failure ===================================\n"+\
+               "_________________________________ Expected __________________________________\n"+\
+               "--->" + expected + "<-\n" +\
+               "_________________________________ Received __________________________________\n"+\
+               "--->" + got + "<-\n" +\
+               "=============================================================================\n"
+
+    def unexpected(self, notexpected, got):
+        return "================================= Failure ===================================\n"+\
+               "__________________________ not expect to find _______________________________\n"+\
+               "---> " + self.clean(notexpected) + "\n" +\
+               "_________________________________ Received___________________________________\n"+\
+               "---> " + self.clean(got) + "\n" +\
+               "=============================================================================\n"
+
+    def failed(self, command, expect,debug):
+        time.sleep(2)
+        ret = "================================= Failure =================================\n"
+        ret +="_________________________________ Sent ____________________________________\n"
+        ret +="---> " + command + "\n"
+        ret +="______________________________Searching for _______________________________\n"
+        ret +="---> " + self.clean(expect) + "\n" 
+        if debug >= 1 : 
+            ret +="________________________________ Received _________________________________\n"
+            ret +="---> " + self.clean(self.oai.before) + "\n" 
+            ret +="_______________________________ Remaining _________________________________\n"
+            ret +="---> " + self.clean(self.oai.after) + "\n" 
+        ret +="===========================================================================\n"
+        return ret
+
+    def err(self, command):
+        return "============================ Error received ================================\n"+\
+               "__________________________________ Sent ____________________________________\n"+\
+               '---> ' + command + "\n"+\
+               "_________________________________ Error was ________________________________\n"+\
+               "---> " + self.oai.before + "\n" +\
+               "============================================================================\n"
+
+            
+    def wait_quiet(self, timeout=0.5):
+        while 1:
+            try:
+                self.oai.expect(['..*'], timeout=0.5)
+            except pexpect.TIMEOUT, e:
+                return
+#            print '[Flushing ' + self.oai.after + ']'
+
+    # **************************Send*****************************    
+    # 1) send a command and return, do not wait
+    # ************************************************************
+    def send_nowait(self, command, sudo=False):
+        rsp1 = self.prompt1
+        rsp2 = self.prompt2
+        if sudo == True:
+          command = 'echo \'' + self.password + '\' | sudo -S -E ' + command
+
+        self.wait_quiet()
+        if self.send_cr:
+            log.stats['cmd'] += 1
+            self.oai.sendline(command)
+        else:
+            self.oai.send(command)
+
+
+    # **************************Send*****************************    
+    # 1) send a command
+    # 2) wait for a return prompt. Don't capture the response.
+    # 3) Check for error or timeout.
+    # ************************************************************
+    def send(self, command,sudo=False, timeout = 50, rsp1=None, rsp2=None,debug=0):
+        if not rsp1:
+            rsp1 = self.prompt1
+        if not rsp2:
+            rsp2 = self.prompt2
+        self.wait_quiet()
+        if sudo == True:
+          command = 'echo \'' + self.password + '\' | sudo -S -E ' + command
+        if self.send_cr:
+            log.stats['cmd'] += 1
+            self.oai.sendline(command)
+        else:
+            self.oai.send(command)
+
+        if self.expect_echo:
+            #cmd = self.oai.expect([re.escape(command), pexpect.TIMEOUT], timeout=timeout);
+            cmd = self.oai.expect_exact([command, pexpect.TIMEOUT], timeout=timeout);
+            if cmd != 0:
+                raise log.err(self.failed(command, command,debug))
+
+        if self.expect_response:
+            #index = self.oai.expect([re.escape(rsp1), re.escape(rsp2),'%', pexpect.TIMEOUT], timeout=timeout)
+            index = self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout)
+
+            if index == 0 or index == 1:
+                return 'OK'
+            elif index == 2:
+                #self.oai.expect([re.escape(rsp1), re.escape(rsp2), pexpect.TIMEOUT], timeout=timeout)
+                self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout)
+                if self.flag_errors:
+                    raise log.err(self.err(command))
+                else:
+                    return 'OK'
+            else:
+                raise log.err(self.failed(command, rsp1 + ' or ' + rsp2,debug))
+
+    # **************************send_recv*************************    
+    # 1) send a command
+    # 2) wait for either rsp1 or rsp2 is found (normally prompts)
+    # 3) return everything seen before that
+    # ************************************************************
+    def send_recv(self, command, sudo=False, timeout=100, rsp1=None, rsp2=None,debug=0):
+        if not rsp1:
+            rsp1 = self.prompt1
+        if not rsp2:
+            rsp2 = self.prompt2
+        self.wait_quiet()
+        if sudo == True:
+          #command = 'echo \'' + self.password + '\' | sudo -S -E ' + command
+          command = 'echo \'' + '' + '\' | sudo -S -E bash -c \' ' + command + '\' '
+        if self.send_cr:
+            log.stats['cmd'] += 1
+            self.oai.sendline(command)
+        else:
+            self.oai.send(command)
+        #index = self.oai.expect([re.escape(rsp1), re.escape(rsp2), pexpect.TIMEOUT], timeout=timeout);
+        index = self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout);
+        if index == 0 or index == 1 :
+            return self.oai.before
+        else:
+            raise log.err(self.failed(command, rsp1 + ' or ' + rsp2,debug))
+
+           
+    # **************************send_expect*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expected pattern in the response
+    # 3) raise an error if not found
+    # **************************************************************
+    def send_expect(self, command, expect, sudo=False, delay = 50, rsp1=None, rsp2=None,debug=0):
+        if debug :
+            print command 
+            print expect 
+            print delay
+        rsp = self.send_recv(command, sudo, delay, rsp1, rsp2)
+        #print rsp
+        if  (rsp.find(expect) != -1):
+            return 'Ok'
+        
+        raise log.err(self.failed(command, expect,debug))
+
+           
+    # **************************send_expect_re*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expected pattern defined by a regular expression in the response
+    # 3) return a error if raise_err flag is set and re not found, otherwise return 'Ok'
+    # *****************************************************************
+    def send_expect_re(self, command, expect, sudo=False, raise_err=1, delay = 50, rsp1=None, rsp2=None,debug=0):
+        rsp = self.send_recv(command, sudo, delay, rsp1, rsp2)
+#        print rsp
+        match = re.compile(expect).search(rsp)
+        if match:
+            return match
+        if raise_err:
+            raise log.err(self.failed(command, expect,debug))
+        else :
+            return None
+        
+    # **************************send_expect*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expected pattern defined by a re in the response
+    # 3) return ok if not found
+    # **************************************************************
+    def send_expect_false(self, command, expect, sudo=False, delay = 5, rsp1=None, rsp2=None,debug=0):
+        rsp = self.send_recv(command, sudo, delay, rsp1, rsp2)
+    #    print rsp
+        if  (rsp.find(expect) == -1):
+            return 'OK'
+
+        raise log.err(self.failed(command, expect,debug))
+
+    
+    # **************************send_wait*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expected pattern in the response
+    # 3) retry for a numretries if not found
+    # 4) return an error if not found after the numtries
+    # 3) return the response if found
+    # **************************************************************
+    def send_wait(self, command, expect, sudo=False, numretries=3, rsp1=None, rsp2=None,debug=0):
+        timer = 0
+        for i in range(numretries):
+            rsp = self.send_recv(command, sudo, 10, rsp1, rsp2)
+            if  (rsp.find(expect) != -1):
+                return rsp;
+            time.sleep(2)
+            timer = timer+2
+        raise log.err(self.failed(command, expect,debug))
+    
+    # **************************send_wait_re*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expected pattern defined by a re in the response
+    # 3) retry for a numretries if not found
+    # 4) return an error if not found after the numtries
+    # 3) return the response if found
+    # **************************************************************
+    def send_wait_re(self, command, expect, sudo=False, numretries=3, rsp1=None, rsp2=None,debug=0):
+        timer = 0
+        for i in range(numretries):
+            rsp = self.send_recv(command,sudo)
+            if  re.compile(expect).search(rsp):
+#                print "Found in",i,"attempts"
+                return rsp;
+            time.sleep(2)
+            timer = timer+2
+        raise log.err(self.failed(command, expect,debug))
+    
+    # **************************send_wait_false*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expect pattern in the response
+    # 3) return the response if not found 
+    # 4) return an error if the pattern found after the numtries
+    # **************************************************************
+    def send_wait_false(self, command, expect, sudo=False, numretries=3, rsp1=None, rsp2=None,debug=0):
+        timer = 1
+        for i in range(numretries):
+            rsp = self.send_recv(command,sudo)
+            if (rsp.find(expect) == -1):
+                return rsp;
+            time.sleep(2)
+            timer = timer+2
+        raise log.err(self.failed(command, expect,debug))
+    
+    # **************************send_wait_false*************************    
+    # 1) send a command, and optionally specify a the time to wait
+    # 2) search for an expect pattern defined by a re in the response
+    # 3) return the response if not found 
+    # 4) return an error if the pattern found after the numtries
+    # **************************************************************
+    def send_wait_false_re(self, command, expect, sudo=False, numretries=3, rsp1=None, rsp2=None,debug=0):
+        timer = 0
+        for i in range(numretries):
+            rsp = self.send_recv(command,sudo)
+            if  not re.compile(expect).search(rsp):
+                return rsp;
+            time.sleep(2)
+            timer = timer+2
+        raise log.err(self.failed(command, expect,debug))
+    
+    # **************************find*************************    
+    # 1) find an exact pattern in a given string 
+    # 2) raise an error if not found
+    # **************************************************************
+    def find(self, string, pattern):
+        word = string.replace(pattern,'*','\*')
+        words = string.replace(word,' ','\s*')
+        if re.search(words,string):
+            pass
+        else:
+            raise log.err(string)
+            
+    
+    # **************************find_false**************************    
+    # 1) find an exact pattern in a given string 
+    # 2) raise an error if found
+    # **************************************************************
+    def find_false(self, string, pattern):
+        if string.find(pattern) != -1:
+            raise log.err(string)
+        
+    # **************************find_re*************************    
+    # 1) find an exact re  pattern in a given string 
+    # 2) raise an error if not found
+    # **************************************************************
+    def find_re(self, string, pattern):
+        if not re.compile(pattern).search(string):
+            raise log.err(string)
+        
+    # **************************find_false_re*************************    
+    # 1) find an exact re  pattern in a given string 
+    # 2) raise an error if found
+    # **************************************************************
+    def find_false_re(self, string, pattern):
+        if re.compile(pattern).search(string):
+            raise log.err(string)
+    
diff --git a/cmake_targets/autotests/log.py b/cmake_targets/autotests/log.py
new file mode 100644
index 0000000000000000000000000000000000000000..0b4baff3e98ba672730e11725d5c943bad1fb1d2
--- /dev/null
+++ b/cmake_targets/autotests/log.py
@@ -0,0 +1,206 @@
+#******************************************************************************
+
+#  Eurecom OpenAirInterface
+#  Copyright(c) 1999 - 2013 Eurecom
+
+#  This program is free software; you can redistribute it and/or modify it
+#  under the terms and conditions of the GNU General Public License,
+#  version 2, as published by the Free Software Foundation.
+
+#  This program is distributed in the hope 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
+#  this program; if not, write to the Free Software Foundation, Inc.,
+#  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+#  The full GNU General Public License is included in this distribution in
+#  the file called "COPYING".
+
+#  Contact Information
+#  Openair Admin: openair_admin@eurecom.fr
+#  Openair Tech : openair_tech@eurecom.fr
+#  Forums       : http://forums.eurecom.fsr/openairinterface
+#  Address      : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France
+
+#*****************************************************************************
+
+# \file log.py
+# \brief provides primitives and defines how the logs and statistics are generated
+# \author Navid Nikaein
+# \date 2013
+# \version 0.1
+# @ingroup _test
+
+import sys
+import re
+import time
+import datetime
+import array
+import xml.etree.ElementTree as ET
+
+
+debug = False
+docfile = ''
+start_time = time.time()
+testcase_starttime = start_time
+debug = 0
+stats = {'passed':0, 'failed':0, 'skipped':0, 'internal_errors':0, 'cmd':0}
+
+# xml result (jUnit like)
+xUnitTestsuites = ET.Element( 'testsuites' )
+xUnitTestsuite = ET.SubElement( xUnitTestsuites, 'testsuite' )
+xUnitTestsuite.set( 'name', 'OAI' )
+xUnitTestsuite.set( 'timestamp', datetime.datetime.fromtimestamp(start_time).strftime('%Y-%m-%dT%H:%M:%S') )
+xUnitTestsuite.set( 'hostname', 'localhost' )
+#xUnitSystemOut = ET.SubElement( xUnitTestsuite, 'system-out' )
+
+class bcolors:
+    header = '\033[95m'
+    okblue = '\033[94m'
+    okgreen = '\033[92m'
+    warning = '\033[93m'
+    fail = '\033[91m'
+    normal = '\033[0m'
+    
+    def __init__(self):
+        if not sys.stdout.isatty():
+            self.disable()
+
+    def disable(self):
+        self.header = ''
+        self.okblue = ''
+        self.okgreen = ''
+        self.warning = ''
+        self.fail = ''
+        self.normal = ''
+
+class err(Exception):
+    def __init__(self, value):
+        self.value = value
+    def __str__(self):
+        return repr(self.value)
+
+def writefile(logfile, message):   
+    F_testlog = open(logfile, 'a')
+    F_testlog.write(message + '\n')
+    F_testlog.close()
+
+
+def sleep(seconds):
+        time.sleep(seconds)
+
+def start():
+    """Start the timer for the following testcase."""
+    global testcase_starttime
+    testcase_starttime = time.time()
+
+def set_debug_level(level):
+    debug = level
+
+def statistics(logfile):
+    global start_time
+    
+    #if stats['passed'] == 0:
+     #   print "no test executed...exiting"
+      #  sys.exit()
+        
+    total_tests = stats['passed'] + stats['failed'] + stats['skipped']
+    total_ex_tests = stats['passed'] + stats['failed']
+    elapsed_time = time.gmtime(time.time() - start_time)
+    print '\n'
+    log_record('info', '===============================================')
+    log_record('info', 'Total tests performed                ' + repr(total_tests))
+    log_record('info', 'Tests passed                         ' + repr(stats['passed']))
+    log_record('info', 'Tests failed                         ' + repr(stats['failed']))
+    log_record('info', 'Tests skipped                        ' + repr(stats['skipped']))
+    log_record('info', '')
+    log_record('info', 'Total commands sent                  ' + repr(stats['cmd']))
+    log_record('info', 'Total elapsed time (h:m:s)           ' + time.strftime('%H:%M:%S', elapsed_time))
+    log_record('info', '===============================================')
+    log_record('info', 'Testing pass rate                    ' + repr((stats['passed'] * 100) / total_tests) + '%')
+    log_record('info', '===============================================')
+    
+    writefile(logfile, '\n=====================Results===================')
+    writefile(logfile, 'Total tests performed                ' + repr(total_tests))
+    writefile(logfile, 'Tests passed                         ' + repr(stats['passed']))
+    writefile(logfile, 'Tests failed                         ' + repr(stats['failed']))
+    writefile(logfile, 'Tests skipped                        ' + repr(stats['skipped']))
+    writefile(logfile, '')
+    writefile(logfile, 'Total commands sent                  ' + repr(stats['cmd']))
+    writefile(logfile, 'Total elapsed time (h:m:s)           ' + time.strftime('%H:%M:%S', elapsed_time))
+    writefile(logfile, '===============================================')
+    writefile(logfile, 'Testing pass rate                    ' + repr((stats['passed'] * 100) / total_tests) + '%')
+    writefile(logfile, '===============================================\n')
+    
+    xUnitTestsuite.set( 'tests', repr(total_tests) )
+    xUnitTestsuite.set( 'failures', repr(stats['failed']) )
+    xUnitTestsuite.set( 'skipped', repr(stats['skipped']) )
+    xUnitTestsuite.set( 'errors', '0' )
+    time_delta = datetime.datetime.now() - datetime.datetime.fromtimestamp(start_time)
+    xUnitTestsuite.set( 'time', repr(time_delta.total_seconds()) )
+    writefile( logfile + '.xml', ET.tostring( xUnitTestsuites, encoding="utf-8", method="xml" ) )
+
+def log_record(level, message):
+    ts = time.strftime('%d %b %Y %H:%M')
+    message = ts + ' [' + level + '] ' + message
+    if level == 'passed' : 
+        print bcolors.okgreen + message + bcolors.normal
+    elif   level == 'failed' :   
+        print bcolors.fail + message  + bcolors.normal
+    elif   level == 'skipped' :   
+        print bcolors.warning + message  + bcolors.normal
+    else : 
+        print message
+
+def fail(case, testnum, testname, conf,  message, diag, output,trace):
+#    report(case, testnum, testname, conf, 'failed', output, diag, message)
+    report(case, testnum, testname, conf, 'failed', output, diag)
+    log_record('failed', case + testnum + ' : ' + testname  + ' ('+ conf+')')
+    if message :
+        log_record('failed', "Output follows:\n" + message )  
+    if trace :
+        log_record('failed', "trace file can be found in " + trace + "\n" )  
+    stats['failed'] += 1
+
+def failquiet(case, testnum, testname, conf):
+    log_record('failed', case + testnum + ' :' + testname + ' ('+ conf+')')
+    stats['failed'] += 1
+    
+def ok(case, testnum, testname, conf, message, output):
+    report(case, testnum, testname, conf, 'passed', output)
+    log_record('passed', case + testnum + ' : ' + testname + ' ('+ conf+')')
+    if message :
+        print bcolors.okgreen + message + bcolors.normal 
+    stats['passed'] += 1
+    
+        
+def skip(case, testnum, testname, conf, message=None, diag=None, output=None):
+    log_record('skipped', case + testnum + ' :' + testname + ' ('+ conf+')')
+    report(case, testnum, testname, conf, 'skipped', output, diag)
+    if message :
+        log_record('skipped', "Output follows:\n" + message )
+    if diag : 
+        log_record('skipped', "Diagnostic: \n" + diag )
+    stats['skipped'] += 1
+
+    
+def report(case, test, name, conf, status, output, diag=None, desc=None):
+    writefile (output, '[' +status+ '] ' + case + test + ' : ' + name + ' ('+ conf+')')
+    if diag : 
+        writefile (output, '-------> ' + diag)
+    if desc:
+        writefile(output, desc)
+    #log_record('report', + case + test + ' documented')
+    e = ET.SubElement( xUnitTestsuite, 'testcase' )
+    e.set( 'name', case + '_' + test + '_' + name )
+    e.set( 'classname', 'shellscript' )
+    e.set( 'time', repr( time.time() - testcase_starttime ) )
+    if status == 'failed':
+        e = ET.SubElement( e, 'failure' )
+        e.set( 'message', 'failed' )
+        e.text = diag
+    if status == 'skipped':
+        e = ET.SubElement( e, 'skipped' )
diff --git a/cmake_targets/autotests/openair.py b/cmake_targets/autotests/openair.py
new file mode 100644
index 0000000000000000000000000000000000000000..e8d07ba1e1f1c36ce623a515da32366a2afc766b
--- /dev/null
+++ b/cmake_targets/autotests/openair.py
@@ -0,0 +1,266 @@
+#******************************************************************************
+
+#  Eurecom OpenAirInterface
+#  Copyright(c) 1999 - 2013 Eurecom
+
+#  This program is free software; you can redistribute it and/or modify it
+#  under the terms and conditions of the GNU General Public License,
+#  version 2, as published by the Free Software Foundation.
+
+#  This program is distributed in the hope 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
+#  this program; if not, write to the Free Software Foundation, Inc.,
+#  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+#  The full GNU General Public License is included in this distribution in
+#  the file called "COPYING".
+
+#  Contact Information
+#  Openair Admin: openair_admin@eurecom.fr
+#  Openair Tech : openair_tech@eurecom.fr
+#  Forums       : http://forums.eurecom.fsr/openairinterface
+#  Address      : Eurecom, Compus SophiaTech 450, route des chappes, 06451 Biot, France
+
+#*****************************************************************************
+
+# \file openair.py
+# \brief class that define the oaisim class and its attributes
+# \author Navid Nikaein
+# \date 2013
+# \version 0.1
+# @ingroup _test
+
+import pexpect
+import pxssh
+import time
+import os
+import array
+import shutil
+import subprocess 
+import sys
+import traceback
+import time
+# import call
+
+from core import *
+
+SHELL = '/bin/bash'
+
+class openair(core):
+    def __init__(self, hostname, address):
+        self.error = '% '
+        self.hostname = hostname
+        self.address = address
+        self.localhost = None
+        core.__init__(self)
+              
+    @property        
+    def localhost(self):
+        if self.localhost :
+            return self.localhost 
+        elif self.hostname in ['localhost', '127.0.0.7', '::1'] :
+            self.localhost = self.hostname
+        return self.localhost
+
+    @localhost.setter
+    def localhost(self,localhost):
+        self.localhost = localhost
+
+    def shcmd(self,cmd,sudo=False):
+        
+        if sudo:
+            cmd = "sudo %s" % command
+        
+        proc = subprocess.Popen(command, shell=True, 
+                             stdout = subprocess.PIPE, 
+                             stderr = subprocess.PIPE)
+                       
+        stdout, stderr = proc.communicate()
+        return (stdout, stderr)
+
+    def connect(self, username, password, prompt='PEXPECT_OAI'):
+     while True:  
+        self.prompt1 = prompt
+        self.prompt2 = prompt
+        self.password = '' 
+        # WE do not store the password when sending commands for secuirity reasons. The password might be accidentally logged in such cases.
+        #The password is used only to make ssh connections. In case user wants to run programs with sudo, then he/she needs to add following line in /etc/sudoers
+        # your_user_name  ALL=(ALL:ALL) NOPASSWD: ALL
+        try:
+            if  not username:
+                username = root 
+            if  not password:
+                password = username 
+            self.oai = pxssh.pxssh()
+            self.oai.login(self.address,username,password)
+            self.oai.sendline('PS1='+self.prompt1)
+            self.oai.PROMPT='PEXPECT_OAI'
+            # need to look for twice the string of the prompt
+            self.oai.prompt()
+            self.oai.prompt()
+            self.oai.sendline('uptime')
+            self.oai.prompt()
+            print self.oai.before
+            break
+        except Exception, e:
+            error=''
+            error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+            error = error + traceback.format_exc()
+            print error
+            print "Retrying again in 60 seconds"
+            time.sleep(60)
+            #sys.exit(1)
+                
+    def connect2(self, username, password, prompt='$'):
+        self.prompt1 = prompt
+        self.prompt2 = prompt
+        self.password = password     
+        while 1:
+            try:
+                if  not username:
+                    username = root 
+                if  not password:
+                    password = username 
+                    
+                self.oai = pexpect.spawn('ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "ConnectionAttempts=1" ' \
+                                             + username + '@' + self.address)
+                
+                index = self.oai.expect([re.escape(self.prompt1), re.escape(self.prompt2), pexpect.TIMEOUT], timeout=40)
+                if index == 0 :
+                    return 'Ok'
+                else :
+                    index = self.oai.expect(['password:', pexpect.TIMEOUT], timeout=40)
+                    if index == 0 : 
+                        self.oai.sendline(password)
+                        index = self.oai.expect([re.escape(self.prompt1), re.escape(self.prompt2), pexpect.TIMEOUT], timeout=10)
+                        if index != 0:
+                            print 'ERROR! could not login with SSH.'
+                            print 'Expected ' + self.prompt1 + ', received >>>>' + self.oai.before + '<<<<'
+                            sys.exit(1) 
+                    return 'Ok'
+                        
+            except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               sys.exit(1)
+
+    def connect_localshell(self, prompt='$'):
+        self.prompt1 = prompt
+        self.prompt2 = prompt
+
+        while 1:
+            try:
+                # start a shell and use the current environment
+                self.oai = pexpect.spawn('bash --norc --noprofile')
+                
+                index = self.oai.expect([re.escape(self.prompt1), re.escape(self.prompt2), pexpect.TIMEOUT], timeout=40)
+                if index == 0 :
+                    return 'Ok'
+                else :
+                    sys.exit(1)
+
+            except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               sys.exit(1)
+
+    def disconnect(self):
+        print 'disconnecting the ssh connection to ' + self.address + '\n'
+        self.oai.send('exit')
+#        self.cancel()
+
+    def kill(self, user, pw):
+        try:
+            if user == 'root' :
+                os.system('pkill oaisim oaisim_nos1')
+                os.system('pkill cc1') 
+                time.sleep(1)
+                os.system('pkill oaisim oaisim_nos1')
+            else :
+                os.system('echo '+pw+' | sudo -S pkill oaisim oaisim_nos1')
+                os.system('echo '+pw+' | sudo -S pkill cc1') 
+                time.sleep(1)
+                os.system('echo '+pw+' | sudo -S pkill oaisim oaisim_nos1')
+        except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               #sys.exit(1)
+            
+    def rm_driver(self,oai,user, pw):
+        try:
+            if user == 'root' : 
+                #oai.send_nowait('rmmod nasmesh;')
+                os.system('rmmod nasmesh;')
+            else :
+                oai.send_nowait('echo '+pw+ ' | sudo -S rmmod nasmesh;')
+                #os.system('echo '+pw+ ' | sudo -S rmmod nasmesh;')
+        except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               #sys.exit(1)
+   
+    def driver(self,oai,user,pw):
+        #pwd = oai.send_recv('pwd') 
+        oai.send('cd $OPENAIR_TARGETS;')   
+        oai.send('cd SIMU/USER;')   
+        try:
+            if user == 'root' : 
+                oai.send_nowait('insmod ./nasmesh.ko;')
+            else :
+                oai.send('echo '+pw+ ' | sudo -S insmod ./nasmesh.ko;')
+                
+        except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               #sys.exit(1)
+    
+    def cleandir (self, logdir,debug) :
+        
+        for filename in os.listdir(logdir):
+            filepath = os.path.join(logdir, filename)
+            if debug == 2 :
+                print 'logdir is ' + logdir
+                print 'filepath is ' + filepath 
+            try:
+                shutil.rmtree(filepath)
+            except Exception, e:
+               error=''
+               error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+               error = error + traceback.format_exc()
+               print error
+               #sys.exit(1)
+               #print 'Could not remove the filepath'+ filepath + ' with error ' + OSError
+    
+    def create_dir(self,dirname,debug) :
+        if not os.path.exists(dirname) :
+            try:
+                os.makedirs(dirname,0755)
+            except OSError:
+                # There was an error on creation, so make sure we know about it
+                raise            
+    def cpu_freq(self):
+        freq=0
+        proc = subprocess.Popen(["cat","/proc/cpuinfo"],
+                                stdout=subprocess.PIPE)
+        out, err = proc.communicate()
+        
+        for line in out.split("\n"):
+            if "cpu MHz" in line:
+                freq = float(line.split(":")[1])
+                break 
+            
+        return freq 
diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash
index 9a2a86ed41d4ecd6140bc9cc4f4e48d24e31f5cc..836a8c197afea8a0fbb9ae763506f29ac7f4fa76 100755
--- a/cmake_targets/autotests/run_exec_autotests.bash
+++ b/cmake_targets/autotests/run_exec_autotests.bash
@@ -7,12 +7,16 @@ else
    exit 1
 fi
 
+trap handle_ctrl_c INT
+
 source $OPENAIR_DIR/cmake_targets/tools/test_helper
 
+
 #SUDO="sudo -E "
 tdir=$OPENAIR_DIR/cmake_targets/autotests
-mkdir -p $tdir/bin $tdir/log
-results_file="$tdir/log/execution_autotests.xml"
+rm -fr $tdir/bin 
+mkdir -p $tdir/bin
+results_file="$tdir/log/results_autotests.xml"
 
 updated=$(svn st -q $OPENAIR_DIR)
 if [ "$updated" != "" ] ; then
@@ -21,7 +25,6 @@ fi
 
 cd $tdir 
 
-
 #\param $1 -> name of test case
 #\param $2 -> name of compilation program
 #\param $3 -> arguments for compilation program
@@ -32,12 +35,16 @@ cd $tdir
 #\param $8 -> search expression
 #\param $9 -> search expression which should NOT be found (for ex. segmentation fault) 
 #\param $10 -> number of runs
+#\param $11 -> pre_compile program execution
+#\param $12 -> class of the test case (compilation, execution)
+#\param $13 -> output of compilation program that needs to be found for test case to pass
+#\param $14 -> tags to help identify the test case for readability in output xml file
+function test_compile() {
 
-test_compile_and_run() {
     xUnit_start
-    test_case_name=$1.$2
-    log_dir=$tdir/log
-    log_file=$tdir/log/test.$1.txt
+    test_case_name=$1
+    log_dir=$tdir/log/$test_case_name
+    log_file=$log_dir/test.$1.log.txt
     compile_prog=$2
     compile_args=$3
     pre_exec_file=$4
@@ -46,197 +53,470 @@ test_compile_and_run() {
     search_expr_array=("${!8}")
     search_expr_negative=$9
     nruns=${10}
-    build_dir=$tdir/$1/build
-    exec_file=$build_dir/$6
+    pre_compile_prog=${11}
+    class=${12}
+    compile_prog_out=${13}
+    tags=${14}
+    xmlfile_testcase=$log_dir/test.$1.xml
+    #build_dir=$tdir/$1/build
+    #exec_file=$build_dir/$6
     
+    #compile_prog_out=`eval "echo $compile_prog_out"`
+    #echo "compile_prog_out = $compile_prog_out"
+    read -a compile_prog_out_array <<< "$compile_prog_out"
+
     #Temporary log file where execution log is stored.
     temp_exec_log=$log_dir/temp_log.txt
-    
-    echo "Compiling test case $test_case_name. Log file = $log_file"
+    rm -fr $log_dir
+    mkdir -p $log_dir
+
 
-    rm -fr $build_dir
-    mkdir -p $build_dir
 
     #echo "log_dir = $log_dir"
     #echo "log_file = $log_file"
     #echo "exec_file = $exec_file"
-    #echo "args = $args"
+    #echo "exec_args = $exec_args"
     #echo "search_expr = $search_expr"
     #echo "pre_exec_file = $pre_exec_file"
     #echo "nruns = $nruns"
+    echo "class = $class"
     
-
- 
-
-    echo "<COMPILATION LOG>" > $log_file
-    cd $build_dir
-    {
-        cmake ..
-        #rm -fv $exec_file
-        make -j`nproc` $compile_prog
-    }>> $log_file 2>&1
-    echo "</COMPILATION LOG>" >> $log_file 2>&1
-
+    compile_prog_array=()
+    read -a compile_prog_array <<<"$compile_prog"
+    
+    #tags_array=()
+    #read -a tags_array <<<"$tags"
+    
+    #pre_compile_prog_array=()
+    #readarray -t pre_compile_prog_array <<< "$pre_compile_prog"
+    result=1
+    result_string=""
     for (( run_index=1; run_index <= $nruns; run_index++ ))
-     do
-
-     echo "Executing test case $test_case_name, Run Index = $run_index, Log file = $log_file"
-
-     echo "-----------------------------------------------------------------------------" >> $log_file  2>&1
-     echo "<EXECUTION LOG Run = $run_index >" >> $log_file  2>&1
- 
-     if [ -n "$pre_exec_file" ]; then
-       { source $pre_exec_file $pre_exec_args; } >> $log_file  2>&1
-     fi
-
-     { $exec_file $exec_args ;} > $temp_exec_log  2>&1
-
-     cat $temp_exec_log >> $log_file  2>&1
-     echo "</EXECUTION LOG Run = $run_index >" >> $log_file  2>&1
+    do
+       
+    #tags_array_index=0
+    #for pre_compile_prog_array_index in "${pre_compile_prog_array[@]}"  
+    #do
     
-     result=1
-     for search_expr in "${search_expr_array[@]}"
-     do
-     
-       search_result=`grep -E "$search_expr" $temp_exec_log`
-
-       #echo "search_expr  =   $search_expr"
-       #echo "search_result = $search_result"
+    #for compile_prog_array_index in "${compile_prog_array[@]}"  
+    #do
+       echo "Compiling test case $test_case_name.${tags} Log file = $log_file"  
+       date=`date`
+       echo "<COMPILATION LOG file=$test_case_name.${tags} , Run = $run_index>, Date = $date " >> $log_file
+       #rm -fr $build_dir
+       #mkdir -p $build_dir
+       cd $log_dir
+       {   
+          uname -a
+          compile_log_dir=`eval echo \"$OPENAIR_DIR/cmake_targets/log/\"`
+          echo "Removing compilation log files in $compile_log_dir"
+          rm -frv $compile_log_dir
+          echo "Executing $compile_prog $compile_prog_args ...."
+          eval $compile_prog  $compile_prog_args
+          echo "Copying compilation log files to test case log directory: $log_dir"
+          cp -fvr $OPENAIR_DIR/cmake_targets/log/ $log_dir/compile_log
+       }>> $log_file 2>&1
+       echo "</COMPILATION LOG>" >> $log_file 2>&1
+       if [ "$class" == "compilation" ]; then
+         for compile_prog_out_index in ${compile_prog_out_array[@]}
+            do 
+                if  [ -s "$compile_prog_out_index" ]; then
+                    let "result = result&1"
+                    
+                    echo_success "$test_case_name.${tags} RUN = $run_index $compile_prog_out_index = compiled"
+                    
+                else
+                    let "result = result&0"
+                            
+                    echo_error "$test_case_name.${tags} RUN = $run_index $compile_prog_out_index failed"
+                    
+                 fi
+            done #end of for loop compile_prog_out_index
+         if [ "$result" == "1" ]; then
+            result_string=$result_string" Run_$run_index = PASS"
+         else   
+            result_string=$result_string" Run_$run_index = FAIL"           
+         fi
 
-       if [ -z "$search_result" ]; then
-          let "result = result & 0"
-       else
-          let "result = result & 1"
        fi
-     done
+       #let "tags_array_index++"
+    #done # End of for loop compile_prog_array
+    #done # End of for loop (pre_compile_prog_array_index)
+    done #End of for loop (run_index)
+    
+   
+    #If for for some reason upper for loop does not execute, we fail the test case completely
+    if [ "$result_string" == "" ]; then
+      result=0
+    fi
+    if [ "$result" == "1" ]; then
+      echo_success "$test_case_name.${tags} PASSED"
+      xUnit_success "compilation" "$test_case_name.$tags" "PASS" "$result_string" "$xmlfile_testcase"
+    else             
+      echo_error "$test_case_name.${tags} FAILED"
+      xUnit_fail "compilation" "$test_case_name.$tags" "FAIL" "$result_string" "$xmlfile_testcase"
+    fi
+}
 
-     #echo "result = $result"
 
-     test_case_result=""
-     if [ "$result" -eq "0" ]; then
-        test_case_result="FAIL"
-     fi
 
-     if [ "$result" -eq "1" ]; then
-        test_case_result="PASS"
-     fi
+#\param $1 -> name of test case
+#\param $2 -> name of compilation program
+#\param $3 -> arguments for compilation program
+#\param $4 -> name of pre-executable to install kernel modules, etc
+#\param $5 -> arguments of pre-executable
+#\param $6 -> name of executable
+#\param $7 -> arguments for running the program
+#\param $8 -> search expression
+#\param $9 -> search expression which should NOT be found (for ex. segmentation fault) 
+#\param $10 -> number of runs
+#\param $11 -> pre_compile program execution
+#\param $12 -> class of the test case (compilation, execution)
+#\param $13 -> output of compilation program that needs to be found for test case to pass
+#\param $14 -> tags to help identify the test case for readability in output xml file
+#\param $15 => password for the user to run certain commands as sudo
 
-     #If we find a negative search result then there is crash of program and test case is failed even if above condition is true
+function test_compile_and_run() {
+    xUnit_start
+    test_case_name=$1
+    log_dir=$tdir/log/$test_case_name
+    log_file=$log_dir/test.$1.log.txt
+    compile_prog=$2
+    compile_args=$3
+    pre_exec_file=$4
+    pre_exec_args=$5
+    main_exec=$6
+    exec_args=$7
+    search_expr_array=("${!8}")
+    search_expr_negative=$9
+    nruns=${10}
+    pre_compile_prog=${11}
+    class=${12}
+    compile_prog_out=${13}
+    tags=${14}
+    mypassword=${15}
+    build_dir=$tdir/$1/build
+    #exec_file=$build_dir/$6
+    xmlfile_testcase=$log_dir/test.$1.xml
+    #Temporary log file where execution log is stored.
+    temp_exec_log=$log_dir/temp_log.txt
+    
+    rm -fr $log_dir
+    mkdir -p $log_dir
+    
+    rm -fr $OPENAIR_DIR/cmake_targets/log
 
-     search_result=`grep -iE "$search_expr_negative" $temp_exec_log`
-     if [ -n "$search_result" ]; then
-        test_case_result="FAIL"
-     fi
+    echo "" > $temp_exec_log
+    echo "" > $log_file
+    #echo "log_dir = $log_dir"
+    #echo "log_file = $log_file"
+    #echo "exec_file = $exec_file"
+    #echo "exec_args = $exec_args"
+    #echo "search_expr = $search_expr"
+    #echo "pre_exec_file = $pre_exec_file"
+    #echo "nruns = $nruns"
+    echo "class = $class"
+    
+    #compile_prog_array=()
+    #read -a compile_prog_array <<<"$compile_prog"
+  
+    tags_array=()
+    read -a tags_array <<<"$tags"
+    
+    main_exec_args_array=()
+    readarray -t main_exec_args_array <<< "$exec_args"
+    
+    
+    #for search_expr in "${compile_prog_array[@]}"  
+    #do
+       echo "Compiling test case $test_case_name Log file = $log_file"  
+       echo "<COMPILATION LOG file=$log_file>" >> $log_file
+
+       #rm -fr $build_dir
+       #mkdir -p $build_dir
+
+       cd $log_dir
+       {   
+          uname -a
+          #eval $pre_compile_prog
+          #cmake ..
+          #rm -fv $exec_file
+          echo "Executing $compile_prog $compile_args" >> $log_file
+          eval "$compile_prog $compile_args"
+          echo "Copying compilation log files to test case log directory: $log_dir"
+          cp -fvr $OPENAIR_DIR/cmake_targets/log/ $log_dir/compile_log
+       }>> $log_file 2>&1
+       echo "</COMPILATION LOG>" >> $log_file 2>&1
+    #done
+
+    #process the test case if it is that of execution
+    if [ "$class" == "execution" ]; then
+      tags_array_index=0
+      for main_exec_args_array_index in "${main_exec_args_array[@]}"  
+      do
+        global_result=1
+        result_string=""
+        
+       for (( run_index=1; run_index <= $nruns; run_index++ ))
+        do
+          temp_exec_log=$log_dir/test.$test_case_name.${tags_array[$tags_array_index]}.run_$run_index
+          echo "" > $temp_exec_log
+
+          echo "Executing test case $test_case_name.${tags_array[$tags_array_index]}, Run Index = $run_index, Execution Log file = $temp_exec_log"
+
+          echo "-----------------------------------------------------------------------------" >> $temp_exec_log  2>&1
+          echo "<EXECUTION LOG Test Case = $test_case_name.${tags_array[$tags_array_index]}, Run = $run_index >" >> $temp_exec_log  2>&1
+           
+          if [ -n "$pre_exec_file" ]; then
+            {  echo " Executing $pre_exec_file $pre_exec_args " 
+               eval " echo '$mypassword' |sudo -S -E $pre_exec_file $pre_exec_args " ; }>> $temp_exec_log  2>&1
+
+          fi
+          echo "Executing $main_exec $main_exec_args_array_index "
+          echo "Executing $main_exec $main_exec_args_array_index " >> $temp_exec_log
+          { uname -a ; eval "$main_exec $main_exec_args_array_index" ;} >> $temp_exec_log  2>&1
+
+          echo "</EXECUTION LOG Test Case = $test_case_name.${tags_array[$tags_array_index]},  Run = $run_index >" >> $temp_exec_log  2>&1
+          cat $temp_exec_log >> $log_file  2>&1
+          
+    
+          result=1
+          for search_expr in "${search_expr_array[@]}"
+          do
      
-     if [ "$test_case_result" == "FAIL" ]; then
-        echo_error "execution $test_case_name  FAIL $run_index"
-        xUnit_fail "execution" "$test_case_name" "FAIL" "$run_index"
-     fi
-
-     if [ "$test_case_result" == "PASS" ]; then
-        echo_success "execution $test_case_name  PASS $run_index"
-	xUnit_success "execution" "$test_case_name" "PASS" "$run_index"        
-     fi
-
-# End of for loop
-    done
+            search_result=`grep -E "$search_expr" $temp_exec_log`
+
+            #echo "search_expr  =   $search_expr"
+            #echo "search_result = $search_result"
+
+            if [ -z "$search_result" ]; then
+              let "result = result & 0"
+            else
+              let "result = result & 1"
+            fi
+          done
+          
+          #If we find a negative search result then there is crash of program and test case is failed even if above condition is true
+          search_result=`grep -iE "$search_expr_negative" $temp_exec_log`
+          if [ -n "$search_result" ]; then
+            result=0
+          fi
+          let "global_result = global_result & result"
+
+          #echo "result = $result"
+          
+          #this is a result of this run
+          #test_case_result=""
+          if [ "$result" -eq "0" ]; then
+            result_string=$result_string" Run_$run_index =FAIL"
+            echo_error "$test_case_name.${tags_array[$tags_array_index]} RUN = $run_index Result = FAIL"
+          fi
+
+          if [ "$result" -eq "1" ]; then
+            result_string=$result_string" Run_$run_index =PASS"
+            echo_success "$test_case_name.${tags_array[$tags_array_index]} RUN = $run_index Result = PASS"
+          fi
+
+          
+        done #End of for loop (nindex)
+
+       echo " Result String = $result_string" 
+
+       if [ "$result_string" == "" ]; then
+           echo_error "execution $test_case_name.$compile_prog.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = FAIL"
+	   xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
+       else
+        if [ "$global_result" == "0" ]; then
+           echo_error "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\" Result =  FAIL"
+           xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
+        fi
+
+        if [ "$global_result" == "1" ]; then
+            echo_success "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = PASS "
+	    xUnit_success "execution" "$test_case_name.${tags_array[$tags_array_index]}" "PASS" "$result_string"   "$xmlfile_testcase"     
+        fi  
+       fi
 
+       let "tags_array_index++"
+     done 
+   fi
+   rm -fr $build_dir
 }
 
 dbin=$OPENAIR_DIR/cmake_targets/autotests/bin
 dlog=$OPENAIR_DIR/cmake_targets/autotests/log
 
-run_test() {
-case=case$1; shift
-cmd=$1; shift
-expected=$3; shift
-echo "expected = $expected"
-exit
 
-$cmd > $dlog/$case.txt 2>&1
-if [ $expected = "true" ] ; then	 
-  if $* $dlog/$case.txt; then
-    echo_success "test $case, command: $cmd ok"
-  else
-    echo_error "test $case, command: $cmd Failed"
-  fi
-else 
-  if $* $dlog/$case.txt; then
-    echo_error "test $case, command: $cmd Failed"
-  else
-    echo_success "test $case, command: $cmd ok"
-  fi
-fi
+function print_help() {
+ echo_info '
+This program runs automated test case system for OpenAirInterface
+You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
+Options
+-h | --help
+   This help
+-g | --run-group
+   Run test cases in a group. For example, ./run_exec_autotests "0101* 010102"
+-p
+   Use password for logging
+'
 }
 
-#$1 -> name of test case
-#$2 -> name of compilation program
-#$3 -> arguments for compilation program
-#$4 -> name of pre-executable to install kernel modules, etc
-#$5 -> arguments of pre-executable
-#$6 -> name of executable
-#$7 -> arguments for running the program
-#$8 -> search expression ARRAY which needs to be found
-#$9 -> search expression which should NOT be found (for ex. segmentation fault) 
-#$10 -> number of runs
-
-#oaisim tests
-search_array=("Received RRCConnectionReconfigurationComplete from UE 0")
-test_compile_and_run 010200 "oaisim_nos1" "" "$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1" "" "oaisim_nos1" " -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -b1 -u1 -n100" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-search_array=("Received RRCConnectionReconfigurationComplete from UE 0")
-test_compile_and_run 010201 "oaisim_nos1" "" "$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1" "" "oaisim_nos1" " -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -b1 -u1 -a -n100" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-search_array=("Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2")
-test_compile_and_run 010202 "oaisim_nos1" "" "$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1" "" "oaisim_nos1" " -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -b1 -u3 -n100" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-search_array=("Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2")
-test_compile_and_run 010203 "oaisim_nos1" "" "$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1" "" "oaisim_nos1" " -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -b1 -u3 -a -n100" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-#PHY unitary simulations for secuirity tests
-search_array=("finished with 0 errors")
-test_compile_and_run 010300 "test_aes128_cmac_encrypt" "" "" "" "test_aes128_cmac_encrypt" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-search_array=("finished with 0 errors")
-test_compile_and_run 010301 "test_aes128_ctr_decrypt" "" "" "" "test_aes128_ctr_decrypt" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
-
-search_array=("finished with 0 errors")
-test_compile_and_run 010302 "test_aes128_ctr_encrypt" "" "" "" "test_aes128_ctr_encrypt" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
+function main () {
+RUN_GROUP=0
+SET_PASSWORD=0
+passwd=""
+test_case_group=""
+test_case_group_array=()
+test_case_array=()
+echo_info "Note that the user should be sudoer for executing certain commands, for example loading kernel modules"
+
+
+until [ -z "$1" ]
+  do
+    case "$1" in
+       -g | --run-group)
+            RUN_GROUP=1
+            test_case_group=$2
+            echo_info "Will execute test cases only in group $test_case_group"
+            shift 2;;
+        -p)
+            SET_PASSWORD=1
+            passwd=$2
+            shift 2;;
+        -h | --help)
+            print_help
+            exit 1;;
+	*)
+	    print_help
+            echo_fatal "Unknown option $1"
+            break;;
+   esac
+  done
+
+if [ "$SET_PASSWORD" == "1" ]; then
+   mypassword=$passwd
+else
+   read -s -p "Enter Password: " mypassword
+fi
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010303 "test_secu_kenb" "" "" "" "test_secu_kenb" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
+tmpfile=`mktemp`
+echo \'$passwd\' | $SUDO echo $HOME >& $tmpfile
+tstsudo=`cat $tmpfile`
+if [ "$tstsudo" != "$HOME" ]; then
+  echo "$USER might not have sudo privileges. Exiting" 
+  exit
+else
+  echo "$USER has sudo privileges"
+fi
+echo "tstsudo = $tstsudo"
+rm -fr $tmpfile
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010304 "test_secu_knas" "" "" "" "test_secu_knas" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
+xml_conf="$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml"
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010305 "test_secu_knas_encrypt_eea1" "" "" "" "test_secu_knas_encrypt_eea1" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal"  3
+test_case_list=`xmlstarlet sel -T -t -m /testCaseList/testCase -s A:N:- "@id" -v "@id" -n $xml_conf`
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010306 "test_secu_knas_encrypt_eea2" "" "" "" "test_secu_knas_encrypt_eea2" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal"  3
+echo "test_case_list = $test_case_list"
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010307 "test_secu_knas_encrypt_eia1" "" "" "" "test_secu_knas_encrypt_eia1" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal"  3
+readarray -t test_case_array <<<"$test_case_list"
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010308 "test_secu_knas_encrypt_eia2" "" "" "" "test_secu_knas_encrypt_eia2" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fataln"  3
+read -a test_case_group_array <<< "$test_case_group"
+ 
+for search_expr in "${test_case_array[@]}"
+  do
+    flag_run_test_case=0
+    # search if this test case needs to be executed
+    if [ "$RUN_GROUP" -eq "1" ]; then
+       for search_group in "${test_case_group_array[@]}"
+       do  
+          if [[ $search_expr == $search_group ]];then
+             flag_run_test_case=1
+             echo_info "Test case $search_expr match found in group"
+             break
+          fi
+       done
+    else
+       flag_run_test_case=1
+    fi
+       
+    #We skip this test case if it is not in the group list
+    if [ "$flag_run_test_case" -ne "1" ]; then
+      continue
+    fi
+
+    name=$search_expr
+    class=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/class" $xml_conf`
+    desc=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/desc" $xml_conf`
+    pre_compile_prog=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_compile_prog" $xml_conf`
+    compile_prog=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog" $xml_conf`
+    compile_prog_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog_args" $xml_conf`
+    pre_exec=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_exec" $xml_conf`
+    pre_exec_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_exec_args" $xml_conf`
+    main_exec=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/main_exec" $xml_conf`
+    main_exec_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/main_exec_args" $xml_conf`
+    search_expr_true=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/search_expr_true" $xml_conf`
+    search_expr_false=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/search_expr_false" $xml_conf`
+    nruns=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/nruns" $xml_conf`
+    compile_prog_out=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog_out" $xml_conf`
+    tags=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/tags" $xml_conf`
+
+    echo "class = $class"
+    echo "name = $name"
+    echo "Description = $desc"
+    echo "pre_compile_prog = $pre_compile_prog"
+    echo "compile_prog = $compile_prog"
+    echo "compile_prog_args = $compile_prog_args"
+    echo "compile_prog_out = $compile_prog_out"
+    echo "pre_exec = $pre_exec"
+    echo "pre_exec_args = $pre_exec_args"
+    echo "main_exec = $main_exec"
+    echo "main_exec_args = $main_exec_args"
+    echo "search_expr_true = $search_expr_true"
+    echo "search_expr_false = $search_expr_false"
+    echo "nruns = $nruns"
+
+    #eval $pre_exec
+    compile_prog_out=`eval echo \"$compile_prog_out\"`
+
+    search_array_true=()
+
+    IFS=\"                  #set the shell's field separator
+    set -f                  #don't try to glob 
+    #set -- $search_expr_true             #split on $IFS
+    for i in $search_expr_true
+      do echo "i = $i"
+        if [ -n "$i" ] && [ "$i" != " " ]; then
+          search_array_true+=("$i")
+          #echo "inside i = \"$i\" "
+        fi 
+      done
+    unset IFS 
+
+    #echo "arg1 = ${search_array_true[0]}"
+    #echo " arg2 = ${search_array_true[1]}"
+    if [ "$class" == "compilation" ]; then
+        test_compile "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags"
+    elif  [ "$class" == "execution" ]; then
+        $SUDO killall -q oaisim_nos1
+        test_compile_and_run "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$mypassword" 
+    else
+        echo "Unexpected class of test case...Skipping the test case $name ...."
+    fi
 
-search_array=("finished with 0 errors")
-test_compile_and_run 010309 "test_kdf" "" "" "" "test_kdf" " --verbose" "search_array[@]" "segmentation fault|assertion|exiting|fatal" 3
+    done
+    
+    
 
-#TODO: Add test cases for 10,20 MHz
-#TODO: Test and compile seperately for Rel8/Rel10
+}
 
+uname -a
 
-#test_compile_and_run 0200 "oaisim_nos1" "" "$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1" "" "oaisim_nos1" " -O /home/calisson/rohit/oai_snav/taets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -b1 -u1 -a " "RRC_CONN" 3
+main "$@"
 
-#run_test 0200 "$dbin/oaisim.r8 -a -A AWGN -n 100" false grep -q '(Segmentation.fault)|(Exiting)|(FATAL)'
+xUnit_write "$results_file"
 
-#run_test 0201 "$dbin/oaisim.r8 -a -A AWGN -n 100" false fgrep -q '[E]'
+echo "Test Results are written to $results_file"
 
-# write the test results into a file
+exit
 
-xUnit_write "$results_file"
 
-echo "Test Results are written to $results_file"
 
diff --git a/cmake_targets/autotests/run_exec_lte-softmodem_tests.py b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..b76b5f9698fbb9c14f4fa0b7cf358b4573579dbe
--- /dev/null
+++ b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py
@@ -0,0 +1,1327 @@
+#! /usr/bin/python
+#******************************************************************************
+
+#    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 test01.py
+# \brief test 01 for OAI
+# \author Navid Nikaein
+# \date 2013 - 2015
+# \version 0.1
+# @ingroup _test
+
+import tempfile
+import threading
+import sys
+import traceback
+import wave
+import os
+import time
+import datetime
+import getpass
+import math #from time import clock 
+import xml.etree.ElementTree as ET
+import re
+
+import numpy as np
+
+import log
+
+from  openair import *
+
+import paramiko
+
+import subprocess
+import commands
+sys.path.append('/opt/ssh')
+
+import ssh
+from ssh import SSHSession
+
+def write_file(filename, string, mode="w"):
+   text_file = open(filename, mode)
+   text_file.write(string)
+   text_file.close()
+   
+#$1 name of file (assuming created with iperf -s -u ....
+#$2 minimum throughput
+#$3 maximum throughput
+#$4 average throughput
+#$5 minimum duration of throughput
+#The throughput values found in file must be higher than values from from 2,3,4,5
+#The function returns True if throughput conditions are saisfied else it returns fails
+def tput_test(filename, min_tput, max_tput, average, min_duration):
+   
+   if os.path.exists(filename):
+      with open (filename, "r") as myfile:
+         data=myfile.read()
+      p=re.compile('(\d*.\d*) Mbits/sec')
+      array=p.findall(data)
+      array = [ float(x) for x in array ]
+      duration = array.__len__()
+      if duration !=0:
+        min_list = min(array) 
+        max_list = max(array)
+        average_list = np.mean(array)
+      else:
+        min_list = 0
+        max_list = 0
+        average_list=0
+      tput_string=' ( '+ "min=%0.2f"  % min_list + ' Mbps / ' + "max=%0.2f" %  max_list + ' Mbps / ' + "avg=%0.2f" % average_list + ' Mbps / ' + "dur=%0.2f" % duration + ' s) ' 
+      if (min_list >= min_tput and  max_list >= max_tput and average_list >= average and duration >= min_duration):
+        return True , tput_string
+      else:
+        return False , tput_string
+   else: 
+      return False , tput_string
+
+    
+def try_convert_to_float(string, fail=None):
+    try:
+        return float(string)
+    except Exception:
+        return fail;
+
+def tput_test_search_expr (search_expr, logfile_traffic):
+   result=0
+   tput_string=''
+   if search_expr !='':
+       if search_expr.find('throughput_test')!= -1 :
+          p= re.compile('min\s*=\s*(\d*.\d*)\s*Mbits/sec')
+          min_tput=p.findall(search_expr)
+          if min_tput.__len__()==1:
+             min_tput = min_tput[0]
+          else:
+             min_tput = None
+
+          p= re.compile('max\s*=\s*(\d*.\d*)\s*Mbits/sec')
+          max_tput=p.findall(search_expr)
+          if max_tput.__len__()==1:
+             max_tput = max_tput[0]
+          else:
+             max_tput = None
+
+          p= re.compile('average\s*=\s*(\d*.\d*)\s*Mbits/sec')
+          avg_tput=p.findall(search_expr)
+          if avg_tput.__len__()==1:
+             avg_tput=avg_tput[0]
+          else:
+             avg_tput = None
+
+          p= re.compile('duration\s*=\s*(\d*.\d*)\s*s')
+          duration=p.findall(search_expr)
+          if duration.__len__()==1:
+             duration = duration[0]
+          else:
+             duration = None
+          
+          min_tput = try_convert_to_float(min_tput)
+          max_tput = try_convert_to_float(max_tput)
+          avg_tput = try_convert_to_float(avg_tput)
+          duration = try_convert_to_float(duration)
+          
+          if (min_tput != None and max_tput != None  and avg_tput != None  and duration != None ):
+             result, tput_string = tput_test(logfile_traffic, min_tput, max_tput, avg_tput, duration)
+   else: 
+      result=1
+
+   return result, tput_string
+      
+
+def sftp_module (username, password, hostname, ports, paramList,logfile): 
+   #localD = localfile
+   #remoteD = remotefile
+   #fd, paramiko_logfile  = tempfile.mkstemp()
+   #res = os.close(fd )
+   #paramiko logfile path should not be changed with multiple calls. The logs seem to in first file regardless
+   error = ""
+   #The lines below are outside exception loop to be sure to terminate the test case if the network connectivity goes down or there is authentication failure
+ 
+
+
+   transport = paramiko.Transport(hostname, ports)
+   transport.connect(username = username, password = password)
+   sftp = paramiko.SFTPClient.from_transport(transport)
+   
+
+   #  index =0 
+   for param in paramList:
+      try:
+        operation = param["operation"] 
+        localD = param["localfile"]
+        remoteD = param["remotefile"]
+        if operation == "put":
+          sftp.put(remotepath=remoteD, localpath=localD)
+        elif operation == "get":
+          sftp.get(remotepath=remoteD, localpath=localD)
+        else :
+          print "sftp_module: unidentified operation:<" + operation + "> Exiting now"
+          print "hostname = " + hostname
+          print "ports = " + ports
+          print "localfile = " + localD
+          print "remotefile = " + remoteD
+          print "operation = " + operation
+          sys.exit()
+      except Exception, e:
+         error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+         error = error + '\n username = ' + username + '\n hostname = ' + hostname + '\n localfile = ' + localD + '\n remotefile = ' + remoteD + '\n operation = ' + operation + '\nlogfile = ' + logfile + '\n ports = ' + str(ports) + '\n'  
+         error = error + traceback.format_exc()
+         print error
+
+   sftp.close()
+   transport.close() 
+   res = os.system('\n echo \'SFTP Module Log for Machine: <' + hostname + '> starts...\' >> ' + logfile + ' 2>&1 ')
+   res = os.system('cat ' + paramiko_logfile + ' >> ' + logfile + ' 2>&1 \n')
+   write_file(logfile, error, "a")
+   res = os.system('\n echo \'SFTP Module Log for Machine: <' + hostname + '> ends...\' >> ' + logfile + ' 2>&1 \n')
+
+def finalize_deploy_script (timeout_cmd, terminate_missing_procs='True'):
+  cmd = 'declare -i timeout_cmd='+str(timeout_cmd) + '\n'
+  if terminate_missing_procs == 'True':
+    cmd = cmd +  """
+    #The code below checks if one the processes launched in background has crashed.
+    #If it does, then the code below terminates all the child processes created by this script
+    declare -i wakeup_interval=1
+    declare -i step=0
+    echo \"Array pid =  ${array_exec_pid[@]}\"
+    while [ "$step" -lt "$timeout_cmd" ]
+      do
+       declare -i break_while_loop=0
+       #Iterate over each process ID in array_exec_pid
+       for i in "${array_exec_pid[@]}"
+       do
+        numchild=`pstree -p $i | perl -ne 's/\((\d+)\)/print " $1"/ge' |wc -w`
+        echo "PID = $i, numchild = $numchild"
+        if  [ "$numchild" -eq "0" ] ; then
+            echo "Process ID $i has finished unexpectedly. Now preparing to kill all the processes "
+            break_while_loop=1
+            break
+        fi
+     done
+    if  [ "$break_while_loop" -eq "1" ] ; then
+             break
+    fi
+    step=$(( step + wakeup_interval ))
+    sleep $wakeup_interval
+    done
+    echo "Final time step (Duration of test case) = $step "
+    date
+    """
+  else:
+    #We do not terminate the script if one of the processes has existed prematurely
+    cmd = cmd + 'sleep ' + str(timeout_cmd) + ' ; date  \n'
+  
+  return cmd
+
+def update_config_file(oai, config_string, logdirRepo, python_script):
+  if config_string :
+    stringArray = config_string.splitlines()
+    cmd=""
+    #python_script = '$OPENAIR_DIR/targets/autotests/tools/search_repl.py'
+    for string in stringArray:
+       #split the string based on space now
+       string1=string.split()
+       cmd = cmd + 'python ' + python_script + ' ' + logdirRepo+'/'+string1[0] + '  ' + string1[1] +  ' '+ string1[2] + '\n'
+       #cmd = cmd + 'perl -p -i  -e \'s/'+ string1[1] + '\\s*=\\s*"\\S*"\\s*/' + string1[1] + ' = "' + string1[2] +'"' + '/g\'   ' + logdirRepo + '/' +string1[0] + '\n'
+    return cmd
+    #result = oai.send_recv(cmd)
+
+def SSHSessionWrapper(machine, username, key_file, password, logdir_remote_testcase, logdir_local_base):
+  while True:
+    try:
+       ssh = SSHSession(machine , username, key_file, password)
+       ssh.get_all(logdir_remote_testcase , logdir_local_base)
+       break 
+    except Exception, e:
+       error=''
+       error = error + ' In Class = function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+       error = error + '\n username = ' + username + '\n machine = ' + machine + '\n logdir_remote = ' + logdir_remote_testcase + '\n logdir_local_base = ' + logdir_local_base 
+       error = error + traceback.format_exc()
+       print error
+       print " Trying again in 60 seconds"
+       time.sleep(60)
+       print "Continuing ..."
+
+
+ 
+#Function to clean old programs that might be running from earlier execution
+#oai - parameter for making connection to machine
+#programList - list of programs that must be terminated before execution of any test case 
+def cleanOldPrograms(oai, programList, CleanUpAluLteBox, ExmimoRfStop):
+  cmd = 'killall -q -r ' + programList
+  result = oai.send(cmd, True)
+  print "Killing old programs..." + result
+  programArray = programList.split()
+  programListJoin = '|'.join(programArray)
+  cmd = cleanupOldProgramsScript + ' ' + '\''+programListJoin+'\''
+  #result = oai.send_recv(cmd)
+  #print result
+  result = oai.send_expect_false(cmd, 'Match found', False)
+  print result
+  res=oai.send_recv(CleanUpAluLteBox, True)
+  res = oai.send_recv(ExmimoRfStop, True)
+
+class myThread (threading.Thread):
+    def __init__(self, threadID, name, counter):
+        threading.Thread.__init__(self)
+        self.threadID = threadID
+        self.name = name
+        self.counter = counter
+    def run(self):
+        print "Starting " + self.name
+
+
+class oaiThread (threading.Thread):
+    def __init__(self, threadID, threadname, machine, username, password, cmd, sudo, timeout):
+        threading.Thread.__init__(self)
+        self.threadID = threadID
+        self.threadname = threadname
+        self.machine = machine
+        self.username = username
+        self.password = password
+        self.cmd = cmd
+        self.sudo = sudo
+        self.timeout = timeout
+    def run(self):
+        try:
+          oai = openair('localdomain',self.machine)
+          oai.connect(user, self.password)
+          print "Starting " + self.threadname + " on machine " + self.machine
+          result = oai.send_recv(self.cmd, self.sudo, self.timeout)
+          print "result = " + result
+          print "Exiting " + self.threadname
+          oai.disconnect()
+        except Exception, e:
+           error=''
+           error = error + ' In class oaiThread, function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+           error = error + '\n threadID = ' + str(self.threadID) + '\n threadname = ' + self.threadname + '\n timeout = ' + self.timeout + '\n machine = ' + self.machine + '\n cmd = ' + self.cmd + '\n timeout = ' + str(self.timeout) +  '\n'  
+           error = error + traceback.format_exc()
+           print error
+
+
+#This class runs test cases with class execution, compilatation
+class testCaseThread_generic (threading.Thread):
+   def __init__(self, threadID, name, machine, logdirOAI5GRepo, testcasename,oldprogramList, CleanupAluLteBox, password, timeout, ExmimoRfStop):
+       threading.Thread.__init__(self)
+       self.threadID = threadID
+       self.name = name
+       self.testcasename = testcasename
+       self.timeout = timeout
+       self.machine = machine
+       self.logdirOAI5GRepo = logdirOAI5GRepo
+       self.oldprogramList = oldprogramList
+       self.CleanupAluLteBox = CleanupAluLteBox
+       self.password=password
+       self.ExmimoRfStop = ExmimoRfStop
+   def run(self):
+     try:
+       mypassword=''
+       #addsudo = 'echo \'' + mypassword + '\' | sudo -S -E '
+       addpass = 'echo \'' + mypassword + '\' | '
+       user = getpass.getuser()
+       print "Starting test case : " + self.testcasename + " On machine " + self.machine + " timeout = " + str(self.timeout) 
+       oai = openair('localdomain',self.machine)
+       oai.connect(user, self.password)
+       cleanOldPrograms(oai, self.oldprogramList, self.CleanupAluLteBox, self.ExmimoRfStop)
+       logdir_local = os.environ.get('OPENAIR_DIR')
+       logdir_local_testcase = logdir_local +'/cmake_targets/autotests/log/'+ self.testcasename
+       logdir_local_base = logdir_local +'/cmake_targets/autotests/log/'
+       logdir_remote_testcase = self.logdirOAI5GRepo + '/cmake_targets/autotests/log/' + self.testcasename
+       logdir_remote = self.logdirOAI5GRepo + '/cmake_targets/autotests/log/'
+       logfile_task_testcasename = logdir_local_testcase + '/test_task' + '_' + self.testcasename + '_.log'
+       logfile_task_testcasename_out = logdir_remote + '/test_task_out' + '_' + self.testcasename + '_.log'
+       #print "logdir_local_testcase = " + logdir_local_testcase
+       #print "logdir_remote_testcase = " + logdir_remote_testcase
+       #if os.path.exists(logdir_local_testcase) == True :
+       #    os.removedirs(logdir_local_testcase)
+       #os.mkdir(logdir_local_testcase)
+       os.system("rm -fr " + logdir_local_testcase )
+       os.system("mkdir -p " +  logdir_local_testcase)
+       cmd = "mkdir -p " + logdir_remote_testcase
+       res = oai.send_recv(cmd, False, self.timeout) 
+       #print "res = " + res
+
+       cmd =  "( cd " +  self.logdirOAI5GRepo + " \n "
+       cmd = cmd + "source oaienv \n"
+       cmd = cmd + "$OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash --run-group \"" + self.testcasename + "\" -p \'\'"
+       cmd = cmd + " ) >& "   + logfile_task_testcasename_out + " ; " + "mkdir -p " + logdir_remote_testcase +  "; mv " + logfile_task_testcasename_out + " " +logdir_remote_testcase 
+      
+       #print "cmd = " + cmd
+       res = oai.send_recv(cmd, False, self.timeout) 
+       #print "res = " + res
+       #print "ThreadID = " + str(self.threadID) + "ThreadName: " + self.name + " testcasename: " + self.testcasename + "Execution Result = " + res
+       write_file(logfile_task_testcasename, cmd, mode="w")
+       #Now we copy all the remote files
+       #ssh = SSHSession(self.machine , username=user, key_file=None, password=self.password)
+       #ssh.get_all(logdir_remote_testcase , logdir_local_base)
+       SSHSessionWrapper(self.machine, user, None, self.password, logdir_remote_testcase, logdir_local_base)
+       print "Finishing test case : " + self.testcasename + " On machine " + self.machine
+       cleanOldPrograms(oai, self.oldprogramList, self.CleanupAluLteBox, self.ExmimoRfStop)
+       #oai.kill(user,mypassword)
+       oai.disconnect()
+     except Exception, e:
+         error=''
+         error = error + ' In Class = testCaseThread_generic,  function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+         error = error + '\n threadID = ' + str(self.threadID) + '\n threadName = ' + self.name + '\n testcasename = ' + self.testcasename + '\n machine = ' + self.machine + '\n logdirOAI5GRepo = ' + self.logdirOAI5GRepo +  '\n' + '\n timeout = ' + str(self.timeout)  
+         error = error + traceback.format_exc()
+         print error
+         print "Continuing with next test case..."
+         #sys.exit()
+
+
+       
+   
+def addsudo (cmd, password=""):
+  cmd = 'echo \'' + password + '\' | sudo -S -E bash -c \' ' + cmd + '\' '
+  return cmd
+
+def handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramList, logdirOAI5GRepo, MachineList, password, CleanupAluLteBox,timeout, ExmimoRfStop):
+  try:
+    mypassword=password
+    MachineListFree=[]
+    threadListNew=[]
+    while MachineListFree.__len__() == 0 :
+       MachineListBusy=[]
+       MachineListFree=[]
+       threadListNew=[]
+       #first we need to find the list of free machines that we could run our test case
+       if threadListGeneric.__len__() ==0 :
+       #This means no thread is started yet
+          MachineListFree = MachineList[:]
+       else :
+          for param in threadListGeneric :
+             thread_id = param["thread_id"]
+             machine = param["Machine"]
+             testcasenameold = param["testcasename"]
+             thread_id.join(1)
+             if thread_id.isAlive() == True:
+                threadListNew.append(param)
+                print "thread_id is alive: testcasename: " + testcasenameold +  " on machine "+ machine
+                if machine not in MachineListBusy:
+                   MachineListBusy.append(machine)
+             else :
+                print "thread_id is finished: testcasename: " + testcasenameold + " on machine " + machine
+                #threadListGeneric.remove(param)
+                #if machine not in MachineListFree:
+                #   MachineListFree.append(machine)
+       #Now we check if there is at least one free machine
+       MachineListFree = MachineList[:]
+       for machine in MachineListBusy:
+          if machine in MachineListFree:
+            MachineListFree.remove(machine)
+       print "MachineListFree = " + ','.join(MachineListFree)
+       print "MachineListBusy = " + ','.join(MachineListBusy)
+       print "MachineList = " + ','.join(MachineList)
+    machine = MachineListFree[0]
+    thread = testCaseThread_generic(1,"Generic Thread_"+testcasename+"_"+ "machine_", machine, logdirOAI5GRepo, testcasename, oldprogramList, CleanupAluLteBox, password, timeout, ExmimoRfStop)
+    param={"thread_id":thread, "Machine":machine, "testcasename":testcasename}
+    thread.start()
+    threadListNew.append(param)
+    return threadListNew
+  except Exception, e:
+     error=''
+     error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+     error = error + '\n testcasename = ' + testcasename + '\n logdirOAI5GRepo = ' + logdirOAI5GRepo + '\n MachineList = ' + ','.join(MachineList) + '\n timeout = ' + str(timeout) +  '\n'  
+     error = error + traceback.format_exc()
+     print error
+     print "Continuing..."
+     #sys.exit(1)
+
+#Blocking wait for all threads related to generic testcase execution, class (compilation and execution)
+def wait_testcaseclass_generic_threads(threadListGeneric, timeout = 1):
+   threadListGenericNew=[]
+   for param in threadListGeneric:
+      thread_id = param["thread_id"]
+      machine = param["Machine"]
+      testcasenameold = param["testcasename"]
+      thread_id.join(timeout)
+      if thread_id.isAlive() == True:
+         threadListGenericNew.append(param)
+         print "thread_id on machine: " + machine + "  is still alive: testcasename: " + testcasenameold
+         print " Exiting now..."
+         sys.exit(1)
+      else:
+         print "thread_id on machine: " + machine + "  is stopped: testcasename: " + testcasenameold
+         #threadListGeneric.remove(param)
+   return threadListGenericNew
+
+#Function to handle test case class : lte-softmodem
+def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo , logdirOpenaircnRepo, MachineList, password, CleanUpAluLteBox, ExmimoRfStop):
+  #We ignore the password sent to this function for secuirity reasons for password present in log files
+  #It is recommended to add a line in /etc/sudoers that looks something like below. The line below will run sudo without password prompt
+  # your_user_name ALL=(ALL:ALL) NOPASSWD: ALL
+  mypassword=''
+  #addsudo = 'echo \'' + mypassword + '\' | sudo -S -E '
+  addpass = 'echo \'' + mypassword + '\' | '
+  user = getpass.getuser()
+  testcasename = testcase.get('id')
+  testcaseclass = testcase.findtext('class',default='')
+  timeout_cmd = testcase.findtext('TimeOut_cmd',default='')
+  timeout_cmd = int(float(timeout_cmd))
+  #Timeout_thread is more than that of cmd to have room for compilation time, etc
+  timeout_thread = timeout_cmd + 300 
+  nruns = testcase.findtext('nruns',default='')
+  nruns = int(float(nruns))
+  tags = testcase.findtext('tags',default='')
+  eNBMachine = testcase.findtext('eNB',default='')
+  eNB_config_file = testcase.findtext('eNB_config_file',default='')
+  eNB_compile_prog = testcase.findtext('eNB_compile_prog',default='')
+  eNB_compile_prog_args = testcase.findtext('eNB_compile_prog_args',default='')
+  eNB_pre_exec = testcase.findtext('eNB_pre_exec',default='')
+  eNB_pre_exec_args = testcase.findtext('eNB_pre_exec_args',default='')
+  eNB_main_exec = testcase.findtext('eNB_main_exec',default='')
+  eNB_main_exec_args = testcase.findtext('eNB_main_exec_args',default='')
+  eNB_traffic_exec = testcase.findtext('eNB_traffic_exec',default='')
+  eNB_traffic_exec_args = testcase.findtext('eNB_traffic_exec_args',default='')
+  eNB_terminate_missing_procs = testcase.findtext('eNB_terminate_missing_procs',default='True')
+  eNB_search_expr_true = testcase.findtext('eNB_search_expr_true','')
+
+  UEMachine = testcase.findtext('UE',default='')
+  UE_config_file = testcase.findtext('UE_config_file',default='')
+  UE_compile_prog = testcase.findtext('UE_compile_prog',default='')
+  UE_compile_prog_args = testcase.findtext('UE_compile_prog_args',default='')
+  UE_pre_exec = testcase.findtext('UE_pre_exec',default='')
+  UE_pre_exec_args = testcase.findtext('UE_pre_exec_args',default='')
+  UE_main_exec = testcase.findtext('UE_main_exec',default='')
+  UE_main_exec_args = testcase.findtext('UE_main_exec_args',default='')
+  UE_traffic_exec = testcase.findtext('UE_traffic_exec',default='')
+  UE_traffic_exec_args = testcase.findtext('UE_traffic_exec_args',default='')
+  UE_terminate_missing_procs = testcase.findtext('UE_terminate_missing_procs',default='True')
+  UE_search_expr_true = testcase.findtext('UE_search_expr_true','')
+  UE_stop_script =  testcase.findtext('UE_stop_script','')
+
+  EPCMachine = testcase.findtext('EPC',default='')
+  EPC_config_file = testcase.findtext('EPC_config_file',default='')
+  EPC_compile_prog = testcase.findtext('EPC_compile_prog',default='')
+  EPC_compile_prog_args = testcase.findtext('EPC_compile_prog_args',default='')
+  HSS_compile_prog = testcase.findtext('HSS_compile_prog',default='')
+  HSS_compile_prog_args = testcase.findtext('HSS_compile_prog_args',default='')
+  
+  EPC_pre_exec= testcase.findtext('EPC_pre_exec',default='')
+  EPC_pre_exec_args = testcase.findtext('EPC_pre_exec_args',default='')  
+  EPC_main_exec= testcase.findtext('EPC_main_exec',default='')
+  EPC_main_exec_args = testcase.findtext('EPC_main_exec_args',default='')  
+  HSS_main_exec= testcase.findtext('HSS_main_exec',default='')
+  HSS_main_exec_args = testcase.findtext('HSS_main_exec_args',default='')  
+  EPC_traffic_exec = testcase.findtext('EPC_traffic_exec',default='')
+  EPC_traffic_exec_args = testcase.findtext('EPC_traffic_exec_args',default='')
+  EPC_terminate_missing_procs = testcase.findtext('EPC_terminate_missing_procs',default='True')
+  EPC_search_expr_true = testcase.findtext('EPC_search_expr_true','')
+
+  index_eNBMachine = MachineList.index(eNBMachine)
+  index_UEMachine = MachineList.index(UEMachine)
+  index_EPCMachine = MachineList.index(EPCMachine)
+  cmd = 'cd ' + logdirOAI5GRepo + '; source oaienv ; env|grep OPENAIR'
+  oai_eNB = openair('localdomain', eNBMachine)
+  oai_eNB.connect(user, password)
+  res= oai_eNB.send_recv(cmd)
+  oai_UE = openair('localdomain', UEMachine)
+  oai_UE.connect(user, password)
+  res = oai_eNB.send_recv(cmd)
+  oai_EPC = openair('localdomain', EPCMachine)
+  oai_EPC.connect(user, password)
+  res = oai_eNB.send_recv(cmd)
+
+  cleanOldPrograms(oai_eNB, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+  cleanOldPrograms(oai_UE, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+  cleanOldPrograms(oai_EPC, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+  logdir_eNB = logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename
+  logdir_UE =  logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename
+  logdir_EPC = logdirOpenaircnRepo+'/TEST/autotests/log/'+ testcasename
+  logdir_local = os.environ.get('OPENAIR_DIR')
+  if logdir_local is None:
+     print "Environment variable OPENAIR_DIR not set correctly"
+     sys.exit()
+   
+  #Make the log directory of test case
+  #cmd = 'mkdir -p ' + logdir_eNB
+  #result = oai_eNB.send_recv(cmd)
+  #cmd = 'mkdir -p ' +  logdir_UE
+  #result = oai_UE.send_recv(cmd)
+  #cmd = 'mkdir -p ' + logdir_EPC
+  #result = oai_EPC.send_recv(cmd)
+  
+  print "Updating the config files for ENB/UE/EPC..."
+  #updating the eNB/UE/EPC configuration file from the test case 
+  #update_config_file(oai_eNB, eNB_config_file, logdirOAI5GRepo)
+  #update_config_file(oai_UE, UE_config_file, logdirOAI5GRepo)
+  #update_config_file(oai_EPC, EPC_config_file, logdirOpenaircnRepo)
+  test_result=1
+  test_result_string=''
+  start_time=time.time()
+  for run in range(0,nruns):
+    run_result=1
+    run_result_string=''
+    logdir_eNB = logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename + '/run_' + str(run)
+    logdir_UE =  logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename + '/run_' + str(run)
+    logdir_EPC = logdirOpenaircnRepo+'/TEST/autotests/log/'+ testcasename + '/run_' + str(run)
+    logdir_local_testcase = logdir_local + '/cmake_targets/autotests/log/'+ testcasename + '/run_' + str(run)
+    #Make the log directory of test case
+    cmd = 'rm -fr ' + logdir_eNB + ' ; mkdir -p ' + logdir_eNB
+    result = oai_eNB.send_recv(cmd)
+    cmd = 'rm -fr ' + logdir_UE + ' ; mkdir -p ' +  logdir_UE
+    result = oai_UE.send_recv(cmd)
+    cmd = 'rm -fr ' + logdir_EPC + '; mkdir -p ' + logdir_EPC
+    result = oai_EPC.send_recv(cmd)
+    cmd = ' rm -fr ' + logdir_local_testcase + ' ; mkdir -p ' + logdir_local_testcase
+    result = os.system(cmd)
+    
+    logfile_compile_eNB = logdir_eNB + '/eNB_compile' + '_' + str(run) + '_.log'
+    logfile_exec_eNB = logdir_eNB + '/eNB_exec' + '_' + str(run) + '_.log'
+    logfile_pre_exec_eNB = logdir_eNB + '/eNB_pre_exec' + '_' + str(run) + '_.log'
+    logfile_traffic_eNB = logdir_eNB + '/eNB_traffic' + '_' + str(run) + '_.log'
+    logfile_task_eNB_compile_out = logdir_eNB + '/eNB_task_compile_out' + '_' + str(run) + '_.log'
+    logfile_task_eNB_compile = logdir_local_testcase + '/eNB_task_compile' + '_' + str(run) + '_.log'
+    logfile_task_eNB_out = logdir_eNB + '/eNB_task_out' + '_' + str(run) + '_.log'
+    logfile_task_eNB = logdir_local_testcase + '/eNB_task' + '_' + str(run) + '_.log'
+    logfile_local_traffic_eNB_out = logdir_local_testcase + '/eNB_traffic' + '_' + str(run) + '_.log' 
+
+    task_eNB_compile = ' ( uname -a ; date \n'
+    task_eNB_compile = task_eNB_compile + 'cd ' + logdirOAI5GRepo + ' ; source oaienv ; source cmake_targets/tools/build_helper \n'
+    task_eNB_compile = task_eNB_compile + 'env |grep OPENAIR  \n'
+    task_eNB_compile = task_eNB_compile + update_config_file(oai_eNB, eNB_config_file, logdirOAI5GRepo, '$OPENAIR_DIR/cmake_targets/autotests/tools/search_repl.py') + '\n'
+    if eNB_compile_prog != "":
+       task_eNB_compile  = task_eNB_compile +  ' ( ' + eNB_compile_prog + ' '+ eNB_compile_prog_args + ' ) > ' + logfile_compile_eNB + ' 2>&1 \n'
+    task_eNB_compile =  task_eNB_compile + ' date ) > ' + logfile_task_eNB_compile_out + ' 2>&1  '
+    write_file(logfile_task_eNB_compile, task_eNB_compile, mode="w")
+
+    task_eNB = ' ( uname -a ; date \n'
+    task_eNB = task_eNB + 'cd ' + logdirOAI5GRepo + ' ; source oaienv ; source cmake_targets/tools/build_helper \n'
+    task_eNB = task_eNB + 'env |grep OPENAIR  \n' + 'array_exec_pid=() \n'
+
+    if eNB_pre_exec != "":
+       task_eNB  = task_eNB +  ' ( ' + eNB_pre_exec + ' '+ eNB_pre_exec_args + ' ) > ' + logfile_pre_exec_eNB + ' 2>&1 \n'
+    if eNB_main_exec != "":
+       task_eNB = task_eNB + ' ( ' + addsudo(eNB_main_exec + ' ' + eNB_main_exec_args, mypassword) + ' ) > ' + logfile_exec_eNB + ' 2>&1 & \n'
+       task_eNB = task_eNB + 'array_exec_pid+=($!) \n'
+       task_eNB = task_eNB + 'echo eNB_main_exec PID = $! \n'
+    if eNB_traffic_exec != "":
+       task_eNB = task_eNB + ' ( ' + eNB_traffic_exec + ' ' + eNB_traffic_exec_args + ' ) > ' + logfile_traffic_eNB + ' 2>&1 & \n '
+       task_eNB = task_eNB + 'array_exec_pid+=($!) \n'
+       task_eNB = task_eNB + 'echo eNB_traffic_exec PID = $! \n'
+    #terminate the eNB test case after timeout_cmd seconds
+    task_eNB  = task_eNB + finalize_deploy_script (timeout_cmd, eNB_terminate_missing_procs) + ' \n'
+    #task_eNB  = task_eNB + 'sleep ' +  str(timeout_cmd) + ' \n'
+    task_eNB  = task_eNB + 'handle_ctrl_c' + '\n' 
+    task_eNB  = task_eNB + ' ) > ' + logfile_task_eNB_out + ' 2>&1  '
+    write_file(logfile_task_eNB, task_eNB, mode="w")
+
+    #task_eNB =  'echo \" ' + task_eNB + '\" > ' + logfile_script_eNB + ' 2>&1 ; ' + task_eNB 
+    logfile_compile_UE = logdir_UE + '/UE_compile' + '_' + str(run) + '_.log'
+    logfile_exec_UE = logdir_UE + '/UE_exec' + '_' + str(run) + '_.log'
+    logfile_pre_exec_UE = logdir_UE + '/UE_pre_exec' + '_' + str(run) + '_.log'
+    logfile_traffic_UE = logdir_UE + '/UE_traffic' + '_' + str(run) + '_.log'    
+    logfile_task_UE_out = logdir_UE + '/UE_task_out' + '_' + str(run) + '_.log'
+    logfile_task_UE = logdir_local_testcase + '/UE_task' + '_' + str(run) + '_.log'
+    logfile_task_UE_compile_out = logdir_UE + '/UE_task_compile_out' + '_' + str(run) + '_.log'
+    logfile_task_UE_compile = logdir_local_testcase + '/UE_task_compile' + '_' + str(run) + '_.log'
+    logfile_local_traffic_UE_out = logdir_local_testcase + '/UE_traffic' + '_' + str(run) + '_.log' 
+
+    task_UE_compile = ' ( uname -a ; date \n'
+    task_UE_compile = task_UE_compile + 'array_exec_pid=()' + '\n'
+    task_UE_compile = task_UE_compile + 'cd ' + logdirOAI5GRepo + '\n'  
+    task_UE_compile = task_UE_compile + 'source oaienv \n'
+    task_UE_compile = task_UE_compile + 'source cmake_targets/tools/build_helper \n'
+    task_UE_compile = task_UE_compile + 'env |grep OPENAIR  \n'
+    task_UE_compile = task_UE_compile + update_config_file(oai_UE, UE_config_file, logdirOAI5GRepo, '$OPENAIR_DIR/cmake_targets/autotests/tools/search_repl.py') + '\n'
+    if UE_compile_prog != "":
+       task_UE_compile = task_UE_compile + ' ( ' + UE_compile_prog + ' '+ UE_compile_prog_args + ' ) > ' + logfile_compile_UE + ' 2>&1 \n'
+    task_UE_compile  = task_UE_compile + ' ) > ' + logfile_task_UE_compile_out + ' 2>&1 '
+    write_file(logfile_task_UE_compile, task_UE_compile, mode="w")
+
+    task_UE = ' ( uname -a ; date \n'
+    task_UE = task_UE + 'array_exec_pid=()' + '\n'
+    task_UE = task_UE + 'cd ' + logdirOAI5GRepo + '\n'  
+    task_UE = task_UE + 'source oaienv \n'
+    task_UE = task_UE + 'source cmake_targets/tools/build_helper \n'
+    task_UE = task_UE + 'env |grep OPENAIR  \n'
+    if UE_pre_exec != "":
+       task_UE  = task_UE +  ' ( ' + UE_pre_exec + ' '+ UE_pre_exec_args + ' ) > ' + logfile_pre_exec_UE + ' 2>&1 \n'
+    if UE_main_exec != "":
+       task_UE = task_UE + ' ( ' + addsudo(UE_main_exec + ' ' + UE_main_exec_args, mypassword)  + ' ) > ' + logfile_exec_UE + ' 2>&1 & \n'
+       task_UE = task_UE + 'array_exec_pid+=($!) \n'
+       task_UE = task_UE + 'echo UE_main_exec PID = $! \n'
+    if UE_traffic_exec != "":
+       task_UE = task_UE + ' ( ' + UE_traffic_exec + ' ' + UE_traffic_exec_args + ' ) >' + logfile_traffic_UE + ' 2>&1 & \n'
+       task_UE = task_UE + 'array_exec_pid+=($!) \n'
+       task_UE = task_UE + 'echo UE_traffic_exec PID = $! \n'
+    #terminate the UE test case after timeout_cmd seconds
+    task_UE  = task_UE + finalize_deploy_script (timeout_cmd, UE_terminate_missing_procs) + ' \n'
+    #task_UE  = task_UE + 'sleep ' +  str(timeout_cmd) + ' \n'
+    task_UE  = task_UE + 'handle_ctrl_c' + '\n' 
+    task_UE  = task_UE + ' ) > ' + logfile_task_UE_out + ' 2>&1 '
+    write_file(logfile_task_UE, task_UE, mode="w")
+    #task_UE = 'echo \" ' + task_UE + '\" > ' + logfile_script_UE + ' 2>&1 ; ' + task_UE
+
+    logfile_compile_EPC = logdir_EPC + '/EPC_compile' + '_' + str(run) + '_.log'
+    logfile_compile_HSS = logdir_EPC + '/HSS_compile' + '_' + str(run) + '_.log'
+    logfile_exec_EPC = logdir_EPC + '/EPC_exec' + '_' + str(run) + '_.log'
+    logfile_pre_exec_EPC = logdir_EPC + '/EPC_pre_exec' + '_' + str(run) + '_.log'
+    logfile_exec_HSS = logdir_EPC + '/HSS_exec' + '_' + str(run) + '_.log'
+    logfile_traffic_EPC = logdir_EPC + '/EPC_traffic' + '_' + str(run) + '_.log'
+    logfile_task_EPC_out = logdir_EPC + '/EPC_task_out' + '_' + str(run) + '_.log'
+    logfile_task_EPC = logdir_local_testcase + '/EPC_task' + '_' + str(run) + '_.log'
+    logfile_task_EPC_compile_out = logdir_EPC + '/EPC_task_compile_out' + '_' + str(run) + '_.log'
+    logfile_task_EPC_compile = logdir_local_testcase + '/EPC_task_compile' + '_' + str(run) + '_.log'
+    logfile_local_traffic_EPC_out = logdir_local_testcase + '/EPC_traffic' + '_' + str(run) + '_.log' 
+
+    task_EPC_compile = ' ( uname -a ; date \n'
+    task_EPC_compile = task_EPC_compile + 'array_exec_pid=()' + '\n'
+    task_EPC_compile = task_EPC_compile + 'cd ' + logdirOpenaircnRepo + '\n'
+    task_EPC_compile = task_EPC_compile + update_config_file(oai_EPC, EPC_config_file, logdirOpenaircnRepo, logdirOpenaircnRepo+'/TEST/autotests/tools/search_repl.py') + '\n'
+    task_EPC_compile = task_EPC_compile +  'source BUILD/TOOLS/build_helper \n'
+    if EPC_compile_prog != "":
+       task_EPC_compile = task_EPC_compile + '(' + EPC_compile_prog + ' ' + EPC_compile_prog_args +  ' ) > ' + logfile_compile_EPC + ' 2>&1 \n'
+    if HSS_compile_prog != "":
+       task_EPC_compile = task_EPC_compile + '(' + HSS_compile_prog + ' ' + HSS_compile_prog_args + ' ) > ' + logfile_compile_HSS + ' 2>&1 \n'
+    task_EPC_compile  = task_EPC_compile + ' ) > ' + logfile_task_EPC_compile_out + ' 2>&1 ' 
+    write_file(logfile_task_EPC_compile, task_EPC_compile, mode="w")
+    
+    task_EPC = ' ( uname -a ; date \n'
+    task_EPC = task_EPC + 'array_exec_pid=()' + '\n'
+    task_EPC = task_EPC + 'cd ' + logdirOpenaircnRepo + '\n'
+    task_EPC = task_EPC +  'source BUILD/TOOLS/build_helper \n'
+    if EPC_pre_exec != "":
+       task_EPC  = task_EPC +  ' ( ' + EPC_pre_exec + ' '+ EPC_pre_exec_args + ' ) > ' + logfile_pre_exec_EPC + ' 2>&1 \n'
+    if HSS_main_exec !=  "":
+       task_EPC  = task_EPC + '(' + addsudo (HSS_main_exec + ' ' + HSS_main_exec_args, mypassword) + ' ) > ' + logfile_exec_HSS  +  ' 2>&1   & \n'
+       task_EPC = task_EPC + 'array_exec_pid+=($!) \n'
+       task_EPC = task_EPC + 'echo HSS_main_exec PID = $! \n'
+    if EPC_main_exec !=  "":
+       task_EPC  = task_EPC + '(' + addsudo (EPC_main_exec + ' ' + EPC_main_exec_args, mypassword) + ' ) > ' + logfile_exec_EPC  +  ' 2>&1   & \n'
+       task_EPC = task_EPC + 'array_exec_pid+=($!) \n'
+       task_EPC = task_EPC + 'echo EPC_main_exec PID = $! \n'
+    if EPC_traffic_exec !=  "":
+       task_EPC  = task_EPC + '(' + EPC_traffic_exec + ' ' + EPC_traffic_exec_args + ' ) > ' + logfile_traffic_EPC  +  ' 2>&1   & \n' 
+       task_EPC = task_EPC + 'array_exec_pid+=($!) \n'  
+       task_EPC = task_EPC + 'echo EPC_traffic_exec PID = $! \n'
+    #terminate the EPC test case after timeout_cmd seconds   
+    task_EPC = task_EPC + finalize_deploy_script (timeout_cmd, EPC_terminate_missing_procs) + '\n'
+    #task_EPC  = task_EPC + 'sleep ' +  str(timeout_cmd) + '\n'
+    task_EPC  = task_EPC + 'handle_ctrl_c' '\n' 
+    task_EPC  = task_EPC + ' ) > ' + logfile_task_EPC_out + ' 2>&1 ' 
+    write_file(logfile_task_EPC, task_EPC, mode="w")
+    
+    #first we compile all the programs
+    thread_EPC = oaiThread(1, "EPC_thread", EPCMachine, user, password , task_EPC_compile, False, timeout_thread)
+    thread_eNB = oaiThread(2, "eNB_thread", eNBMachine, user, password , task_eNB_compile, False, timeout_thread)
+    thread_UE = oaiThread(3, "UE_thread", UEMachine, user, password  , task_UE_compile, False, timeout_thread) 
+    threads=[]
+    threads.append(thread_eNB)
+    threads.append(thread_UE)
+    threads.append(thread_EPC)
+    # Start new Threads
+    thread_eNB.start()
+    thread_UE.start()
+    thread_EPC.start()
+    #Wait for all the compile threads to complete
+    for t in threads:
+       t.join()
+
+    #Now we execute all the threads
+    thread_EPC = oaiThread(1, "EPC_thread", EPCMachine, user, password , task_EPC, False, timeout_thread)
+    thread_eNB = oaiThread(2, "eNB_thread", eNBMachine, user, password , task_eNB, False, timeout_thread)
+    thread_UE = oaiThread(3, "UE_thread", UEMachine, user, password  , task_UE, False, timeout_thread) 
+
+    threads=[]
+    threads.append(thread_eNB)
+    threads.append(thread_UE)
+    threads.append(thread_EPC)
+    # Start new Threads
+
+    thread_eNB.start()
+    thread_UE.start()
+    thread_EPC.start()
+
+    #Wait for all the compile threads to complete
+    for t in threads:
+       t.join()
+    #Now we get the log files from remote machines on the local machine
+
+    cleanOldPrograms(oai_eNB, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+    cleanOldPrograms(oai_UE, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+    cleanOldPrograms(oai_EPC, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
+    logfile_UE_stop_script_out = logdir_UE + '/UE_stop_script_out' + '_' + str(run) + '_.log'
+    logfile_UE_stop_script = logdir_local_testcase + '/UE_stop_script' + '_' + str(run) + '_.log'
+
+    if UE_stop_script != "":
+      cmd = ' ( uname -a ; date \n'
+      cmd = cmd + 'cd ' + logdirOAI5GRepo + ' ; source oaienv ; source cmake_targets/tools/build_helper \n'
+      cmd = cmd + 'env |grep OPENAIR  \n' + 'array_exec_pid=() \n'
+      cmd = cmd + UE_stop_script + '\n'
+      cmd = cmd + ') > ' + logfile_UE_stop_script_out + ' 2>&1 ' 
+      write_file(logfile_UE_stop_script , cmd, mode="w")
+      thread_UE = oaiThread(4, "UE_thread", UEMachine, user, password  , cmd, False, timeout_thread)
+      thread_UE.start()
+      thread_UE.join()
+   
+
+    print "Copying files from EPCMachine : " + EPCMachine + "logdir_EPC = " + logdir_EPC
+    #ssh = SSHSession(EPCMachine , username=user, key_file=None, password=password)
+    #ssh.get_all(logdir_EPC , logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+    SSHSessionWrapper(EPCMachine, user, None, password, logdir_EPC, logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+
+    print "Copying files from eNBMachine " + eNBMachine + "logdir_eNB = " + logdir_eNB
+    #ssh = SSHSession(eNBMachine , username=user, key_file=None, password=password)
+    #ssh.get_all(logdir_eNB, logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+    SSHSessionWrapper(eNBMachine, user, None, password, logdir_eNB, logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+
+    print "Copying files from UEMachine : " + UEMachine + "logdir_UE = " + logdir_UE
+    #ssh = SSHSession(UEMachine , username=user, key_file=None, password=password)
+    #ssh.get_all(logdir_UE , logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+    SSHSessionWrapper(UEMachine, user, None, password, logdir_UE, logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
+
+
+    
+    #Currently we only perform throughput tests
+    tput_run_string=''
+    result, tput_string = tput_test_search_expr(eNB_search_expr_true, logfile_local_traffic_eNB_out)
+    tput_run_string = tput_run_string + tput_string
+    run_result=run_result&result
+    result, tput_string = tput_test_search_expr(EPC_search_expr_true, logfile_local_traffic_EPC_out)
+    run_result=run_result&result
+    tput_run_string = tput_run_string + tput_string
+    result, tput_string = tput_test_search_expr(UE_search_expr_true, logfile_local_traffic_UE_out)
+    run_result=run_result&result
+    tput_run_string = tput_run_string + tput_string
+    
+    if run_result == 1:  
+      run_result_string = ' RUN_'+str(run) + ' = PASS'
+    else:
+      run_result_string = ' RUN_'+str(run) + ' = FAIL'
+    
+    run_result_string = run_result_string + tput_run_string
+
+    test_result=test_result & run_result
+    test_result_string=test_result_string + run_result_string
+
+    oai_eNB.disconnect()
+    oai_UE.disconnect()
+    oai_EPC.disconnect()
+    #We need to close the new ssh session that was created  
+    #if index_eNBMachine == index_EPCMachine:
+    #    oai_EPC.disconnect()
+  #Now we finalize the xml file of the test case
+  end_time=time.time()
+  duration= end_time - start_time
+  xmlFile = logdir_local + '/cmake_targets/autotests/log/'+ testcasename + '/test.' + testcasename + '.xml'
+  if test_result ==0: 
+    result='FAIL'
+  else:
+    result = 'PASS'
+  xml="\n<testcase classname=\'"+ testcaseclass +  "\' name=\'" + testcasename + "."+tags +  "\' Run_result=\'" + test_result_string + "\' time=\'" + str(duration) + " s \' RESULT=\'" + result + "\'></testcase> \n"
+  write_file(xmlFile, xml, mode="w")
+
+
+#This function searches if test case is present in list of test cases that need to be executed by user
+def search_test_case_group(testcasename, testcasegroup, test_case_exclude):
+    
+    if test_case_exclude != "":
+       testcase_exclusion_list=test_case_exclude.split()
+       for entry in testcase_exclusion_list:
+          if entry.find('+') >=0:
+            match = re.search(entry, testcasename)
+            if match:
+               print "\nSkipping test case as it is found in black list: " + testcasename
+               return False
+          else:
+             match = entry.find(testcasename)
+             if match >=0:
+                print "\nSkipping test case as it is found in black list: " + testcasename
+                return False
+    if testcasegroup == '':
+         return True
+    else:
+      testcaselist = testcasegroup.split()
+      for entry in testcaselist:
+        if entry.find('+') >=0:
+           match = re.search(entry, testcasename)
+           if match:
+              return True
+        else:
+           match = testcasename.find(entry)
+           if match >=0:
+             return True
+    return False
+   
+       
+
+#thread1 = myThread(1, "Thread-1", 1)
+debug = 0
+pw =''
+i = 0
+dlsim=0
+localshell=0
+is_compiled = 0
+timeout=2000
+xmlInputFile="./test_case_list.xml"
+NFSResultsDir = '/mnt/sradio'
+cleanupOldProgramsScript = '$OPENAIR_DIR/cmake_targets/autotests/tools/remove_old_programs.bash'
+testcasegroup=''
+
+logdir = '/tmp/' + 'OAITestFrameWork-' + getpass.getuser() + '/'
+logdirOAI5GRepo = logdir + 'openairinterface5g/'
+logdirOpenaircnRepo = logdir + 'openair-cn/'
+
+openairdir_local = os.environ.get('OPENAIR_DIR')
+if openairdir_local is None:
+   print "Environment variable OPENAIR_DIR not set correctly"
+   sys.exit()
+locallogdir = openairdir_local + '/cmake_targets/autotests/log/'
+#Remove  the contents of local log directory
+#os.system(' rm -fr ' + locallogdir + '; mkdir -p ' +  locallogdir  )
+flag_remove_logdir=False
+i=1
+while i < len (sys.argv):
+    arg=sys.argv[i]
+    if arg == '-d':
+        debug = 1
+    elif arg == '-dd':
+        debug = 2
+    elif arg == '-p' :
+        prompt2 = sys.argv[i+1]
+        i = i +1
+    elif arg == '-r':
+        flag_remove_logdir=True 
+    elif arg == '-w' :
+        pw = sys.argv[i+1]
+        i = i +1  
+    elif arg == '-P' :
+        dlsim = 1
+    elif arg == '-l' :
+        localshell = 1
+    elif arg == '-c' :
+        is_compiled = 1
+    elif arg == '-t' :
+        timeout = sys.argv[i+1]
+        i = i +1  
+    elif arg == '-g' :
+        testcasegroup = sys.argv[i+1].replace("\"","")
+        i = i +1   
+    elif arg == '-h' :
+        print "-d:  low debug level"
+        print "-dd: high debug level"
+        print "-p:  set the prompt"
+        print "-r:  Remove the log directory in autotests"
+        print "-g:  Run test cases in a group"
+        print "-w:  set the password for ssh to localhost"
+        print "-l:  use local shell instead of ssh connection"
+        print "-t:  set the time out in second for commands"
+        sys.exit()
+    else :
+        print "Unrecongnized Option: <" + arg + ">. Use -h to see valid options"
+        sys.exit()
+    i= i + 1     
+
+try:  
+   os.environ["OPENAIR1_DIR"]
+except KeyError: 
+   print "Please set the environment variable OPENAIR1_DIR in the .bashrc"
+   sys.exit(1)
+
+try:  
+   os.environ["OPENAIR2_DIR"]
+except KeyError: 
+   print "Please set the environment variable OPENAIR2_DIR in the .bashrc"
+   sys.exit(1)
+
+try:  
+   os.environ["OPENAIR_TARGETS"]
+except KeyError: 
+   print "Please set the environment variable OPENAIR_TARGETS in the .bashrc"
+   sys.exit(1)
+
+if flag_remove_logdir == True:
+   print "Removing directory: " + locallogdir
+   os.system(' rm -fr ' + locallogdir + '; mkdir -p ' +  locallogdir  )
+
+
+
+paramiko_logfile = os.path.expandvars('$OPENAIR_DIR/cmake_targets/autotests/log/paramiko.log')
+res=os.system(' echo > ' + paramiko_logfile)
+paramiko.util.log_to_file(paramiko_logfile)
+
+# get the oai object
+host = os.uname()[1]
+#oai = openair('localdomain','calisson')
+oai_list = {}
+
+
+#start_time = time.time()  # datetime.datetime.now()
+user = getpass.getuser()
+print "host = " + host 
+print "user = " + user
+pw=getpass.getpass()
+
+#Now we parse the xml file for basic configuration
+xmlTree = ET.parse(xmlInputFile)
+xmlRoot = xmlTree.getroot()
+
+
+
+
+MachineList = xmlRoot.findtext('MachineList',default='')
+NFSResultsShare = xmlRoot.findtext('NFSResultsShare',default='')
+GitOpenaircnRepo = xmlRoot.findtext('GitOpenair-cnRepo',default='')
+GitOAI5GRepo = xmlRoot.findtext('GitOAI5GRepo',default='')
+GitOAI5GRepoBranch = xmlRoot.findtext('GitOAI5GRepoBranch',default='')
+GitOpenaircnRepoBranch = xmlRoot.findtext('GitOpenair-cnRepoBranch',default='')
+CleanUpOldProgs = xmlRoot.findtext('CleanUpOldProgs',default='')
+CleanUpAluLteBox = xmlRoot.findtext('CleanUpAluLteBox',default='')
+Timeout_execution = int (xmlRoot.findtext('Timeout_execution'))
+MachineListGeneric = xmlRoot.findtext('MachineListGeneric',default='')
+TestCaseExclusionList = xmlRoot.findtext('TestCaseExclusionList',default='')
+ExmimoRfStop = xmlRoot.findtext('ExmimoRfStop',default='')
+print "MachineList = " + MachineList
+print "GitOpenair-cnRepo = " + GitOpenaircnRepo
+print "GitOAI5GRepo = " + GitOAI5GRepo
+print "GitOAI5GBranch = " + GitOAI5GRepoBranch
+print "GitOpenaircnRepoBranch = " + GitOpenaircnRepoBranch
+print "NFSResultsShare = " + NFSResultsShare
+cmd = "git show-ref --heads -s "+ GitOAI5GRepoBranch
+GitOAI5GHeadVersion = subprocess.check_output ([cmd], shell=True)
+print "GitOAI5GHeadVersion = " + GitOAI5GHeadVersion
+print "CleanUpOldProgs = " + CleanUpOldProgs
+print "Timeout_execution = " + str(Timeout_execution)
+
+MachineList = MachineList.split()
+MachineListGeneric = MachineListGeneric.split()
+
+index=0
+for machine in MachineList: 
+  oai_list[index] = openair('localdomain',machine)
+  index = index + 1
+
+
+#myThread (1,"sddsf", 1)
+
+
+#thread1 = oaiThread1(1, "Thread-1", 1)
+#def __init__(self, threadID, name, counter, oai, cmd, sudo, timeout):
+
+#sys.exit()
+
+
+
+
+
+
+
+print "\nTesting the sanity of machines used for testing..."
+if localshell == 0:
+    try:
+        index=0
+        for machine in MachineList:
+           print '\n******* Note that the user <'+user+'> should be a sudoer *******\n'
+           print '******* Connecting to the machine <'+machine+'> to perform the test *******\n'
+           if not pw :
+              print "username: " + user 
+              #pw = getpass.getpass() 
+              #print "password: " + pw            
+           else :
+              print "username: " + user 
+              #print "password: " + pw 
+           # issues in ubuntu 12.04
+           oai_list[index].connect(user,pw)
+           #print "result = " + result
+           
+
+           #print '\nCleaning Older running programs : ' + CleanUpOldProgs
+           #cleanOldPrograms(oai_list[index], CleanUpOldProgs)
+
+
+
+           print '\nChecking for sudo permissions on machine <'+machine+'>...'
+           result = oai_list[index].send_expect_false('sudo -S -v','may not run sudo',True)
+           print "Sudo permissions..." + result
+           
+           print '\nCleaning Older running programs : ' + CleanUpOldProgs
+           cleanOldPrograms(oai_list[index], CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop)
+
+           result = oai_list[index].send('mount ' + NFSResultsDir, True)
+           print "Mounting NFS Share " + NFSResultsDir + "..." + result
+
+           # Check if NFS share is mounted correctly.
+           print 'Checking if NFS Share<' + NFSResultsDir + '> is mounted correctly...'
+           #result = oai_list[index].send_expect('mount | grep ' + NFSResultsDir,  NFSResultsDir )
+           cmd = 'if grep -qs '+NFSResultsDir+ ' /proc/mounts; then  echo \'' + NFSResultsDir  + ' is mounted\' ; fi'
+           search_expr = NFSResultsDir + ' is mounted'
+           print "cmd = " + cmd
+           print "search_expr = " + search_expr
+           result = oai_list[index].send_expect(cmd, search_expr)
+           print "Mount NFS_Results_Dir..." + result
+           index = index + 1
+           
+           #oai.connect2(user,pw) 
+           #oai.get_shell()
+    except :
+        print 'Fail to connect to the machine: '+ machine 
+        sys.exit(1)
+else:
+    pw = ''
+    oai_list[0].connect_localshell()
+
+
+
+
+
+cpu_freq = int(oai_list[0].cpu_freq())
+if timeout == 2000 : 
+    if cpu_freq <= 2000 : 
+        timeout = 3000
+    elif cpu_freq < 2700 :
+        timeout = 2000 
+    elif cpu_freq < 3300 :
+        timeout = 1500
+print "cpu freq(MHz): " + str(cpu_freq) + "timeout(s): " + str(timeout)
+
+# The log files are stored in branch/version/
+
+
+
+#result = oai_list[0].send('uname -a ' )
+#print result
+
+#We now prepare the machines for testing
+#index=0
+threads_init_setup=[]
+for index in oai_list:
+  try:
+      print "setting up machine: " + MachineList[index]
+      #print oai_list[oai].send_recv('echo \''+pw+'\' |sudo -S -v')
+      #print oai_list[oai].send_recv('sudo su')
+      #print oai_list[oai].send_recv('who am i') 
+      #cleanUpPrograms(oai_list[oai]
+      cmd =  'mkdir -p ' + logdir + ' ; rm -fr ' + logdir + '/*'
+      result = oai_list[index].send_recv(cmd)
+     
+      setuplogfile  = logdir  + '/setup_log_' + MachineList[index] + '_.txt'
+      setup_script  = locallogdir  + '/setup_script_' + MachineList[index] +  '_.txt'
+      cmd = ' ( \n'
+      #cmd = cmd  + 'rm -fR ' +  logdir + '\n'
+      #cmd = cmd + 'mkdir -p ' + logdir + '\n'
+      cmd = cmd + 'cd '+ logdir   + '\n'
+      cmd = cmd + 'git config --global http.sslVerify false \n' 
+      cmd = cmd + 'git clone '+ GitOAI5GRepo  + '\n'
+      cmd = cmd + 'git clone '+ GitOpenaircnRepo   + '\n'
+      cmd = cmd +  'cd ' + logdirOAI5GRepo  + '\n'
+      cmd = cmd + 'git checkout ' + GitOAI5GHeadVersion   + '\n'
+      cmd = cmd + 'source oaienv'   + '\n'
+      cmd = cmd +  'cd ' + logdirOpenaircnRepo  + '\n'
+      cmd = cmd +  'git checkout ' + GitOpenaircnRepoBranch  + '\n'
+      cmd = cmd +  'env |grep OPENAIR'  + '\n'
+      cmd = cmd + ' cd ' + logdir   + '\n'
+      cmd = cmd + ' ) > ' +  setuplogfile + ' 2>&1   '
+      #cmd = cmd + 'echo \' ' + cmd  + '\' > ' + setup_script + ' 2>&1 \n '
+      #result = oai_list[index].send_recv(cmd, False, 300 )
+      write_file(setup_script, cmd, mode="w")
+      tempThread = oaiThread(index, 'thread_setup_'+str(index)+'_' + MachineList[index] , MachineList[index] , user, pw, cmd, False, 300)
+      threads_init_setup.append(tempThread )
+      tempThread.start()
+
+      #localfile = locallogdir + '/setup_log_' + MachineList[index] + '_.txt'
+      #remotefile = logdir  + '/setup_log_' + MachineList[index] + '_.txt'
+
+      #sftp_log = os.path.expandvars(locallogdir + '/sftp_module.log')
+      #sftp_module (user, pw, MachineList[index], 22, localfile, remotefile, sftp_log, "get")
+
+
+      #Now we copy test_case_list.xml on the remote machines
+      #localfile = os.path.expandvars('$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml')
+      #remotefile = logdirOAI5GRepo + '/cmake_targets/autotests/test_case_list.xml'
+
+      #sftp_log = os.path.expandvars(locallogdir + '/sftp_module.log')
+      #sftp_module (user, pw, MachineList[index], 22, localfile, remotefile, sftp_log, "put")
+
+
+      #print oai_list[index].send('rm -fR ' +  logdir)
+      #print oai_list[index].send('mkdir -p ' + logdir)
+      #print oai_list[index].send('cd '+ logdir)
+      #print oai_list[index].send('git clone '+ GitOAI5GRepo )
+      #print oai_list[index].send('git clone '+ GitOpenaircnRepo)
+      #print oai_list[index].send('cd ' + logdirOAI5GRepo)
+      #print oai_list[index].send('git checkout ' + GitOAI5GHeadVersion)
+      #print oai_list[index].send('source oaienv')
+      #print oai_list[index].send('cd ' + logdirOpenaircnRepo)
+      #print oai_list[index].send('git checkout ' + GitOpenaircnRepoBranch)
+      #print oai_list[index].send_recv('cd ' + logdirOAI5GRepo)
+      #print oai_list[index].send_recv('source oaienv')
+      #print oai_list[index].send_recv('env |grep OPENAIR')
+
+      #print '\nCleaning Older running programs : ' + CleanUpOldProgs
+      #cleanOldPrograms(oai_list[index], CleanUpOldProgs)
+  except Exception, e:
+         print 'There is error in one of the commands to setup the machine '+ MachineList[index] 
+         error=''
+         error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+         error = error + traceback.format_exc()
+         print error
+         sys.exit(1)
+
+#Now we wait for all the threads to complete
+index = 0
+for t in threads_init_setup:
+   t.join()
+   setuplogfile  = logdir  + '/setup_log_' + MachineList[index] + '_.txt'
+   setup_script  = locallogdir  + '/setup_script_' + MachineList[index] +  '_.txt'
+   localfile = locallogdir + '/setup_log_' + MachineList[index] + '_.txt'
+   remotefile = logdir  + '/setup_log_' + MachineList[index] + '_.txt'
+   port = 22
+   
+   paramList=[]
+   sftp_log = os.path.expandvars(locallogdir + '/sftp_module.log')
+   paramList.append ( {"operation":'get', "localfile":localfile, "remotefile":remotefile} )
+   #sftp_module (user, pw, MachineList[index], port, localfile, remotefile, sftp_log, "get")
+
+   #Now we copy test_case_list.xml on the remote machines
+   localfile = os.path.expandvars('$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml')
+   remotefile = logdirOAI5GRepo + '/cmake_targets/autotests/test_case_list.xml'
+   paramList.append ( {"operation":'put', "localfile":localfile, "remotefile":remotefile} )
+   sftp_log = os.path.expandvars(locallogdir + '/sftp_module.log')
+   sftp_module (user, pw, MachineList[index], port, paramList, sftp_log)
+   index = index+1
+   
+   if os.path.exists(localfile) == 0:
+      print "Setup log file <" + localfile + "> missing for machine <" + MachineList[index] + ">.  Please check the setup log files. Exiting now"
+      sys.exit(1)
+
+#Now we process all the test cases
+#Now we check if there was error in setup files
+
+status, out = commands.getstatusoutput('grep ' +  ' -il \'error\' ' + locallogdir + '/setup*')
+if (out != '') :
+  print "There is error in setup of machines"
+  print "status  = " + str(status) + "\n Check files for error = " + out
+  print sys.exit(1)
+
+
+threadListGlobal=[]
+testcaseList=xmlRoot.findall('testCase')
+#print testcaseList
+for testcase in testcaseList:
+  try:
+    testcasename = testcase.get('id')
+    testcaseclass = testcase.findtext('class',default='')
+    desc = testcase.findtext('desc',default='')
+    #print "Machine list top level = " + ','.join(MachineList)
+    if search_test_case_group(testcasename, testcasegroup, TestCaseExclusionList) == True:
+      if testcaseclass == 'lte-softmodem' :
+        eNBMachine = testcase.findtext('eNB',default='')
+        UEMachine = testcase.findtext('UE',default='')
+        EPCMachine = testcase.findtext('EPC',default='')
+        #index_eNBMachine = MachineList.index(eNBMachine)
+        #index_UEMachine = MachineList.index(UEMachine)
+        #index_EPCMachine = MachineList.index(EPCMachine)
+        if (eNBMachine not in MachineList)|(UEMachine not in MachineList)|(UEMachine not in MachineList):
+           print "One of the machines is not in the machine list"
+           print "eNBMachine : " + eNBMachine + "UEMachine : " + UEMachine + "EPCMachine : " + EPCMachine + "MachineList : " + ','.join(MachineList)
+        print "testcasename = " + testcasename + " class = " + testcaseclass
+        threadListGlobal = wait_testcaseclass_generic_threads(threadListGlobal, Timeout_execution)
+        handle_testcaseclass_softmodem (testcase, CleanUpOldProgs, logdirOAI5GRepo, logdirOpenaircnRepo, MachineList, pw, CleanUpAluLteBox, ExmimoRfStop )
+      elif (testcaseclass == 'compilation'): 
+        threadListGlobal = handle_testcaseclass_generic (testcasename, threadListGlobal, CleanUpOldProgs, logdirOAI5GRepo, MachineListGeneric, pw, CleanUpAluLteBox,Timeout_execution, ExmimoRfStop)
+      elif (testcaseclass == 'execution'): 
+        threadListGlobal = handle_testcaseclass_generic (testcasename, threadListGlobal, CleanUpOldProgs, logdirOAI5GRepo, MachineListGeneric, pw, CleanUpAluLteBox,ExmimoRfStop)
+      else :
+        print "Unknown test case class: " + testcaseclass
+        sys.exit()
+
+  except Exception, e:
+     error=''
+     error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+     error = error + '\n testcasename = ' + testcasename + '\n testcaseclass = ' + testcaseclass + '\n desc = ' + 'desc' + '\n'  
+     error = error + traceback.format_exc()
+     print error
+     print "Continuing to next test case..."
+     #sys.exit(1)
+
+
+print "Exiting the test cases execution now..."
+
+for t in threadListGlobal:
+   t.join
+
+sys.exit()
+
+   #+ "class = "+ classx
+
+
+
+      #index = index +1
+
+test = 'test01'
+ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d.%Hh%M")
+logfile = user+'.'+test+'.'+ctime+'.txt'  
+logdir = os.getcwd() + '/pre-ci-logs-'+host;
+oai.create_dir(logdir,debug)    
+print 'log dir: ' + logdir
+print 'log file: ' + logfile
+pwd = oai.send_recv('pwd') 
+print "pwd = " + pwd
+result = oai.send('echo linux | sudo -S ls -al;sleep 5')
+print "result =" + result
+sys.exit()
+
+#oai.send_nowait('mkdir -p -m 755' + logdir + ';')
+
+#print '=================start the ' + test + ' at ' + ctime + '=================\n'
+#print 'Results will be reported in log file : ' + logfile
+log.writefile(logfile,'====================start'+test+' at ' + ctime + '=======================\n')
+log.set_debug_level(debug)
+
+oai.kill(user, pw)   
+oai.rm_driver(oai,user,pw)
+
+# start te test cases 
+if is_compiled == 0 :
+    is_compiled=case01.execute(oai, user, pw, host,logfile,logdir,debug,timeout)
+    
+if is_compiled != 0 :
+    case02.execute(oai, user, pw, host, logfile,logdir,debug)
+    case03.execute(oai, user, pw, host, logfile,logdir,debug)
+    case04.execute(oai, user, pw, host, logfile,logdir,debug)
+    case05.execute(oai, user, pw, host, logfile,logdir,debug)
+else :
+    print 'Compilation error: skip test case 02,03,04,05'
+
+oai.kill(user, pw) 
+oai.rm_driver(oai,user,pw)
+
+# perform the stats
+log.statistics(logfile)
+
+
+oai.disconnect()
+
+ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d_%Hh%M")
+log.writefile(logfile,'====================end the '+ test + ' at ' + ctime +'====================')
+print 'Test results can be found in : ' + logfile 
+#print '\nThis test took %f minutes\n' % math.ceil((time.time() - start_time)/60) 
+
+#print '\n=====================end the '+ test + ' at ' + ctime + '====================='
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba34085d90ef7b50cf11226852ed65e37b2cda58
--- /dev/null
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -0,0 +1,2952 @@
+ <testCaseList>
+
+<MachineList>stevens calisson mozart nano amerique</MachineList>
+ <NFSResultsShare>/mnt/sradio/TEST_RESULTS</NFSResultsShare>
+ <GitOAI5GRepo>https://gitlab.eurecom.fr/oai/openairinterface5g.git</GitOAI5GRepo>
+ <GitOpenair-cnRepo>https://gitlab.eurecom.fr/oai/openair-cn.git</GitOpenair-cnRepo>
+ <GitOAI5GRepoBranch>enhancement-57-UHD-interfacing</GitOAI5GRepoBranch>
+ <GitOpenair-cnRepoBranch>feature-17-test_framework</GitOpenair-cnRepoBranch>
+ <CleanUpOldProgs>oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* hss hss_sim configure_cots_bandrich_ue* wvdial* run_exec_autotests* iperf</CleanUpOldProgs>	
+ <CleanUpAluLteBox>/opt/ltebox/tools/stop_ltebox</CleanUpAluLteBox>
+<ExmimoRfStop>cd $OPENAIR_DIR/cmake_targets/autotests/tools/exmimo; sudo -E -S octave ./exmimo_stop.m</ExmimoRfStop>
+ <Timeout_execution>36000</Timeout_execution>
+ <TestCaseExclusionList>0104+ 015502 015505  015506 015507 015508 015508 015509 015510 015511 015600 015700 016102 016105</TestCaseExclusionList>
+ <MachineListGeneric>calisson stevens mozart nano amerique</MachineListGeneric>
+     <testCase id="010101" >
+     <class>compilation</class>
+     <desc>Build oaisim.Rel8</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--oaisim -r Rel8  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/oaisim_build_oai/build/oaisim
+                       $OPENAIR_DIR/cmake_targets/at_commands/build/at_nas_ue
+                       $OPENAIR_DIR/cmake_targets/nas_sim_tools/build/usim
+                       $OPENAIR_DIR/cmake_targets/nas_sim_tools/build/nvram</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>oaisim.Rel8</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+     <testCase id="010102" >
+     <class>compilation</class>
+     <desc>Build oaisim.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--oaisim -r Rel10  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/oaisim_build_oai/build/oaisim
+                       $OPENAIR_DIR/cmake_targets/at_commands/build/at_nas_ue
+                       $OPENAIR_DIR/cmake_targets/nas_sim_tools/build/usim
+                       $OPENAIR_DIR/cmake_targets/nas_sim_tools/build/nvram</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>oaisim.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+     <testCase id="010103" >
+     <class>compilation</class>
+     <desc>Build oaisim_noS1.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--oaisim -r Rel10 --noS1  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1
+                       $OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/rb_tool
+                       $OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
+                       $OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/CMakeFiles/oai_nw_drv/oai_nw_drv.ko</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>oaisim_noS1.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010110" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem_noS1.USRP.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w USRP -r Rel10 --noS1  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/rb_tool
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem_noS1.USRP.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010111" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem_noS1.EXMIMO.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w EXMIMO -r Rel10 --noS1  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/rb_tool
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/openair_rf/openair_rf.ko
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/updatefw
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/oarf_config_exmimo.oct</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem_noS1.EXMIMO.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010112" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem_noS1.BLADERF.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w BLADERF -r Rel10 --noS1  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/rb_tool
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem_noS1.EXMIMO.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010113" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem_noS1.ETHERNET.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w ETHERNET -r Rel10 --noS1  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/rb_tool
+                       $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem_noS1.ETHERNET.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+
+
+     <testCase id="010120" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem.USRP.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w USRP -r Rel10   -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem.USRP.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010121" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem.EXMIMO.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w EXMIMO -r Rel10   -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem
+                       $OPENAIR_DIR/cmake_targets/lte_build_oai/build/CMakeFiles/openair_rf/openair_rf.ko
+                       $OPENAIR_DIR/cmake_targets/lte_build_oai/build/updatefw
+                       $OPENAIR_DIR/cmake_targets/lte_build_oai/build/oarf_config_exmimo.oct</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem.EXMIMO.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010122" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem.BLADERF.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w BLADERF -r Rel10   -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem.BLADERF.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010123" >
+     <class>compilation</class>
+     <desc>Build lte_softmodem.ETHERNET.Rel10</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--eNB -w ETHERNET -r Rel10   -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>lte-softmodem.ETHERNET.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase> 
+
+     <testCase id="010130" >
+     <class>compilation</class>
+     <desc>Build phy unitary simulators + secuirity unitary tests</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--phy_simulators --core_simulators  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/lte-simulators/build/dlsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/ulsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/pucchsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/prachsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/pdcchsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/pbchsim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/mbmssim
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eia1
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_kenb
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_ctr_encrypt
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_ctr_decrypt
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eea2
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eea1
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_kdf
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_cmac_encrypt
+                       $OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eia2</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>unitary-sim.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+
+     <testCase id="010140" >
+     <class>compilation</class>
+     <desc>Build RRH Gateway</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--RRH -w USRP  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/rrh_gw/build/rrh_gw</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>RRH.USRP.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+     <testCase id="010141" >
+     <class>compilation</class>
+     <desc>Build RRH Gateway</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--RRH -w EXMIMO  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/rrh_gw/build/rrh_gw
+                       $OPENAIR_DIR/cmake_targets/rrh_gw/build/CMakeFiles/openair_rf/openair_rf.ko
+                       $OPENAIR_DIR/cmake_targets/rrh_gw/build/updatefw
+                       $OPENAIR_DIR/cmake_targets/rrh_gw/build/oarf_config_exmimo.oct</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>RRH.EXMIMO.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+     <testCase id="010142" >
+     <class>compilation</class>
+     <desc>Build RRH Gateway</desc>
+     <pre_compile_prog></pre_compile_prog>
+     <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+     <compile_prog_args>--RRH -w BLADERF  -c </compile_prog_args>
+     <compile_prog_out>$OPENAIR_DIR/cmake_targets/rrh_gw/build/rrh_gw</compile_prog_out>
+     <pre_exec></pre_exec>
+     <pre_exec_args></pre_exec_args>
+     <main_exec></main_exec>
+     <main_exec_args></main_exec_args>
+     <search_expr_true></search_expr_true>
+     <search_expr_false></search_expr_false>
+     <tags>RRH.BLADERF.Rel10</tags>
+     <nruns>1</nruns>
+     </testCase>
+
+
+   <testCase id="010200">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 </main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2</tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010201">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 TDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -a 
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -a 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -a 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2 -a 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 -a </main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2</tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010202">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 TDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2</main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010203">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 TDD, 1 eNB + 3 UEs (5 MHz) in PHY_ABSTRACTION mode and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -a 
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2 -a</main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2  oaisim_nos1.tdd.20MHz.TM2</tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010204">
+      <class>execution</class>
+      <desc>Run OAI Rel10 TDD, 1 eNB + 1 UE (5 MHz) without abstraction mode, send ping from from eNB to UE, and check that there is no packet losses</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26 
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2 -c26 
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2 -c26</main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags>
+      <search_expr_true>"DL and UL loss rate below 10"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010205">
+      <class>execution</class>
+      <desc>Run OAI Rel10 TDD, 1 eNB + 1 UE (5 MHz) in PHY_ABSTRACTION  mode, send ping from from eNB to  UE, and check that there is no packet losses</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -c26 -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -c26  -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -c26 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -c26  -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2 -c26 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2 -c26  -a</main_exec_args>
+      <tags>oaisim_noS1.tdd.5MHz.TM1 oaisim_noS1.tdd.10MHz.TM1 oaisim_noS1.tdd.20MHz.TM1 oaisim_noS1.tdd.5MHz.TM2 oaisim_noS1.tdd.10MHz.TM2 oaisim_noS1.tdd.20MHz.TM2 </tags>
+      <search_expr_true>"DL and UL loss rate below 10"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010300">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 FDD, 1 eNB + 1 UE 1 eNB (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 -F</main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010301">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 -F -a</main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags> 
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010302">
+      <class>execution</class>
+      <desc> Run OAISIM Rel10 FDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) and search for errors, segmentation fault or exit</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2 -F
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2 -F </main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2 </tags> 
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010303">
+      <class>execution</class>
+      <desc>Run OAISIM Rel10 FDD, 1 eNB + 3 UEs (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION mode and search for errors</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 1 -F -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50 -x 1 -F -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100 -x 1 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 25 -x 2 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 50  -x 2 -F -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u3 -n100 -R 100  -x 2 -F -a</main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags>
+      <search_expr_true>"Received RRCConnectionReconfigurationComplete from UE 0" "Received RRCConnectionReconfigurationComplete from UE 1" "Received RRCConnectionReconfigurationComplete from UE 2"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010304">
+      <class>execution</class>
+      <desc>Run OAI Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) without PHY_ABSTRACTION mode, ping from from eNB to UE, and for check for no packet losses</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -c26
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -c26
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -c26
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -c26
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2 -F -c26
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 -F -c26</main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2</tags>
+      <search_expr_true>"DL and UL loss rate below 10"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010305">
+      <class>execution</class>
+      <desc>Run OAI Rel10 FDD, 1 eNB + 1 UE (5 MHz/10MHz/20MHz), (TM 1,2) in PHY_ABSTRACTION  mode, send ping from from eNB to UE, and check for no packet losses</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 1 -F -c26 -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50 -x 1 -F -c26 -a
+                       -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100 -x 1 -F -c26 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 25 -x 2 -F -c26 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 50  -x 2 -F -c26 -a
+                      -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -b1 -u1 -n100 -R 100  -x 2 -F -c26 -a</main_exec_args>
+      <tags>oaisim_noS1.FDD.5MHz.TM1 oaisim_noS1.FDD.10MHz.TM1 oaisim_noS1.FDD.20MHz.TM1 oaisim_noS1.FDD.5MHz.TM2 oaisim_noS1.FDD.10MHz.TM2 oaisim_noS1.FDD.20MHz.TM2 </tags>
+      <search_expr_true>"DL and UL loss rate below 10"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010400">
+      <class>execution</class>
+      <desc>Check if eMBMS procedure is not finished completely, make sure that the SIB13/MCCH have been correclty received by UEs</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -l7 -x 1 -Q3 -n 100 -b1 -u1</main_exec_args>
+      <search_expr_true>"Found MBSFNAreaConfiguration from eNB 0"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>oaisim_noS1.eMBMS</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010401">
+      <class>execution</class>
+      <desc>Check if eMBMS multicast/broadcast data is received, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -l7 -x 1 -T mscbr -Q3 -n 100 -b1 -u1</main_exec_args>
+      <search_expr_true>"Received a multicast packet"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>oaisim_noS1.eMBMS</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010402">
+      <class>execution</class>
+      <desc>Check for eMBMS multicast/broadcast data received in fdd mode, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -l7 -F -T mscbr -x 1 -Q3 -n 100 -b1 -u1</main_exec_args>
+      <search_expr_true>"Received a multicast packet"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>oaisim_noS1.eMBMS</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="010403">
+      <class>execution</class>
+      <desc>Check for eMBMS multicast/broadcast DF relaying working properly in fdd mode, make sure that the SIB13/MCCH/MTCH have been correclty received by UEs</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args>--oaisim --noS1  -c </compile_prog_args>
+      <pre_exec>$OPENAIR_DIR/cmake_targets/tools/init_nas_nos1</pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1</main_exec>
+      <main_exec_args> -O $OPENAIR_TARGETS/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf -A AWGN -l7 -c43 -F -T mbvbr -Q4 -j1 -n120</main_exec_args>
+      <search_expr_true>"MTCH for sync area 1"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>oaisim_noS1.eMBMS</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015000">
+      <class>execution</class>
+      <desc>test_aes128_cmac_encrypt</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_cmac_encrypt</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_aes128_cmac_encrypt</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015001">
+      <class>execution</class>
+      <desc>test_aes128_ctr_decrypt</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_ctr_decrypt</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_aes128_ctr_decrypt</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015002">
+      <class>execution</class>
+      <desc>test_aes128_ctr_encrypt</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_aes128_ctr_encrypt</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_aes128_ctr_encrypt</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015003">
+      <class>execution</class>
+      <desc>test_secu_kenb</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_kenb</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_kenb</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015004">
+      <class>execution</class>
+      <desc>test_secu_knas</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_knas</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015005">
+      <class>execution</class>
+      <desc>test_secu_knas_encrypt_eea1</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eea1</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_knas_encrypt_eea1</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015006">
+      <class>execution</class>
+      <desc>test_secu_knas_encrypt_eea2</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eea2</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_knas_encrypt_eea2</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+   <testCase id="015007">
+      <class>execution</class>
+      <desc>test_secu_knas_encrypt_eia1</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eia1</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_knas_encrypt_eia1</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+   <testCase id="015008">
+      <class>execution</class>
+      <desc>test_secu_knas_encrypt_eia2</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_secu_knas_encrypt_eia1</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_secu_knas_encrypt_eia2</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+   <testCase id="015009">
+      <class>execution</class>
+      <desc>test_kdf</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --core_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/test_kdf</main_exec>
+      <main_exec_args> --verbose</main_exec_args>
+      <search_expr_true>"finished with 0 errors"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <tags>test_kdf</tags>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015100">
+      <class>execution</class>
+      <desc>dlsim test cases (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB), 
+      (Test 5: 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)),
+      (Test 6, 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)),
+      (Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)),
+      (Test 7, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)),
+      (Test 7b, 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)),
+      (Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)),
+      (Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)),
+      (Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%))
+      (TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)),
+      (TM2 Test 1b 20 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)),
+       </desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --phy_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/dlsim</main_exec>
+      <main_exec_args> -m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L
+                       -m4 -gF -s0 -w1.0 -f.2 -n500 -B6 -c4 -z2 -O70
+                       -m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L
+                       -m14 -gF -s6.7 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70 -L
+                       -m15 -gG -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O30 -L
+                       -m14 -gG -s1.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O30 -L
+                       -m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70 -L
+                       -m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70 -L
+                       -m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L
+		       -m14 -gF -s6.8  -w1.0 -f.2 -n500 -B50 -c2 -x2 -y2 -z2 -O70 -L
+                       -m13 -gF -s5.9  -w1.0 -f.2 -n500 -B25 -c3 -x2 -y2 -z2 -O70 -L</main_exec_args>
+      <tags>dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.TM2_test1 dlsim.TM2_test1b</tags>
+      <search_expr_true>"passed"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+    <testCase id="015101">
+      <class>execution</class>
+      <desc>ulsim Test cases. (Test 1, 5 MHz, FDD (MCS 5), AWGN, 6dB), 
+             (Test 2, 5 MHz, FDD (MCS 16), AWGN , 12dB (70%)),
+             (Test 3, 10 MHz, R3.FDD (MCS 5), AWGN, 6dB (70%)),
+             (Test 4, 10 MHz, R3-1.FDD (MCS 16), AWGN, 12dB (70%)),
+             (Test 5, 20 MHz, FDD (MCS 5), AWGN, 6dB (70%)),
+             (Test 6, 20 MHz, FDD (MCS 16), AWGN, 12 dB (70%))</desc>
+      <pre_compile_prog></pre_compile_prog>
+      <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
+      <compile_prog_args> --phy_simulators  -c </compile_prog_args>
+      <pre_exec></pre_exec>
+      <pre_exec_args></pre_exec_args>
+      <main_exec>$OPENAIR_DIR/cmake_targets/lte-simulators/build/ulsim</main_exec>
+      <main_exec_args> -B25 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L
+                       -B25 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L
+                        -B50 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L 
+                       -B50 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L
+                        -B100 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L
+                       -B100 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L</main_exec_args>
+     <tags>ulsim.test1 ulsim.test2 ulsim.test3 ulsim.test4 ulsim.test5 ulsim.test6</tags>
+      <search_expr_true>"passed"</search_expr_true>
+      <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
+      <nruns>3</nruns>
+    </testCase>
+
+  <testCase id="015500" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=1.0Mbits/sec max=1.0Mbits/sec average=1.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.5MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="015501" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=2.0Mbits/sec max=2.0Mbits/sec average=2.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.10MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015502" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=4.0Mbits/sec max=4.0Mbits/sec average=4.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.20MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015503" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec duration=60.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.5MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015504" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true>throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.10MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015505" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true>throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.20MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="015506" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=1.0Mbits/sec max=1.0Mbits/sec average=1.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.5MHz.FDD.Band_7.UL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="015507" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=2.0Mbits/sec max=2.0Mbits/sec average=2.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.10MHz.FDD.Band_7.UL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015508" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=4.0Mbits/sec max=4.0Mbits/sec average=4.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.20MHz.FDD.Band_7.UL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015509" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true>throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.5MHz.FDD.Band_7.DL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015510" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true>throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.10MHz.FDD.Band_7.DL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015511" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tx_gain 90
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  rx_gain 130
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_rx  2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  nb_antennas_tx 2
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true>throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPb210.ALU_EPC.Bandrich.20MHz.FDD.Band_7.DL.2TX.2RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="015800" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=1.0Mbits/sec max=1.0Mbits/sec average=1.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.5MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="015801" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310..conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=2.0Mbits/sec max=2.0Mbits/sec average=2.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.10MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015802" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.remote.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=4.0Mbits/sec max=4.0Mbits/sec average=4.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.20MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015803" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.5MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015804" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.10MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="015805" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>mozart</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth0\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.111/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S /usr/local/bin/niusrprio_pcie start ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.epc.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>USRPx310.ALU_EPC.Bandrich.20MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+
+
+  <testCase id="016100" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2; dmesg|tail </eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=1.0Mbits/sec max=1.0Mbits/sec average=1.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.5MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+  <testCase id="016101" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1                     
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=2.0Mbits/sec max=2.0Mbits/sec average=2.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.10MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="016102" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;  iperf -u -c  192.172.0.1 -b 10Mbits/s -t 300 -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 5; iperf -s -i 1 -u -f m -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true>throughput_test min=4.0Mbits/sec max=4.0Mbits/sec average=4.0Mbits/sec duration=300.0s </EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.20MHz.FDD.Band_7.UL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="016103" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 25
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=4.0Mbits/sec max=5.0Mbits/sec average=4.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.5MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="016104" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=8.0Mbits/sec max=9.0Mbits/sec average=8.5Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.10MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+  <testCase id="016105" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>amerique</EPC>
+    <TimeOut_cmd>360</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  N_RB_DL 100
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  mme_ip_address "ipv4=\"192.168.12.26\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf downlink_frequency 2660000000L
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  uplink_frequency_offset -120000000
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  frame_type \"FDD\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_rx  1
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  nb_antennas_tx 1                     
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1_MME       \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_IPV4_ADDRESS_FOR_S1_MME          \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_INTERFACE_NAME_FOR_S1U          \"eth1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf   ENB_IPV4_ADDRESS_FOR_S1U           \"192.168.12.82/24\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  ENB_PORT_FOR_S1U                     2152</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w EXMIMO -x -c </eNB_compile_prog_args>
+    <eNB_pre_exec>sudo -E -S $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 ; dmesg|tail</eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"4\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"5\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"6\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -x -c </UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; sleep 45; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>while true; do var=`ifconfig ppp0` ;sleep 1; if [ "$var" != "" ]; then break; fi ; done ; sleep 5;   iperf -s -i 1 -u -f m -B 192.172.0.2</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+    <UE_stop_script>sudo -S -E $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue </UE_stop_script>
+    <UE_search_expr_true>throughput_test min=15.0Mbits/sec max=15.0Mbits/sec average=15.0Mbits/sec duration=300.0s </UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" </EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/opt/ltebox/tools/stop_ltebox ; /opt/ltebox/tools/start_ltebox ; sleep 3000</EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/opt/hss_sim0609/starthss >> /dev/null ; sleep 3000 </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>sleep 60; iperf -u -c  192.172.0.2 -b 10Mbits/s -t 300 -B 192.172.0.1</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <tags>EXMIMO.ALU_EPC.Bandrich.20MHz.FDD.Band_7.DL.1TX.1RX</tags>
+    <nruns>10</nruns>
+    </testCase> 
+
+
+
+  <testCase id="015600" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+    <EPC>nano</EPC>
+    <TimeOut_cmd>60</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.62\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -c</eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec>iperf -s</eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -c</UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>ping 192.172.0.1</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\" 
+                     BUILD/EPC/epc.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\"
+                     BUILD/EPC/epc.conf.in   MME_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.62/24\"
+                     BUILD/EPC/epc.conf.in   SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP \"192.168.12.62/24\"
+                     BUILD/EPC/epc.conf.in   PGW_IPV4_ADDRESS_FOR_SGI  \"192.168.12.62/24\"</EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>/SCRIPTS/run_epc -g </EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>/SCRIPTS/run_hss -g </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>iperf -s</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true></EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+    <nruns>10</nruns>
+   </testCase>
+
+
+  <testCase id="015700" >
+    <class>lte-softmodem</class>
+    <desc></desc>
+    <eNB>calisson</eNB>
+    <UE>stevens</UE>
+   <EPC>calisson</EPC>
+    <TimeOut_cmd>60</TimeOut_cmd>
+    <eNB_working_dir>/tmp</eNB_working_dir>
+    <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mobile_network_code \"92\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  N_RB_DL 50
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf  mme_ip_address "ipv4=\"192.168.12.62\";ipv6=\"192:168:30::17\";active=\"yes\";preference=\"ipv4\";"</eNB_config_file>
+    <eNB_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</eNB_compile_prog>
+    <eNB_compile_prog_args>--eNB -w USRP -c</eNB_compile_prog_args>
+    <eNB_pre_exec></eNB_pre_exec>
+    <eNB_pre_exec_args></eNB_pre_exec_args>
+    <eNB_main_exec>$OPENAIR_DIR/cmake_targets/lte_build_oai/build/lte-softmodem</eNB_main_exec>
+    <eNB_main_exec_args> -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  </eNB_main_exec_args>
+    <eNB_traffic_exec></eNB_traffic_exec>
+    <eNB_traffic_exec_args></eNB_traffic_exec_args>
+    <eNB_search_expr_true></eNB_search_expr_true>
+    <eNB_search_expr_false></eNB_search_expr_false>
+    <eNB_terminate_missing_procs>True</eNB_terminate_missing_procs>
+
+    <UE_working_dir>/tmp</UE_working_dir>
+    <UE_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  tracking_area_code \"1\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_country_code \"208\"
+                     targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf  mobile_network_code \"92\"</UE_config_file>
+    <UE_compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</UE_compile_prog>
+    <UE_compile_prog_args>--eNB -w USRP -c</UE_compile_prog_args>
+    <UE_pre_exec></UE_pre_exec>
+    <UE_pre_exec_args></UE_pre_exec_args>
+    <UE_main_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --stop-ue ; $OPENAIR_DIR/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py --start-ue </UE_main_exec>
+    <UE_main_exec_args></UE_main_exec_args>
+    <UE_traffic_exec>ping 192.172.0.1</UE_traffic_exec>
+    <UE_traffic_exec_args></UE_traffic_exec_args>
+    <UE_search_expr_true></UE_search_expr_true>
+    <UE_search_expr_false></UE_search_expr_false>
+    <UE_terminate_missing_procs>True</UE_terminate_missing_procs>
+
+    <EPC_working_dir>/tmp</EPC_working_dir>
+    <EPC_config_file>BUILD/EPC/epc.local.enb.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.local.enb.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.local.enb.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.local.enb.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.82/24\"
+                     BUILD/EPC/epc.conf.in  MCC \"208\"
+                     BUILD/EPC/epc.conf.in  MNC \"92\"
+                     BUILD/EPC/epc.conf.in   TAC \"1\"
+                     BUILD/EPC/epc.conf.in   PGW_INTERFACE_NAME_FOR_SGI \"eth1\"
+                     BUILD/EPC/epc.conf.in   PGW_IPV4_ADDRESS_FOR_SGI \"192.168.12.62/24\"
+                     BUILD/EPC/epc.conf.in   MME_IPV4_ADDRESS_FOR_S1_MME \"192.168.12.62/24\"
+                     BUILD/EPC/epc.conf.in   SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP \"192.168.12.62/24\"
+                     BUILD/EPC/epc.conf.in   PGW_IPV4_ADDRESS_FOR_SGI  \"192.168.12.62/24\"</EPC_config_file>
+    <EPC_compile_prog>SCRIPTS/build_epc</EPC_compile_prog>
+    <EPC_compile_prog_args>-c -l</EPC_compile_prog_args>
+    <HSS_compile_prog>SCRIPTS/build_hss</HSS_compile_prog>
+    <HSS_compile_prog_args> -c -l </HSS_compile_prog_args>
+
+    <EPC_pre_exec></EPC_pre_exec>
+    <EPC_pre_exec_args></EPC_pre_exec_args>
+    <EPC_main_exec>SCRIPTS/run_epc -l </EPC_main_exec>
+    <EPC_main_exec_args></EPC_main_exec_args>
+    <HSS_main_exec>SCRIPTS/run_hss  </HSS_main_exec>
+    <HSS_main_exec_args></HSS_main_exec_args>
+    <EPC_traffic_exec>iperf -s</EPC_traffic_exec>
+    <EPC_traffic_exec_args></EPC_traffic_exec_args>
+    <EPC_search_expr_true></EPC_search_expr_true>
+    <EPC_search_expr_false></EPC_search_expr_false>
+    <EPC_terminate_missing_procs>True</EPC_terminate_missing_procs>
+
+    <nruns>10</nruns>
+   </testCase>
+
+  </testCaseList>
+
+
+
+
diff --git a/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py b/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py
new file mode 100755
index 0000000000000000000000000000000000000000..ae25013f52cda113300db1223a663580fba1119c
--- /dev/null
+++ b/cmake_targets/autotests/tools/configure_cots_bandrich_ue.py
@@ -0,0 +1,154 @@
+#!/usr/bin/python 
+
+import time
+import serial
+import os
+from pyroute2 import IPRoute
+import sys
+import re
+import threading
+import signal
+import traceback
+import os
+
+# configure the serial connections (the parameters differs on the device you are connecting to)
+#First we find an open port to work with
+serial_port=''
+ser=serial.Serial()
+openair_dir = os.environ.get('OPENAIR_DIR')
+if openair_dir == None:
+  print "Error getting OPENAIR_DIR environment variable"
+  sys.exit(1)
+
+def find_open_port():
+   global serial_port, ser
+   max_ports=100
+   if os.path.exists(serial_port) == True:
+     return serial_port
+   for port in range(2,100):
+      serial_port = '/dev/ttyUSB'+str(port)
+      if os.path.exists(serial_port) == True:
+         print 'New Serial Port : ' + serial_port
+         break
+
+   ser = serial.Serial(port=serial_port)
+   return
+
+find_open_port()
+print 'Using Serial port : ' + serial_port  
+    
+#serial_port = '/dev/ttyUSB2'
+bandrich_ppd_config = os.environ.get('OPENAIR_DIR') + '/cmake_targets/autotests/tools/wdial.bandrich.conf'
+
+exit_flag=0
+
+def signal_handler(signal, frame):
+        print('You pressed Ctrl+C!')
+        print('Resetting the UE to detached state')
+        timeout=10
+        exit_flag=1
+        send_command('AT+CGATT=0' , 'OK' , timeout)
+        sys.exit(0)
+
+signal.signal(signal.SIGINT, signal_handler)
+
+
+
+#ser.open()
+#ser.isOpen()
+
+class pppThread (threading.Thread):
+    def __init__(self, threadID, name, counter):
+        threading.Thread.__init__(self)
+        self.threadID = threadID
+        self.name = name
+        self.counter = counter
+    def run(self):
+        print "Starting " + self.name
+        #Here we keep running pppd thread in indefinite loop as this script terminates sometimes
+        #while 1:
+        while 1:
+           time.sleep(5) #Hard coded, do not reduce this number! 
+           print "Starting wvdial now..."
+           print 'exit_flag = ' + str(exit_flag)
+           send_command('AT+CGATT=1','OK', 300)
+           os.system('wvdial -C ' + bandrich_ppd_config + '' )
+           if exit_flag == 1:
+              print "Exit flag set to true. Exiting pppThread now"
+           print "Terminating wvdial now..."
+
+def send_command (cmd, response, timeout):
+   count=0
+   sleep_duration = 1
+   print 'In function: send_command: cmd = <' + cmd + '> response: <' + response + '> \n'
+   global serial_port, ser
+   while count <= timeout:
+      try:
+        #Sometimes the port does not exist coz of reset in modem.
+        #In that case, we need to search for this port again
+        if os.path.exists(serial_port) == False:
+            find_open_port()
+        ser.write (cmd + '\r\n')
+        out = ''
+        time.sleep(sleep_duration)
+        count = count + sleep_duration
+        while ser.inWaiting() > 0:
+            out += ser.read(1)
+        print 'out = <' + out + '> response = <' + response + '> \n'
+        if re.search(response, out):
+          break
+      except Exception, e:
+        error = ' cmd : ' + cmd + ' response : ' + response
+        error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+        error = error + traceback.format_exc()
+        print error
+        
+
+def start_ue () :
+   #print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
+   timeout=60 #timeout in seconds
+   send_command('AT', 'OK' , timeout)
+   send_command('AT+CFUN=1' , 'OK' , timeout)
+   #send_command('AT+CGATT=0' , 'OK' , timeout)
+   send_command('AT+CGATT=1','OK', 300)
+   #os.system('wvdial -C ' + bandrich_ppd_config + ' &' )
+   
+   thread_ppp = pppThread(1, "ppp_thread", 1)
+   thread_ppp.start()
+
+   iface='ppp0'
+   
+   while 1:
+     time.sleep ( 2)
+     #Now we check if ppp0 interface is up and running
+     try:
+        if exit_flag == 1:
+          break
+        ip = IPRoute()
+        idx = ip.link_lookup(ifname=iface)[0]
+        os.system ('route add 192.172.0.1 ppp0')
+        os.system ('ping -c 5 192.172.0.1')
+        break
+     except Exception, e:
+        error = ' Interface ' + iface + 'does not exist...'
+        error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: '  + str(e.__class__) + " : " + str( e)
+        error = error + traceback.format_exc()
+        print error
+    
+   thread_ppp.join()
+
+def stop_ue():
+   timeout=60
+   os.system('killall wvdial')
+   send_command('AT', 'OK' , timeout)
+   send_command('AT+CGATT=0' , 'OK|ERROR' , timeout)
+   send_command('AT+CFUN=4' , 'OK' , timeout)
+
+for arg in sys.argv[1:]:
+    if arg == '--start-ue' :
+        start_ue()
+    elif arg == '--stop-ue' :
+        stop_ue()
+    else :
+        print " Script called with wrong arguments, arg = " + arg
+        sys.exit()
diff --git a/cmake_targets/autotests/tools/exmimo/exmimo_stop.m b/cmake_targets/autotests/tools/exmimo/exmimo_stop.m
new file mode 100644
index 0000000000000000000000000000000000000000..82aa1f2845f0fc8edf7b509debbc6b8a67f84b6f
--- /dev/null
+++ b/cmake_targets/autotests/tools/exmimo/exmimo_stop.m
@@ -0,0 +1,4 @@
+n=oarf_get_num_detected_cards;
+for i=n-1:0
+	oarf_stop(i);
+end
diff --git a/cmake_targets/autotests/tools/exmimo/init_exmimo2 b/cmake_targets/autotests/tools/exmimo/init_exmimo2
new file mode 100755
index 0000000000000000000000000000000000000000..66eedf93dd4d407deaabee6a61091c8f04fd0a61
--- /dev/null
+++ b/cmake_targets/autotests/tools/exmimo/init_exmimo2
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+################################################################################
+#   OpenAirInterface
+#   Copyright(c) 1999 - 2015 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 init_nas_nos1
+# brief loads the nasmesh module and sets up the radio bearers (used to provide ip interface without S1 interface)
+# author Florian Kaltenberger
+#
+#######################################
+
+load_module() 
+{
+  mod_name=${1##*/}
+  mod_name=${mod_name%.*}
+  if awk "/$mod_name/ {found=1 ;exit} END {if (found!=1) exit 1}" /proc/modules
+    then
+      echo "module $mod_name already loaded: I remove it first"
+      sudo rmmod $mod_name
+  fi
+  echo loading $mod_name
+  sudo insmod $1
+}
+
+
+function main() 
+{
+PCI=`lspci -m | grep Xilinx`
+if [ -z "$PCI" ]; then
+ echo "No card found. Stopping!"
+ return
+fi
+
+## This part corrects the wrong configuration of the endpoint done by the bios in some machines
+echo "$PCI" | while read config_reg; do
+SLOT_NUMBER=`echo $config_reg | awk -F\" '{print $1}'`
+sudo setpci -s $SLOT_NUMBER 60.b=10
+done
+
+
+load_module $OPENAIR_DIR/targets/bin/openair_rf.ko
+sleep 1
+
+if [ ! -e /dev/openair0 ]; then 
+ sudo mknod /dev/openair0 c 127 0
+ sudo chmod a+rw /dev/openair0
+fi
+
+DEVICE=`echo $PCI | awk -F\" '{print $(NF-1)}' | awk '{print $2}'`
+DEVICE_SWID=${DEVICE:2:2}
+if [ $DEVICE_SWID == '0a' ]; then
+   echo "Using firware version 10"
+   $OPENAIR_DIR/targets/bin/updatefw -s 0x43fffff0 -b -f $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
+else
+   echo 'No corresponding firmware found'
+   return
+fi
+}
+
+main "$@"
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_config_exmimo.oct b/cmake_targets/autotests/tools/exmimo/oarf_config_exmimo.oct
new file mode 100755
index 0000000000000000000000000000000000000000..f8c24153f648cb6f0211defd9f958dab8dae92b2
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_config_exmimo.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_get_frame.oct b/cmake_targets/autotests/tools/exmimo/oarf_get_frame.oct
new file mode 100755
index 0000000000000000000000000000000000000000..8dd108b798d3958df6e296fe1e7101744e041f2e
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_get_frame.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_get_num_detected_cards.oct b/cmake_targets/autotests/tools/exmimo/oarf_get_num_detected_cards.oct
new file mode 100755
index 0000000000000000000000000000000000000000..3d84d86ebad99e6997ec6f86e4f09e8cf83be245
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_get_num_detected_cards.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_send_frame.oct b/cmake_targets/autotests/tools/exmimo/oarf_send_frame.oct
new file mode 100755
index 0000000000000000000000000000000000000000..4da12f517237f8125b673ffa8c8d56c36a85f6a5
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_send_frame.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_stop.oct b/cmake_targets/autotests/tools/exmimo/oarf_stop.oct
new file mode 100755
index 0000000000000000000000000000000000000000..b234829cc085c05b638981d5e03919ebc4300859
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_stop.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/oarf_stop_without_reset.oct b/cmake_targets/autotests/tools/exmimo/oarf_stop_without_reset.oct
new file mode 100755
index 0000000000000000000000000000000000000000..74ca17e3e0d1ed96a16c879a057623cfb20a5f47
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/oarf_stop_without_reset.oct differ
diff --git a/cmake_targets/autotests/tools/exmimo/openair_rf.ko b/cmake_targets/autotests/tools/exmimo/openair_rf.ko
new file mode 100644
index 0000000000000000000000000000000000000000..2f948c087147032d9bd0b4259cdeaa337a853d3c
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/openair_rf.ko differ
diff --git a/cmake_targets/autotests/tools/exmimo/updatefw b/cmake_targets/autotests/tools/exmimo/updatefw
new file mode 100755
index 0000000000000000000000000000000000000000..d404a74cbbe032cb3efda14a80ab613c6c92f07b
Binary files /dev/null and b/cmake_targets/autotests/tools/exmimo/updatefw differ
diff --git a/cmake_targets/autotests/tools/remove_old_programs.bash b/cmake_targets/autotests/tools/remove_old_programs.bash
new file mode 100755
index 0000000000000000000000000000000000000000..772ba11f58342d542aba7ff980fa39996b82943f
--- /dev/null
+++ b/cmake_targets/autotests/tools/remove_old_programs.bash
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+#$1 programs to be killed and checked
+var=`ps -A |grep -E -i $1`
+echo $var
+if [ -n "$var" ]; then echo 'Match found'; else echo 'Match not found' ;fi 
+
diff --git a/cmake_targets/autotests/tools/search_repl.py b/cmake_targets/autotests/tools/search_repl.py
new file mode 100755
index 0000000000000000000000000000000000000000..0a91945c771770992f926386d258b8f456921830
--- /dev/null
+++ b/cmake_targets/autotests/tools/search_repl.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+import sys
+import re
+
+#Arg 1 name of file
+#Arg 2 keyword
+#arg 3 replacement text
+#Note that these should be seperated by spaces
+if len(sys.argv) != 4:
+  print "search_repl.py: Wrong number of arguments. This program needs 3 arguments"
+  sys.exit()
+filename = sys.argv[1]
+keyword = sys.argv[2]
+replacement_text = sys.argv[3]
+
+file = open(filename, 'r')
+string = file.read()
+file.close()
+
+
+if keyword == 'mme_ip_address':
+   #string =  (re.sub(r"mme_ip_address\s*=\s*\([^\$]+)\)\s*;\s*", r"<% tex \1 %>", t, re.M)
+   replacement_text = keyword + ' =  ( { ' + replacement_text + ' } ) ; '
+   string = re.sub(r"mme_ip_address\s*=\s*\(([^\$]+?)\)\s*;", replacement_text, string, re.M)
+else :
+   replacement_text = keyword + ' =  ' + replacement_text + ' ; '
+   string = re.sub(r"%s\s*=\s*([^\$]+?)\s*;" % keyword , replacement_text, string, re.M)   
+#else : 
+#   replacement_text = keyword + ' =\"' + replacement_text + '\" ; '
+#   string = re.sub(r"%s\s*=\s*\"([^\$]+?)\"\s*;" % keyword , replacement_text, string, re.M)
+
+file = open(filename, 'w')
+file.write(string)
+file.close()
+
diff --git a/cmake_targets/autotests/tools/wdial.bandrich.conf b/cmake_targets/autotests/tools/wdial.bandrich.conf
new file mode 100644
index 0000000000000000000000000000000000000000..e1b64568f95d339bd2989979bfcb4fd654e813d7
--- /dev/null
+++ b/cmake_targets/autotests/tools/wdial.bandrich.conf
@@ -0,0 +1,36 @@
+[Dialer Defaults]
+Modem = /dev/ttyUSB0
+ISDN = off
+Modem Type = Analog Modem
+Baud = 9600
+Init = ATZ
+Init2 = AT+CPIN?
+Init3 = AT+CGREG?
+Init4 = AT+COPS?
+Init5 = AT+CSQ
+Init6 =
+Init7 = AT+CGATT=1
+Init8 = 
+Init9 = 
+Phone = *99***1#
+Phone1 = 
+Phone2 = 
+Phone3 = 
+Phone4 = 
+Dial Prefix = 
+Dial Attempts = 1
+Dial Command = ATM1L3DT
+Ask Password = off
+Password = ''
+Username = ImaginLab
+Auto Reconnect = off
+Abort on Busy = off
+Carrier Check = on
+Check Def Route = on
+Abort on No Dialtone = on
+Stupid Mode = on
+Idle Seconds = 0
+Auto DNS = on
+;Minimize = off
+;Dock = off
+;Do NOT edit this file by hand!
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index cbbfa98045494f384db4a02798a95957c064c7c3..25bec96b98cd28571ef6b9f65457cb256bffb3e8 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -47,9 +47,14 @@ PRINT_STATS="False"
 VCD_TIMING="False"
 REL="Rel10"
 HW="EXMIMO"
+NOS1=0
 EPC=0
 VERBOSE_COMPILE=0
 CFLAGS_PROCESSOR_USER=""
+RUN_GROUP=0
+TEST_CASE_GROUP=""
+
+trap handle_ctrl_c INT
 
 function print_help() {
   echo_info '
@@ -77,8 +82,6 @@ Options
    Makes the LTE softmodem
 --UE
    Makes the UE specific parts (ue_ip, usim, nvram) 
---EPC
-   Makes the EPC (MME-SPGW, HSS)
 --RRH
    Makes the RRH
 -r | --3gpp-release
@@ -95,6 +98,8 @@ Options
    Makes the core security features unitary simulators
 -s | --check
    runs a set of auto-tests based on simulators and several compilation tests
+--run-group 
+   runs only specified test cases specified here. This flag is only valid with -s
 -V | --vcd
    Adds a debgging facility to the binary files: GUI with major internal synchronization events
 -x | --xforms
@@ -111,8 +116,8 @@ Options
 
 Usage (first build):
  oaisim (eNB + UE): ./build_oai -I -g --oaisim -x --install-system-files
- Eurecom EXMIMO + COTS UE : ./build_oai -I -g --eNB --EPC -x --install-system-files
- NI/ETTUS B201  + COTS UE : ./build_oai -I -g --eNB --EPC -x --install-system-files -w USRP
+ Eurecom EXMIMO + COTS UE : ./build_oai -I -g --eNB -x --install-system-files
+ NI/ETTUS B201  + COTS UE : ./build_oai -I -g --eNB -x --install-system-files -w USRP
 Usage (Regular):
  oaisim : ./build_oai --oaisim -x 
  Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
@@ -154,10 +159,6 @@ function main() {
             UE=1
             echo_info "Will compile UE"
             shift;;
-       --EPC)
-            EPC=1
-            echo_info "Will compile EPC"
-            shift;;
        --RRH)
             RRH=1
             echo_info "Will compile RRH"
@@ -193,6 +194,11 @@ function main() {
             OAI_TEST=1
             echo_info "Will run auto-tests"
             shift;;
+       --run-group)
+            RUN_GROUP=1
+            TEST_CASE_GROUP=$2
+            echo_info "executing test cases only in group: $TEST_CASE_GROUP"
+            shift 2;;
        -V | --vcd)
             echo_info "setting gtk-wave output"
             VCD_TIMING=1
@@ -265,12 +271,11 @@ function main() {
     if [ "$HW" == "OAI_USRP" ] ; then
       echo_info "installing packages for USRP support"
       check_install_usrp_uhd_driver
-    fi
+    fi 
     if [ "$HW" == "OAI_BLADERF" ] ; then
       echo_info "installing packages for BALDERF support"
       check_install_bladerf_driver
     fi
-
   fi
 
   if [ "$INSTALL_OPTIONAL" = "1" ] ; then
@@ -321,7 +326,7 @@ function main() {
     cmake ..
   fi
 
-  if [ "$eNB" = "1" ] ; then
+  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
     echo_info "Compiling $lte_exec"
     compilations \
 	  $lte_build_dir $lte_exec \
@@ -338,7 +343,7 @@ function main() {
     fi
   fi
 
-  if [ "$UE" = 1 ] ; then
+  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
     # ue_ip driver compilation
     echo_info "Compiling UE specific part"
     compilations \
@@ -407,7 +412,7 @@ function main() {
 
   # EXMIMO drivers & firmware loader
   ###############
-  if [ "$HW" = "EXMIMO" -a "$EPC" = "0" ] ; then
+  if [ "$HW" = "EXMIMO" ] ; then
     
     echo_info "Compiling Express MIMO 2 board drivers"
     compilations \
@@ -545,39 +550,29 @@ function main() {
       rrh_gw $dbin/rrh_gw
   fi
 
-  # EPC compilation
-  ##################
-  if [ "$EPC" = "1" ] ; then
-      echo_info "Compiling EPC"
-      # Example HSS and EPC run on the same host
-      if [ "$CLEAN" = "1" ]; then
-	  $OPENAIR_DIR/cmake_targets/tools/build_epc --clean --debug --transport-tcp-only --transport-prefer-tcp --s6a-server
-	  $OPENAIR_DIR/cmake_targets/tools/build_hss --clean --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
-      else
-	  $OPENAIR_DIR/cmake_targets/tools/build_epc --debug --transport-tcp-only --transport-prefer-tcp --s6a-server
-	  $OPENAIR_DIR/cmake_targets/tools/build_hss --debug --transport-tcp-only --transport-prefer-tcp --fqdn `hostname --fqdn` --connect-to-mme `hostname --fqdn`
-      fi
-      
-      #   if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then
-      #    if [ -f $dbin/hss.conf ] ; then
-      #      sed -e 's/ *= */=/' $dbin/hss.conf > $dconf/hss.conf.nospace
-      #      source $dconf/hss.conf.nospace
-      #      rm -f $dconf/hss.conf.nospace
-      #      create_hss_database root linux "$MYSQL_user" "$MYSQL_pass" "$MYSQL_db"
-      #    else
-      #      echo_warning "not created HSS database: config not found"
-      #    fi
-      #  fi
-  fi
   
   # Auto-tests
   #####################
   if [ "$OAI_TEST" = "1" ]; then
     echo_info "10. Running OAI pre commit tests (pre-ci) ..."
+    echo_error "These scripts ASSUME that user is in /etc/sudoers and can execute commands without PASSWORD prompt"
+    echo_error "Add the following lines in /etc/sudoers file to make your __user_name__ sudo without password prompt"
+    echo_error " __your_user_name__ ALL = (ALL:ALL) NOPASSWD: ALL"
+    echo_error " __your_user_name__ ALL = (ALL) NOPASSWD: ALL "
+    echo_info "The log file for the autotest script for debugging is located here: $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log "
+    echo_info "The results of autotests results is located here: $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml "
+    echo_info "You can hit CTRL-C any time to terminate the autotests..."
+    echo "Current User Name: $USER"
+    read -s -p "Enter Password: " mypassword
+    echo -e "\n"
     rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
     mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
-    $OPENAIR_DIR/cmake_targets/autotests/run_compilation_autotests.bash
-    $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash
+    if [ "$RUN_GROUP" -eq "1" ]; then
+        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p '$mypassword' >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
+    else
+        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p '$mypassword' >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
+    fi
+    wait
   else
     echo_info "10. Bypassing the Tests ..."
   fi
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 4968a420168bd05ad2cfe4e7b09cd42b485fc842..a1fefec3ce57275189ba37aee399b2b21db31eee 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -111,7 +111,12 @@ compilations() {
   cd $OPENAIR_DIR/cmake_targets/$1/build
   {
     rm -f $3
-    make -j`nproc` $2 VERBOSE=$VERBOSE_COMPILE
+    if [ "$VERBOSE_COMPILE" == "1" ]; then
+       make -j`nproc` $2 VERBOSE=$VERBOSE_COMPILE
+    else
+       make -j`nproc` $2
+    fi
+
   } > $dlog/$2.$REL.txt 2>&1
   echo_info "Log file for compilation has been written to: $dlog/$2.$REL.txt"
   if [ -s $3 ] ; then
@@ -158,22 +163,33 @@ install_gnutls_from_source(){
 
 
 check_install_usrp_uhd_driver(){
+        log_file=$OPENAIR_DIR/cmake_targets/log/check_install_usrp_uhd_driver_log.txt
+        echo_info "\nIn function: check_install_usrp_uhd_driver(). Installing USRP Drivers : The logfile for the installation is located here: $log_file "
+        (
         v=$(lsb_release -cs)
         $SUDO apt-add-repository "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
         $SUDO apt-get update
         $SUDO apt-get -y install  python python-tk libboost-all-dev libusb-1.0-0-dev
         $SUDO apt-get -y install -t `lsb_release -cs` uhd --force-yes
+        ) >& $log_file
 }
 check_install_bladerf_driver(){
+        log_file=$OPENAIR_DIR/cmake_targets/log/check_install_bladerf_driver_log.txt
+        echo_info "\nIn function: check_install_bladerf_driver(). Install BLADERF drivers : The logfile for the installation is located here: $log_file "
+        (
 	$SUDO add-apt-repository -y ppa:bladerf/bladerf
 	$SUDO apt-get update
 	$SUDO apt-get install -y bladerf libbladerf-dev
-	$SUDO apt-get install bladerf-firmware-fx3
-	$SUDO apt-get install bladerf-fpga-hostedx40	
+	$SUDO apt-get install -y bladerf-firmware-fx3
+	$SUDO apt-get install -y bladerf-fpga-hostedx40	
 	bladeRF-cli --flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img	
+        ) >& $log_file
 }
 
 check_install_additional_tools (){
+    log_file=$OPENAIR_DIR/cmake_targets/log/check_install_additional_tools_log.txt
+    echo_info "\nIn function: check_install_oai_software(). Installing optional OAI packages : The logfile for the installation is located here: $log_file "
+    (
     $SUDO apt-get update
     $SUDO apt-get install -y \
 	check \
@@ -194,27 +210,32 @@ check_install_additional_tools (){
 	unzip  \
 	valgrind  \
 	vlan	  \
-	ctags
+	ctags \
+        ntpdate
+      ) >& $log_file
 }
 
 check_install_oai_software() {
     
+    log_file=$OPENAIR_DIR/cmake_targets/log/check_install_oai_software_log.txt
+    echo_info "\nIn function: check_install_oai_software(). Installing mandatory OAI packages : The logfile for the installation is located here: $log_file "
+    (
     $SUDO apt-get update
     $SUDO apt-get install -y \
-    autoconf  \
+	autoconf  \
 	automake  \
 	bison  \
 	build-essential \
 	cmake \
 	cmake-curses-gui  \
 	doxygen \
-	doxygen-gui\
-	texlive-latex-base\
+	doxygen-gui \
+	texlive-latex-base \
 	ethtool \
 	flex  \
-    gccxml \
-    gdb  \
-    git \
+	gccxml \
+	gdb  \
+	git \
 	graphviz \
 	gtkwave \
 	guile-2.0-dev  \
@@ -233,7 +254,7 @@ check_install_oai_software() {
 	libgmp-dev \
 	libgtk-3-dev \
 	libidn2-0-dev  \
-    libidn11-dev \
+	libidn11-dev \
 	libmysqlclient-dev  \
 	liboctave-dev \
 	libpgm-5.1 \
@@ -254,7 +275,12 @@ check_install_oai_software() {
 	openssh-server \
 	openssl \
 	python  \
-	subversion
+	subversion \
+	xmlstarlet \
+	python-pip \
+	pydb \
+	wvdial \
+        python-numpy
     $SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
     if [ `lsb_release -rs` = '12.04' ] ; then
         install_nettle_from_source
@@ -262,20 +288,29 @@ check_install_oai_software() {
     else
         $SUDO apt-get install -y libgnutls-dev nettle-dev nettle-bin 
     fi
+    $SUDO pip install paramiko
+    $SUDO pip install pyroute2
+    ) > $log_file 2>&1
     install_asn1c_from_source
+    $SUDO rm -fr /opt/ssh
+    $SUDO git clone https://gist.github.com/2190472.git /opt/ssh
 }
 
 install_asn1c_from_source(){
+    asn1_install_dir=$OPENAIR_DIR/cmake_targets/log/asn1c_install_log.txt
+    echo_info "\nInstalling ASN1. The log file for ASN1 installation is here: $asn1_install_dir "
+    (
+    rm -rf /tmp/asn1c-r1516
     mkdir -p /tmp/asn1c-r1516
     cd /tmp/asn1c-r1516
-    rm -rf /tmp/asn1c-r1516/*
-    svn co https://github.com/vlm/asn1c/trunk  /tmp/asn1c-r1516 -r 1516 > /tmp/log_compile_asn1c
-    patch -p0 < $OPENAIR_DIR/openair3/S1AP/MESSAGES/ASN1/asn1cpatch.p0 >> /tmp/log_compile_asn1c
-    patch -p0 < $OPENAIR_DIR/openair3/S1AP/MESSAGES/ASN1/asn1cpatch_2.p0 >> /tmp/log_compile_asn1c
-    patch -p0 < $OPENAIR_DIR/openair2/RRC/LITE/MESSAGES/asn1c/asn1cpatch.p0 >> /tmp/log_compile_asn1c
+    svn co https://github.com/vlm/asn1c/trunk  /tmp/asn1c-r1516 -r 1516 
+    patch -p0 < $OPENAIR_DIR/openair3/S1AP/MESSAGES/ASN1/asn1cpatch.p0 
+    patch -p0 < $OPENAIR_DIR/openair3/S1AP/MESSAGES/ASN1/asn1cpatch_2.p0 
+    patch -p0 < $OPENAIR_DIR/openair2/RRC/LITE/MESSAGES/asn1c/asn1cpatch.p0 
     ./configure
-    make > /tmp/log_compile_asn1c 2>&1
-    $SUDO make install
+    make -j`nproc`
+    $SUDO make install 
+    ) > $asn1_install_dir 2>&1 
 }
 
 #################################################
@@ -318,3 +353,42 @@ set_openair_env(){
     export OPENAIR_TARGETS=$openair_path/targets
 }
 
+################################
+# Function to killall the subprocesses when Ctrl-C Key is hit
+###############################
+function handle_ctrl_c(){
+CURPID=$$
+ppid=$$
+arraycounter=1
+echo_info "** Trapped CTRL-C. Killing all subprocesses now..."
+while true
+do
+        FORLOOP=FALSE
+        # Get all the child process id
+        for i in `ps -ef| awk '$3 == '$ppid' { print $2 }'`
+        do
+                if [ $i -ne $CURPID ] ; then
+                        procid[$arraycounter]=$i
+                        arraycounter=`expr $arraycounter + 1`
+                        ppid=$i
+                        FORLOOP=TRUE
+                fi
+        done
+        if [ "$FORLOOP" = "FALSE" ] ; then
+           arraycounter=`expr $arraycounter - 1`
+           ## We want to kill child process id first and then parent id's
+           while [ $arraycounter -ne 0 ]
+           do  
+             echo "first we send ctrl-c to program"
+             $SUDO kill -INT "${procid[$arraycounter]}"
+             sleep 5
+             echo "Now we force kill if that didn't work"
+             $SUDO kill -9 "${procid[$arraycounter]}" >/dev/null
+             arraycounter=`expr $arraycounter - 1`
+           done
+         exit
+        fi
+done
+}
+
+
diff --git a/cmake_targets/tools/init_nas_nos1 b/cmake_targets/tools/init_nas_nos1
old mode 100644
new mode 100755
diff --git a/cmake_targets/tools/perf_oai.bash b/cmake_targets/tools/perf_oai.bash
index 2254f64ea3ad11683daee822d243668bf078f29c..42d6be0716a8c3c1b4836c709d9ed52432c2262b 100755
--- a/cmake_targets/tools/perf_oai.bash
+++ b/cmake_targets/tools/perf_oai.bash
@@ -68,7 +68,7 @@ declare MAX_RATE=1000
 
 # set paths to the required binaries and check if the required binaries are available  
 ENB_CONFIG=$OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf
-OAISIM_EXEC=$OPENAIR_DIR/targets/bin/oaisim_nos1
+OAISIM_EXEC=$OPENAIR_DIR/cmake_targets/oaisim_noS1_build_oai/build/oaisim_nos1
 BYPASSE_ITTI=0
 OTGPLOT="$OPENAIR2_DIR/UTIL/OTG/OTGplot"
 PS2PDF="ps2pdf"
@@ -301,8 +301,8 @@ oaisim_otg_stats(){
     sync
 
     if [ ! -f $OAISIM_EXEC ]; then 
-	echo_info "3.1 compiling OAISIM ($OPENAIR_TARGETS/cmake_targets/build_oai --oaisim -c)"
-	($OPENAIR_TARGETS/cmake_targets/build_oai --oaisim -c  >> results/perf_log.txt 2>&1 )
+	echo_info "3.1 compiling OAISIM ($OPENAIR_DIR/cmake_targets/build_oai --oaisim -c --noS1)"
+	($OPENAIR_DIR/cmake_targets/build_oai --oaisim -c  --noS1 >> results/perf_log.txt 2>&1 )
 	build_stats=$?
 	if [ $build_stats != 0 ] ; then 
 	    echo_error "$OAISIM_EXEC cannot be built, check results/perf_log.txt file"
diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper
index 59ab9bc840bd8bbc94a0a5b5d72ae03e0b49896e..49a991057373dde600a7d7e098de916cb1bd5270 100644
--- a/cmake_targets/tools/test_helper
+++ b/cmake_targets/tools/test_helper
@@ -24,34 +24,40 @@ xUnit_start() {
 # \param $1 classname
 # \param $2 testcase name
 # \param $3 testcase result
-# \param $4 run index
+# \param $4 run result
+# \param $5 XML file local to test case for storing its own results
 xUnit_fail() {
   class=$1
   test_case=$2
   result=$3
-  run_index=$4
+  run_result=$4
+  xmlfile_testcase=$5
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
-  xml="<testcase classname='$class' name='$test_case' run='$run_index' time='$time' RESULT='$result'></testcase>"
+  xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
+  echo  -e $xml >> $xmlfile_testcase
   XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
   XUNIT_FAILED=$((XUNIT_FAILED+1))
 }
 
 ## Call this after the testcase finished successfully.
-# \sa xUnit_fail()
+# \sa xUnit_success()
 # \pre xUnit_start() must have been called before
 # \param $1 classname
 # \param $2 testcase name
 # \param $3 testcase result
-# \param $4 run index
+# \param $4 run result
+# \param $5 XML file local to test case for storing its own results
 xUnit_success() {
   class=$1
   test_case=$2
   result=$3
-  run_index=$4
+  run_result=$4
+  xmlfile_testcase=$5
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
-  xml="<testcase classname='$class' name='$test_case' run='$run_index' time='$time' RESULT='$result'></testcase>"
+  xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
+  echo  -e $xml >> $xmlfile_testcase
   XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
   XUNIT_SUCCESS=$((XUNIT_SUCCESS+1))
 }
diff --git a/oaienv b/oaienv
index 383c75a4b146859d63f75eefd792df1b2475f9b2..f6b298debf69e2e24c2c65cce458291b9ff0a513 100644
--- a/oaienv
+++ b/oaienv
@@ -5,7 +5,8 @@ export OPENAIR1_DIR=$OPENAIR_HOME/openair1
 export OPENAIR2_DIR=$OPENAIR_HOME/openair2
 export OPENAIR3_DIR=$OPENAIR_HOME/openair3
 export OPENAIR_TARGETS=$OPENAIR_HOME/targets
-export OPENAIRITS_DIR=$OPENAIR_HOME/openairITS
+
+export PATH=$PATH:$OPENAIR_TARGETS/bin
 
 alias  oai='cd $OPENAIR_HOME'
 alias oai0='cd $OPENAIR0_DIR'
diff --git a/openair1/PHY/LTE_ESTIMATION/adjust_gain.c b/openair1/PHY/LTE_ESTIMATION/adjust_gain.c
index 412f7cbae9c38a67a8ad731e3db787d75301112c..52f26a25629e447e6a9e086ea3d634d28257b199 100644
--- a/openair1/PHY/LTE_ESTIMATION/adjust_gain.c
+++ b/openair1/PHY/LTE_ESTIMATION/adjust_gain.c
@@ -53,7 +53,7 @@ phy_adjust_gain (PHY_VARS_UE *phy_vars_ue, uint8_t eNB_id)
   if (rssi>0) rx_power_fil_dB = rssi;
   else rx_power_fil_dB = phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id];
 
-  printf("Gain control: rssi %d (%d,%d)\n",
+  LOG_D(PHY,"Gain control: rssi %d (%d,%d)\n",
          rssi,
          phy_vars_ue->PHY_measurements.rssi,
          phy_vars_ue->PHY_measurements.rx_power_avg_dB[eNB_id]
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index a77501e14c78357872f489c2f5b3c33e7a958c68..6d6f36bc63469c4b50efe756998158ffefb0c626 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -1102,8 +1102,12 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
     dlsch[0]->harq_ids[subframe] = harq_pid;
 
-    if (dlsch0_harq->round == 0)
+    if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch[0], harq_pid);
       dlsch0_harq->status = ACTIVE;
+    }
 
     break;
 
@@ -1237,6 +1241,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
 
     if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch[0], harq_pid);
       dlsch0_harq->status = ACTIVE;
       //            printf("Setting DLSCH process %d to ACTIVE\n",harq_pid);
       // MCS and TBS don't change across HARQ rounds
@@ -1605,10 +1612,16 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
     // reset HARQ process if this is the first transmission
     if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status = ACTIVE;
     }
 
     if (dlsch1_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch1_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch1, harq_pid);
       dlsch1_harq->status = ACTIVE;
     }
 
@@ -1986,10 +1999,16 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
     // reset HARQ process if this is the first transmission
     if ((dlsch0->active==1) && (dlsch0_harq->round == 0)) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status = ACTIVE;
     }
 
     if ((dlsch1->active==1) && (dlsch1_harq->round == 0)) {
+      /* necessary test? */
+      if (dlsch1_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch1, harq_pid);
       dlsch1_harq->status = ACTIVE;
     }
 
@@ -2131,16 +2150,23 @@ int generate_eNB_dlsch_params_from_dci(int frame,
     // check if either TB is disabled (see 36-213 V8.6 p. 26)
 
 
-    if ((dlsch0_harq->rvidx == 1) && (dlsch0_harq->mcs == 0))
+    if ((dlsch0_harq->rvidx == 1) && (dlsch0_harq->mcs == 0)) {
+      LOG_W(PHY, "what to do with respect to remove_harq_pid_from_freelist?\n");
       dlsch0_harq->status = DISABLED;
+    }
 
-    if ((dlsch1_harq->rvidx == 1) && (dlsch1_harq->mcs == 0))
+    if ((dlsch1_harq->rvidx == 1) && (dlsch1_harq->mcs == 0)) {
+      LOG_W(PHY, "what to do with respect to remove_harq_pid_from_freelist?\n");
       dlsch1_harq->status = DISABLED;
+    }
 
     dlsch0_harq->Nl        = 1;
 
 
     if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status = ACTIVE;
       //      printf("Setting DLSCH process %d to ACTIVE\n",harq_pid);
     }
@@ -2305,11 +2331,17 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
 
     if ((dlsch0_harq->round == 0) && (dlsch0->active == 1) ) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status      = ACTIVE;
       dlsch0_harq->mcs         = mcs1;
     }
 
     if ((dlsch1_harq->round == 0) && (dlsch1->active == 1) ) {
+      /* necessary test? */
+      if (dlsch1_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch1, harq_pid);
       dlsch1_harq->status      = ACTIVE;
       dlsch1_harq->mcs         = mcs2;
     }
@@ -2473,6 +2505,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
 
     if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status = ACTIVE;
       //      printf("Setting DLSCH process %d to ACTIVE\n",harq_pid);
     }
@@ -2602,6 +2637,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
 
     //    dlsch0_harq->Ndi         = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->ndi;
     if (dlsch0_harq->round == 0) {
+      /* necessary test? */
+      if (dlsch0_harq->status == SCH_IDLE)
+        remove_harq_pid_from_freelist(dlsch0, harq_pid);
       dlsch0_harq->status = ACTIVE;
       //      printf("Setting DLSCH process %d to ACTIVE\n",harq_pid);
     }
diff --git a/openair1/PHY/LTE_TRANSPORT/defs.h b/openair1/PHY/LTE_TRANSPORT/defs.h
index a21693fea0e9865aa11ec495cecaf3a001006fd4..55b9c4fe4453772d8177e36f92718b55e545834a 100644
--- a/openair1/PHY/LTE_TRANSPORT/defs.h
+++ b/openair1/PHY/LTE_TRANSPORT/defs.h
@@ -258,6 +258,13 @@ typedef struct {
   uint8_t error_threshold;
   /// Pointers to 8 HARQ processes for the DLSCH
   LTE_DL_eNB_HARQ_t *harq_processes[8];
+  /// circular list of free harq PIDs (the oldest come first)
+  /// (10 is arbitrary value, must be > to max number of DL HARQ processes in LTE)
+  int harq_pid_freelist[10];
+  /// the head position of the free list (if list is free then head=tail)
+  int head_freelist;
+  /// the tail position of the free list
+  int tail_freelist;
   /// Number of soft channel bits
   uint32_t G;
   /// Codebook index for this dlsch (0,1,2,3)
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index 83066480b49e966bc485fb9e38323171c504bbc0..f051dc3ecfe9869bf993c4dfe06ea61e0edf793c 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -152,6 +152,9 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne
     for (i=0; i<10; i++)
       dlsch->harq_ids[i] = Mdlharq;
 
+    dlsch->head_freelist = 0;
+    dlsch->tail_freelist = 0;
+
     for (i=0; i<Mdlharq; i++) {
       dlsch->harq_processes[i] = (LTE_DL_eNB_HARQ_t *)malloc16(sizeof(LTE_DL_eNB_HARQ_t));
       LOG_T(PHY, "Required mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n",
@@ -192,6 +195,8 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne
         msg("Can't get harq_p %d\n",i);
         exit_flag=3;
       }
+
+      put_harq_pid_in_freelist(dlsch, i);
     }
 
     if (exit_flag==0) {
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
index 3dc325861cbdb9c0fd122504c98229dad92cb07b..de9acefb6ee3696609ff0001f915f209364bebc3 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
@@ -45,7 +45,6 @@
 #include "PHY/sse_intrin.h"
 
 
-
 #ifndef USER_MODE
 #define NOCYGWIN_STATIC static
 #else
@@ -53,9 +52,9 @@
 #endif
 
 //#define DEBUG_PHY 1
-//#define DEBUG_DLSCH_MOD 1
+//#define DEBUG_DLSCH_DEMOD 1
 
-int avg[4];
+int avg[4]; 
 
 // [MCS][i_mod (0,1,2) = (2,4,6)]
 unsigned char offset_mumimo_llr_drange_fix=0;
@@ -3091,19 +3090,21 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
   ch_mag1 = (__m128i *)&dl_ch_mag[2][jj];
   ch_mag0b = (__m128i *)&dl_ch_magb[0][jj];
   ch_mag1b = (__m128i *)&dl_ch_magb[2][jj];
-
+ 
   for (rb=0; rb<nb_rb; rb++) {
 
     for (re=0; re<((pilots==0)?12:8); re+=2) {
 
       // Alamouti RX combining
 
+      //      printf("Alamouti: symbol %d, rb %d, re %d: rxF0 (%d,%d,%d,%d), rxF1 (%d,%d,%d,%d)\n",symbol,rb,re,rxF0[0],rxF0[1],rxF0[2],rxF0[3],rxF1[0],rxF1[1],rxF1[2],rxF1[3]);
       rxF0[0] = rxF0[0] + rxF1[2];
-      rxF0[1] = rxF0[1] - rxF1[3];
+      rxF0[1] = rxF0[1] - rxF1[3]; 
 
       rxF0[2] = rxF0[2] - rxF1[0];
       rxF0[3] = rxF0[3] + rxF1[1];
 
+      //      printf("Alamouti: rxF0 after (%d,%d,%d,%d)\n",rxF0[0],rxF0[1],rxF0[2],rxF0[3]);
       rxF0+=4;
       rxF1+=4;
 
@@ -3229,12 +3230,40 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
         else
           rb_alloc_ind = 0;
 
+	if (rb_alloc_ind == 1)
+          nb_rb++;
+
         // For second half of RBs skip DC carrier
         if (rb==(frame_parms->N_RB_DL>>1)) {
           rxF       = &rxdataF[aarx][(1 + (symbol*(frame_parms->ofdm_symbol_size)))];
           //dl_ch0++;
         }
 
+        // PBCH
+        if ((subframe==0) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l>=nsymb>>1) && (l<((nsymb>>1) + 4))) {
+          rb_alloc_ind = 0;
+        }
+
+        //SSS
+        if (((subframe==0)||(subframe==5)) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==sss_symb) ) {
+          rb_alloc_ind = 0;
+        }
+
+
+        if (frame_parms->frame_type == FDD) {
+          //PSS
+          if (((subframe==0)||(subframe==5)) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
+            rb_alloc_ind = 0;
+          }
+        }
+
+        if ((frame_parms->frame_type == TDD) &&
+            (subframe==6)) { //TDD Subframe 6
+          if ((rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
+            rb_alloc_ind = 0;
+          }
+        }
+
         if (rb_alloc_ind==1) {
           *pmi_ext = (pmi>>((rb>>2)<<1))&3;
           memcpy(dl_ch0_ext,dl_ch0,12*sizeof(int));
@@ -3272,7 +3301,7 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
             rxF_ext+=10;
           }
 
-          nb_rb++;
+
         }
 
         dl_ch0+=12;
@@ -3281,7 +3310,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
       }
     else {  // Odd number of RBs
       for (rb=0; rb<frame_parms->N_RB_DL>>1; rb++) {
-        //  printf("dlch_ext %d\n",dl_ch0_ext-&dl_ch_estimates_ext[aarx][0]);
+#ifdef DEBUG_DLSCH_DEMOD
+	printf("dlch_ext %d\n",dl_ch0_ext-&dl_ch_estimates_ext[aarx][0]);
+#endif
         skip_half=0;
 
         if (rb < 32)
@@ -3295,6 +3326,8 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
         else
           rb_alloc_ind = 0;
 
+	if (rb_alloc_ind == 1)
+	  nb_rb++;
 
         // PBCH
         if ((subframe==0) && (rb>((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l>=(nsymb>>1)) && (l<((nsymb>>1) + 4))) {
@@ -3328,7 +3361,10 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
 
         //PSS in subframe 0/5 if FDD
         if (frame_parms->frame_type == FDD) {  //FDD
-          if (((subframe==0)||(subframe==5)) && (rb>((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
+          if (((subframe==0)||(subframe==5)) && 
+	      (rb>((frame_parms->N_RB_DL>>1)-3)) && 
+	      (rb<((frame_parms->N_RB_DL>>1)+3)) && 
+	      (l==pss_symb) ) {
             rb_alloc_ind = 0;
           }
 
@@ -3352,55 +3388,68 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
 
 
         if (rb_alloc_ind==1) {
-          //    printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
-
+#ifdef DEBUG_DLSCH_DEMOD
+	  printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
+#endif
           if (pilots==0) {
-            //            printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
+	    //	    printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
             if (skip_half==1) {
               memcpy(dl_ch0_ext,dl_ch0,6*sizeof(int));
 
-              for (i=0; i<6; i++)
-                rxF_ext[i]=rxF[i];
-
+              for (i=0; i<6; i++) {
+	        rxF_ext[i]=rxF[i];
+#ifdef DEBUG_DLSCH_DEMOD
+		printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=6;
               rxF_ext+=6;
             } else if (skip_half==2) {
               memcpy(dl_ch0_ext,dl_ch0+6,6*sizeof(int));
 
-              for (i=0; i<6; i++)
+              for (i=0; i<6; i++) {
                 rxF_ext[i]=rxF[(i+6)];
-
+#ifdef DEBUG_DLSCH_DEMOD
+		printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=6;
               rxF_ext+=6;
             } else {
               memcpy(dl_ch0_ext,dl_ch0,12*sizeof(int));
 
-              for (i=0; i<12; i++)
+              for (i=0; i<12; i++) {
                 rxF_ext[i]=rxF[i];
-
+#ifdef DEBUG_DLSCH_DEMOD
+                printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=12;
               rxF_ext+=12;
             }
           } else {
-            //            printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
+	    //	    printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
             j=0;
 
             if (skip_half==1) {
               for (i=0; i<6; i++) {
                 if (i!=((frame_parms->nushift+poffset)%6)) {
                   rxF_ext[j]=rxF[i];
-                  //            printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+                  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i];
                 }
               }
-
+	      rxF_ext+=5;
               dl_ch0_ext+=5;
-              rxF_ext+=5;
             } else if (skip_half==2) {
               for (i=0; i<6; i++) {
                 if (i!=((frame_parms->nushift+poffset)%6)) {
                   rxF_ext[j]=rxF[(i+6)];
-                  //            printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i+6];
                 }
               }
@@ -3412,7 +3461,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
                 if ((i!=(frame_parms->nushift+poffset)) &&
                     (i!=((frame_parms->nushift+poffset+6)%12))) {
                   rxF_ext[j]=rxF[i];
-                  //            printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i];
 
                 }
@@ -3422,8 +3473,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
               rxF_ext+=10;
             }
           }
-
-          nb_rb++;
         }
 
         dl_ch0+=12;
@@ -3444,36 +3493,42 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
         rb_alloc_ind = 0;
 
 
+      if (rb_alloc_ind == 1)
+	nb_rb++;
 
       // PBCH
-      if ((subframe==0) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l>=(nsymb>>1)) && (l<((nsymb>>1) + 4))) {
+      if ((subframe==0) && 
+	  (l>=(nsymb>>1)) && 
+	  (l<((nsymb>>1) + 4))) {
         rb_alloc_ind = 0;
       }
 
       //SSS
-      if (((subframe==0)||(subframe==5)) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==sss_symb) ) {
+      if (((subframe==0)||(subframe==5)) && (l==sss_symb) ) {
         rb_alloc_ind = 0;
       }
 
       if (frame_parms->frame_type == FDD) {
         //PSS
-        if (((subframe==0)||(subframe==5)) && (rb>=((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
+        if (((subframe==0)||(subframe==5)) && (l==pss_symb) ) {
           rb_alloc_ind = 0;
         }
       }
 
+      //PSS
       if ((frame_parms->frame_type == TDD) &&
-          (subframe==6)) {
-        //PSS
-        if ((rb>((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l==pss_symb) ) {
-          rb_alloc_ind = 0;
-        }
+          (subframe==6) &&
+	  (l==pss_symb) ) {
+	rb_alloc_ind = 0;
       }
+      
 
       //  printf("dlch_ext %d\n",dl_ch0_ext-&dl_ch_estimates_ext[aarx][0]);
       //      printf("DC rb %d (%p)\n",rb,rxF);
       if (rb_alloc_ind==1) {
-        //  printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
+#ifdef DEBUG_DLSCH_DEMOD
+	printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
+#endif
         if (pilots==0) {
           for (i=0; i<6; i++) {
             dl_ch0_ext[i]=dl_ch0[i];
@@ -3496,7 +3551,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
             if (i!=((frame_parms->nushift+poffset)%6)) {
               dl_ch0_ext[j]=dl_ch0[i];
               rxF_ext[j++]=rxF[i];
-              //                    printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
+#ifdef DEBUG_DLSCH_DEMOD
+              printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
+#endif
             }
           }
 
@@ -3506,7 +3563,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
             if (i!=((frame_parms->nushift+6+poffset)%12)) {
               dl_ch0_ext[j]=dl_ch0[i];
               rxF_ext[j++]=rxF[(1+i-6)];
-              //                      printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
+#ifdef DEBUG_DLSCH_DEMOD
+              printf("**extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j-1],*(1+(short*)&rxF_ext[j-1]));
+#endif           
             }
           }
 
@@ -3514,7 +3573,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
           rxF_ext+=10;
         } // symbol_mod==0
 
-        nb_rb++;
       } // rballoc==1
       else {
         rxF       = &rxdataF[aarx][((symbol*(frame_parms->ofdm_symbol_size)))];
@@ -3540,7 +3598,8 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
         else
           rb_alloc_ind = 0;
 
-
+	if (rb_alloc_ind == 1)
+	  nb_rb++;
 
         // PBCH
         if ((subframe==0) && (rb>((frame_parms->N_RB_DL>>1)-3)) && (rb<((frame_parms->N_RB_DL>>1)+3)) && (l>=nsymb>>1) && (l<((nsymb>>1) + 4))) {
@@ -3590,7 +3649,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
         }
 
         if (rb_alloc_ind==1) {
-          //    printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
+#ifdef DEBUG_DLSCH_DEMOD	 
+	  printf("rb %d/symbol %d (skip_half %d)\n",rb,l,skip_half);
+#endif
           /*
 	    printf("rb %d\n",rb);
             for (i=0;i<12;i++)
@@ -3598,43 +3659,54 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
             printf("\n");
           */
           if (pilots==0) {
-            //            printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
+	    //	    printf("Extracting w/o pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
             if (skip_half==1) {
               memcpy(dl_ch0_ext,dl_ch0,6*sizeof(int));
 
-              for (i=0; i<6; i++)
+              for (i=0; i<6; i++) {
                 rxF_ext[i]=rxF[i];
-
+#ifdef DEBUG_DLSCH_DEMOD	 
+		printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=6;
               rxF_ext+=6;
 
             } else if (skip_half==2) {
               memcpy(dl_ch0_ext,dl_ch0+6,6*sizeof(int));
 
-              for (i=0; i<6; i++)
+              for (i=0; i<6; i++) {
                 rxF_ext[i]=rxF[(i+6)];
-
+#ifdef DEBUG_DLSCH_DEMOD
+		printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=6;
               rxF_ext+=6;
 
             } else {
               memcpy(dl_ch0_ext,dl_ch0,12*sizeof(int));
 
-              for (i=0; i<12; i++)
+              for (i=0; i<12; i++) {
                 rxF_ext[i]=rxF[i];
-
+#ifdef DEBUG_DLSCH_DEMOD
+		printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
+	      }
               dl_ch0_ext+=12;
               rxF_ext+=12;
             }
           } else {
-            //            printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
+	    //	    printf("Extracting with pilots (symbol %d, rb %d, skip_half %d)\n",l,rb,skip_half);
             j=0;
 
             if (skip_half==1) {
               for (i=0; i<6; i++) {
                 if (i!=((frame_parms->nushift+poffset)%6)) {
                   rxF_ext[j]=rxF[i];
-                  //      printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i];
                 }
               }
@@ -3645,7 +3717,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
               for (i=0; i<6; i++) {
                 if (i!=((frame_parms->nushift+poffset)%6)) {
                   rxF_ext[j]=rxF[(i+6)];
-                  //      printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i+6];
                 }
               }
@@ -3657,7 +3731,9 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
                 if ((i!=(frame_parms->nushift+poffset)) &&
                     (i!=((frame_parms->nushift+poffset+6)%12))) {
                   rxF_ext[j]=rxF[i];
-                  //      printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("extract rb %d, re %d => (%d,%d)\n",rb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
                   dl_ch0_ext[j++]=dl_ch0[i];
                 }
               }
@@ -3666,8 +3742,6 @@ unsigned short dlsch_extract_rbs_single(int **rxdataF,
               rxF_ext+=10;
             }
           } // pilots=0
-
-          nb_rb++;
         }
 
         dl_ch0+=12;
@@ -3749,52 +3823,58 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 	rb_alloc_ind = (rb_alloc[3]>>(prb-96)) & 1;
       else
 	rb_alloc_ind = 0;
+
+      if (rb_alloc_ind == 1)
+          nb_rb++;
       
-      // PBCH
-      if ((subframe==0) && 
-	  (prb>((frame_parms->N_RB_DL>>1)-3)) && 
-	  (prb<((frame_parms->N_RB_DL>>1)+3)) && 
-	  (l>=(nsymb>>1)) && 
-	  (l<((nsymb>>1) + 4))) {
-	rb_alloc_ind = 0;
-	//	printf("symbol %d / rb %d: skipping PBCH REs\n",symbol,prb);
-      }
-      
-      //SSS
-      
-      if (((subframe==0)||(subframe==5)) &&
-	  (prb>((frame_parms->N_RB_DL>>1)-3)) &&
-	  (prb<((frame_parms->N_RB_DL>>1)+3)) &&
-	  (l==sss_symb) ) {
-	rb_alloc_ind = 0;
-	//	printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
-      }
-      
-      
-      
-      //PSS in subframe 0/5 if FDD
-      if (frame_parms->frame_type == FDD) {  //FDD
-	if (((subframe==0)||(subframe==5)) && 
-	    (prb>((frame_parms->N_RB_DL>>1)-3)) && 
+
+      if ((frame_parms->N_RB_DL&1) == 0) {  // even number of RBs
+
+	// PBCH
+	if ((subframe==0) && 
+	    (prb>=((frame_parms->N_RB_DL>>1)-3)) && 
 	    (prb<((frame_parms->N_RB_DL>>1)+3)) && 
-	    (l==pss_symb) ) {
+	    (l>=(nsymb>>1)) && 
+	    (l<((nsymb>>1) + 4))) {
 	  rb_alloc_ind = 0;
-	  //	  printf("symbol %d / rb %d: skipping PSS REs\n",symbol,prb);
+	  //	printf("symbol %d / rb %d: skipping PBCH REs\n",symbol,prb);
 	}
-      }
-      
-      if ((frame_parms->frame_type == TDD) &&
-	  (subframe==6)) { //TDD Subframe 6
-	if ((prb>=((frame_parms->N_RB_DL>>1)-3)) && 
-	    (prb<=((frame_parms->N_RB_DL>>1)+3)) && 
-	    (l==pss_symb) ) {
+	
+	//SSS
+	
+	if (((subframe==0)||(subframe==5)) &&
+	    (prb>=((frame_parms->N_RB_DL>>1)-3)) &&
+	    (prb<((frame_parms->N_RB_DL>>1)+3)) &&
+	    (l==sss_symb) ) {
 	  rb_alloc_ind = 0;
+	  //	printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
 	}
-      }
-      
-      if (rb_alloc_ind==1) {              // PRB is allocated
+	
+	
+	
+	//PSS in subframe 0/5 if FDD
+	if (frame_parms->frame_type == FDD) {  //FDD
+	  if (((subframe==0)||(subframe==5)) && 
+	      (prb>=((frame_parms->N_RB_DL>>1)-3)) && 
+	      (prb<((frame_parms->N_RB_DL>>1)+3)) && 
+	      (l==pss_symb) ) {
+	    rb_alloc_ind = 0;
+	    //	  printf("symbol %d / rb %d: skipping PSS REs\n",symbol,prb);
+	  }
+	}
+	
+	if ((frame_parms->frame_type == TDD) &&
+	    (subframe==6)) { //TDD Subframe 6
+	  if ((prb>=((frame_parms->N_RB_DL>>1)-3)) && 
+	      (prb<((frame_parms->N_RB_DL>>1)+3)) && 
+	      (l==pss_symb) ) {
+	    rb_alloc_ind = 0;
+	  }
+	}
+	
+	if (rb_alloc_ind==1) {              // PRB is allocated
+
 
-	if ((frame_parms->N_RB_DL&1) == 0) {  // even number of RBs
 	  
 	  prb_off      = 12*prb;
 	  prb_off2     = 1+(12*(prb-(frame_parms->N_RB_DL>>1)));
@@ -3839,12 +3919,55 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 	    rxF_ext+=8;
           } // pilots==1
 
-          nb_rb++;
+	}
+      } else {  // Odd number of RBs
 
-        } else {  // Odd number of RBs
 
-	  skip_half=0;
+      // PBCH
+	if ((subframe==0) && 
+	    (prb>((frame_parms->N_RB_DL>>1)-3)) && 
+	    (prb<((frame_parms->N_RB_DL>>1)+3)) && 
+	    (l>=(nsymb>>1)) && 
+	    (l<((nsymb>>1) + 4))) {
+	  rb_alloc_ind = 0;
+	  //	printf("symbol %d / rb %d: skipping PBCH REs\n",symbol,prb);
+	}
+	
+	//SSS
+	
+	if (((subframe==0)||(subframe==5)) &&
+	    (prb>((frame_parms->N_RB_DL>>1)-3)) &&
+	    (prb<((frame_parms->N_RB_DL>>1)+3)) &&
+	    (l==sss_symb) ) {
+	  rb_alloc_ind = 0;
+	  //	printf("symbol %d / rb %d: skipping SSS REs\n",symbol,prb);
+	}
+	
+	
+	
+	//PSS in subframe 0/5 if FDD
+	if (frame_parms->frame_type == FDD) {  //FDD
+	  if (((subframe==0)||(subframe==5)) && 
+	      (prb>((frame_parms->N_RB_DL>>1)-3)) && 
+	      (prb<((frame_parms->N_RB_DL>>1)+3)) && 
+	      (l==pss_symb) ) {
+	    rb_alloc_ind = 0;
+	    //	  printf("symbol %d / rb %d: skipping PSS REs\n",symbol,prb);
+	  }
+	}
+	
+	if ((frame_parms->frame_type == TDD) &&
+	    ((subframe==1) || (subframe==6))) { //TDD Subframe 1-6
+	  if ((prb>((frame_parms->N_RB_DL>>1)-3)) && 
+	      (prb<((frame_parms->N_RB_DL>>1)+3)) && 
+	      (l==pss_symb) ) {
+	    rb_alloc_ind = 0;
+	  }
+	}
 
+	if (rb_alloc_ind == 1) {
+	  skip_half=0;
+	
 	  //Check if we have to drop half a PRB due to PSS/SSS/PBCH
 	  // skip_half == 0 means full PRB
 	  // skip_half == 1 means first half is used (leftmost half-PRB from PSS/SSS/PBCH)
@@ -3875,13 +3998,12 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 	  if (((frame_parms->frame_type == FDD) &&
 	       (((subframe==0)||(subframe==5)))) ||  //FDD Subframes 0,5
 	      ((frame_parms->frame_type == TDD) &&
-	       (((subframe==2) || (subframe==6))))) { //TDD Subframes 2,6
+	       (((subframe==1) || (subframe==6))))) { //TDD Subframes 1,6
 		
 	    if ((prb==((frame_parms->N_RB_DL>>1)-3)) && 
 		(l==pss_symb))
 	      skip_half=1;
-	    else if (((subframe==0)||(subframe==5)) && 
-		     (prb==((frame_parms->N_RB_DL>>1)+3)) && 
+	    else if ((prb==((frame_parms->N_RB_DL>>1)+3)) && 
 		     (l==pss_symb))
 	      skip_half=2;
 	  }
@@ -3901,9 +4023,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 	    rxF      = &rxdataF[aarx][prb_off2+ 
 				      (symbol*(frame_parms->ofdm_symbol_size))];
 	  }
-
-	  //          printf("symbol %d / rb %d: alloc %d skip_half %d (rxF %p, rxF_ext %p) prb_off (%d,%d)\n",symbol,prb,rb_alloc_ind,skip_half,rxF,rxF_ext,prb_off,prb_off2);
-
+#ifdef DEBUG_DLSCH_DEMOD
+	  printf("symbol %d / rb %d: alloc %d skip_half %d (rxF %p, rxF_ext %p) prb_off (%d,%d)\n",symbol,prb,rb_alloc_ind,skip_half,rxF,rxF_ext,prb_off,prb_off2);
+#endif
           *pmi_loc = (pmi>>((prb>>2)<<1))&3;
           //    printf("symbol_mod %d (pilots %d) rb %d, sb %d, pmi %d (pmi_loc %p,rxF %p, ch00 %p, ch01 %p, rxF_ext %p dl_ch0_ext %p dl_ch1_ext %p)\n",symbol_mod,pilots,rb,rb>>2,*pmi_loc,pmi_loc,rxF,dl_ch0, dl_ch1, rxF_ext,dl_ch0_ext,dl_ch1_ext);
 
@@ -3915,6 +4037,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		memcpy(dl_ch0_ext,dl_ch0p,6*sizeof(int32_t));
 		memcpy(dl_ch1_ext,dl_ch1p,6*sizeof(int32_t));
 		memcpy(rxF_ext,rxF,6*sizeof(int32_t));
+#ifdef DEBUG_DLSCH_DEMOD
+		for (i=0;i<6;i++)
+		  printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
 		dl_ch0_ext+=6;
 		dl_ch1_ext+=6;
 		rxF_ext+=6;
@@ -3922,6 +4048,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		memcpy(dl_ch0_ext,dl_ch0p+6,6*sizeof(int32_t));
 		memcpy(dl_ch1_ext,dl_ch1p+6,6*sizeof(int32_t));
 		memcpy(rxF_ext,rxF+6,6*sizeof(int32_t));
+#ifdef DEBUG_DLSCH_DEMOD
+		for (i=0;i<6;i++)
+		  printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
 		dl_ch0_ext+=6;
 		dl_ch1_ext+=6;
 		rxF_ext+=6;
@@ -3929,8 +4059,10 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		memcpy(dl_ch0_ext,dl_ch0p,12*sizeof(int32_t));
 		memcpy(dl_ch1_ext,dl_ch1p,12*sizeof(int32_t));
 		memcpy(rxF_ext,rxF,12*sizeof(int32_t));
+#ifdef DEBUG_DLSCH_DEMOD
 		for (i=0;i<12;i++)
-		  //		  printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+		  printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
+#endif
 		dl_ch0_ext+=12;
 		dl_ch1_ext+=12;
 		rxF_ext+=12;
@@ -3943,7 +4075,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		  if ((i!=frame_parms->nushift) &&
 		      (i!=((frame_parms->nushift+3)%6))) {
 		    rxF_ext[j]=rxF[i];
-		    //		    printf("(pilots,skip1)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		    printf("(pilots,skip1)extract rb %d, re %d (%d)=> (%d,%d)\n",prb,i,j,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
 		    dl_ch0_ext[j]=dl_ch0p[i];
 		    dl_ch1_ext[j++]=dl_ch1p[i];
 		  }
@@ -3956,15 +4090,17 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		  if ((i!=frame_parms->nushift) &&
 		      (i!=((frame_parms->nushift+3)%6))) {
 		    rxF_ext[j]=rxF[(i+6)];
-		    //		    printf("(pilots,skip2)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		    printf("(pilots,skip2)extract rb %d, re %d (%d) => (%d,%d)\n",prb,i,j,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
 		    dl_ch0_ext[j]=dl_ch0p[i+6];
 		    dl_ch1_ext[j++]=dl_ch1p[i+6];
 		  }
-		  
-		  dl_ch0_ext+=4;
-		  dl_ch1_ext+=4;
-		  rxF_ext+=4;
 		}
+		dl_ch0_ext+=4;
+		dl_ch1_ext+=4;
+		rxF_ext+=4;
+
 	      } else { //skip_half==0
 		for (i=0; i<12; i++) {
 		  if ((i!=frame_parms->nushift) &&
@@ -3972,7 +4108,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		      (i!=frame_parms->nushift+6) &&
 		      (i!=((frame_parms->nushift+9)%12))) {
 		    rxF_ext[j]=rxF[i];
-		    //		    printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#ifdef DEBUG_DLSCH_DEMOD
+		    printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[j],*(1+(short*)&rxF_ext[j]));
+#endif
 		    dl_ch0_ext[j]  =dl_ch0p[i];
 		    dl_ch1_ext[j++]=dl_ch1p[i];
 		  }
@@ -3982,31 +4120,33 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		rxF_ext+=8;
 	      } //skip_half==0
 	    } //pilots==1
-	    nb_rb++;
 	  } else {       // Do middle RB (around DC)
 	    
 	    if (pilots==0) {
 	      memcpy(dl_ch0_ext,dl_ch0p,6*sizeof(int32_t));
 	      memcpy(dl_ch1_ext,dl_ch1p,6*sizeof(int32_t));
 	      memcpy(rxF_ext,rxF,6*sizeof(int32_t));
-	      /*
+#ifdef DEBUG_DLSCH_DEMOD
 	      for (i=0; i<6; i++) {
 		printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
-		}*/
+	      }
+#endif
 	      rxF_ext+=6;
 	      dl_ch0_ext+=6;
 	      dl_ch1_ext+=6;
 	      dl_ch0p+=6;
 	      dl_ch1p+=6;
 	      
-	      rxF       = &rxdataF[aarx][((symbol*(frame_parms->ofdm_symbol_size)))];
+	      rxF       = &rxdataF[aarx][1+((symbol*(frame_parms->ofdm_symbol_size)))];
 
 	      memcpy(dl_ch0_ext,dl_ch0p,6*sizeof(int32_t));
 	      memcpy(dl_ch1_ext,dl_ch1p,6*sizeof(int32_t));
 	      memcpy(rxF_ext,rxF,6*sizeof(int32_t));	      
-	      /*for (i=0; i<6; i++) {
+#ifdef DEBUG_DLSCH_DEMOD
+	      for (i=0; i<6; i++) {
 		printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
-		}*/
+	      }
+#endif
 	      rxF_ext+=6;
 	      dl_ch0_ext+=6;
 	      dl_ch1_ext+=6;
@@ -4019,18 +4159,22 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 		  dl_ch0_ext[j]=dl_ch0p[i];
 		  dl_ch1_ext[j]=dl_ch1p[i];
 		  rxF_ext[j++]=rxF[i];
-		  //printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[i],*(1+(short*)&rxF[i]));
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("(pilots)extract rb %d, re %d (%d) => (%d,%d)\n",prb,i,j,*(short *)&rxF[i],*(1+(short*)&rxF[i]));
+#endif
 		}
 	      }
-	      rxF       = &rxdataF[aarx][symbol*(frame_parms->ofdm_symbol_size)];
+	      rxF       = &rxdataF[aarx][1+symbol*(frame_parms->ofdm_symbol_size)];
 	      
 	      for (; i<12; i++) {
 		if ((i!=((frame_parms->nushift+6)%12)) &&
 		    (i!=((frame_parms->nushift+9)%12))) {
 		  dl_ch0_ext[j]=dl_ch0p[i];
 		  dl_ch1_ext[j]=dl_ch1p[i];
-		  rxF_ext[j++]=rxF[(1+i-6)];
-		  //printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[1+i-6],*(1+(short*)&rxF[1+i-6]));
+		  rxF_ext[j++]=rxF[i-6];	   
+#ifdef DEBUG_DLSCH_DEMOD
+		  printf("(pilots)extract rb %d, re %d (%d) => (%d,%d)\n",prb,i,j,*(short *)&rxF[1+i-6],*(1+(short*)&rxF[1+i-6]));
+#endif
 		}
 	      }
 	      
@@ -4038,7 +4182,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
 	      dl_ch1_ext+=8;
 	      rxF_ext+=8;
 	    } //pilots==1
-	    nb_rb++;
 	  }  // if Middle PRB
 	} // if odd PRB	      	      	         
       } // if rballoc==1
@@ -4126,7 +4269,7 @@ void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint16_t coded_bits_per
 #endif
 
 #ifdef DEBUG_DLSCH_DEMOD
-
+/*
 void print_bytes(char *s,__m128i *x)
 {
 
@@ -4164,5 +4307,5 @@ void print_ints(char *s,__m128i *x)
   printf("%s  : %d,%d,%d,%d\n",s,
          tempb[0],tempb[1],tempb[2],tempb[3]);
 
-}
+}*/
 #endif
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
index 7425a4ed65893e27d47d3d4f117f1cfdc47316a0..a35f89b8518baa2cdfc342a77045946702074621 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
@@ -662,16 +662,17 @@ int dlsch_qpsk_llr(LTE_DL_FRAME_PARMS *frame_parms,
 
   if ((symbol_mod==0) || (symbol_mod==(4-frame_parms->Ncp))) {
     if (frame_parms->mode1_flag==0)
-      len = (nb_rb*8);// - (2*pbch_pss_sss_adjust/3);
+      len = (nb_rb*8)- (2*pbch_pss_sss_adjust/3);
     else
-      len = (nb_rb*10);// - (5*pbch_pss_sss_adjust/6);
+      len = (nb_rb*10) - (5*pbch_pss_sss_adjust/6);
   } else {
-    len = (nb_rb*12);// - pbch_pss_sss_adjust;
+    len = (nb_rb*12) - pbch_pss_sss_adjust;
   }
 
-//  printf("dlsch_qpsk_llr: symbol %d,nb_rb %d, len %d,pbch_pss_sss_adjust %d\n",symbol,nb_rb,len,pbch_pss_sss_adjust);
+  //  printf("dlsch_qpsk_llr: symbol %d,nb_rb %d, len %d,pbch_pss_sss_adjust %d\n",symbol,nb_rb,len,pbch_pss_sss_adjust);
   for (i=0; i<len; i++) {
     *llr32 = *rxF;
+    //    printf("llr %d : (%d,%d)\n",i,((int16_t*)llr32)[0],((int16_t*)llr32)[1]);
     rxF++;
     llr32++;
   }
diff --git a/openair1/PHY/LTE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
index bc2a00d8e6c16f587d3af3634a6d375cb3258bb3..5c6b479b2003c6a8ca40938bd0e4be7fe9e0f5b0 100644
--- a/openair1/PHY/LTE_TRANSPORT/initial_sync.c
+++ b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
@@ -336,7 +336,9 @@ int initial_sync(PHY_VARS_UE *phy_vars_ue, runmode_t mode)
 
 #else
 #ifndef OAI_USRP
+  #ifndef OAI_BLADERF 
   phy_adjust_gain(phy_vars_ue,0);
+  #endif
 #endif
 #endif
 
diff --git a/openair1/PHY/LTE_TRANSPORT/print_stats.c b/openair1/PHY/LTE_TRANSPORT/print_stats.c
index 53ca8759532d12c6004baa755601bd0eb2971d2f..606d1941a24541903e3e3f4263cf43b46541f5a9 100644
--- a/openair1/PHY/LTE_TRANSPORT/print_stats.c
+++ b/openair1/PHY/LTE_TRANSPORT/print_stats.c
@@ -50,7 +50,7 @@
 #endif
 
 extern int mac_get_rrc_status(uint8_t Mod_id,uint8_t eNB_flag,uint8_t index);
-#if defined(OAI_USRP) || defined(EXMIMO)
+#if defined(OAI_USRP) || defined(EXMIMO) || defined(OAI_BLADERF)
 #include "common_lib.h"
 extern openair0_config_t openair0_cfg[];
 #endif
@@ -96,10 +96,10 @@ int dump_ue_stats(PHY_VARS_UE *phy_vars_ue, char* buffer, int length, runmode_t
 #ifdef EXMIMO
     len += sprintf(&buffer[len], "[UE PROC] RX Gain %d dB (LNA %d, vga %d dB)\n",phy_vars_ue->rx_total_gain_dB, openair0_cfg[0].rxg_mode[0],(int)openair0_cfg[0].rx_gain[0]);
 #endif
-#ifdef OAI_USRP
+#if defined(OAI_USRP) || defined(OAI_BLADERF)
     len += sprintf(&buffer[len], "[UE PROC] RX Gain %d dB\n",phy_vars_ue->rx_total_gain_dB);
 #endif
-#if defined(EXMIMO) || defined(OAI_USRP)
+#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF)
     len += sprintf(&buffer[len], "[UE_PROC] Frequency offset %d Hz (%d), estimated carrier frequency %f Hz\n",phy_vars_ue->lte_ue_common_vars.freq_offset,openair_daq_vars.freq_offset,openair0_cfg[0].rx_freq[0]-phy_vars_ue->lte_ue_common_vars.freq_offset);
 #endif
     len += sprintf(&buffer[len], "[UE PROC] UE mode = %s (%d)\n",mode_string[phy_vars_ue->UE_mode[0]],phy_vars_ue->UE_mode[0]);
diff --git a/openair1/PHY/LTE_TRANSPORT/proto.h b/openair1/PHY/LTE_TRANSPORT/proto.h
index eb32aab24e89517be42d0179387418a5df0d8406..cb127ead4821063951488a6de0dcc7e9f6ee4ded 100644
--- a/openair1/PHY/LTE_TRANSPORT/proto.h
+++ b/openair1/PHY/LTE_TRANSPORT/proto.h
@@ -72,17 +72,20 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint8_t N_RB_DL, ui
 */
 void free_ue_dlsch(LTE_UE_DLSCH_t *dlsch);
 
+LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t Mdlharq,uint8_t max_turbo_iterations,uint8_t N_RB_UL, uint8_t abstraction_flag);
+
 LTE_UE_DLSCH_t *new_ue_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint8_t max_turbo_iterations,uint8_t N_RB_DL, uint8_t abstraction_flag);
 
+LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char Mdlharq,unsigned char N_RB_UL, uint8_t abstraction_flag);
 
 
 void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch, uint8_t abstraction_flag);
 
 void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch);
 
-LTE_UE_ULSCH_t *new_ue_ulsch(uint8_t Mdlharq, unsigned char N_RB_UL, uint8_t abstraction_flag);
-
+LTE_eNB_ULSCH_t *new_eNB_ulsch(uint8_t Mdlharq,uint8_t max_turbo_iterations,uint8_t N_RB_UL, uint8_t abstraction_flag);
 
+LTE_UE_ULSCH_t *new_ue_ulsch(uint8_t Mdlharq, unsigned char N_RB_UL, uint8_t abstraction_flag);
 
 /** \fn dlsch_encoding(uint8_t *input_buffer,
     LTE_DL_FRAME_PARMS *frame_parms,
@@ -1764,7 +1767,9 @@ double computeRhoB_UE(PDSCH_CONFIG_DEDICATED  *pdsch_config_dedicated,
   LTE_UE_DLSCH_t *dlsch_ue);
 */
 
-  uint8_t get_prach_prb_offset(LTE_DL_FRAME_PARMS *frame_parms, uint8_t tdd_mapindex, uint16_t Nf); 
+uint8_t get_prach_prb_offset(LTE_DL_FRAME_PARMS *frame_parms, uint8_t tdd_mapindex, uint16_t Nf); 
+
+uint8_t ul_subframe2pdcch_alloc_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t n);
 
 /**@}*/
 #endif
diff --git a/openair1/PHY/TOOLS/cdot_prod.c b/openair1/PHY/TOOLS/cdot_prod.c
index 2e52e63f7ef774a4cf0580e278e4c2f15bec08c8..e6ff476303ed811954b3002fb1643ac487ee038b 100644
--- a/openair1/PHY/TOOLS/cdot_prod.c
+++ b/openair1/PHY/TOOLS/cdot_prod.c
@@ -115,11 +115,11 @@ int32_t dot_product(int16_t *x,
   // convert back to integer
   result = _mm_cvtsi64_si32(mmtmp7);
 
-  return(result);
-
   _mm_empty();
   _m_empty();
 
+  return(result);
+
 #elif defined(__arm__)
   int16x4_t *x_128=(int16x4_t*)x;
   int16x4_t *y_128=(int16x4_t*)y;
diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/lte_dfts.c
index c031d5d384d751e55e9b484cc3d86872589ccdd9..ec4577a67a170f5d453b6d3e8fe02318e4bbf16a 100644
--- a/openair1/PHY/TOOLS/lte_dfts.c
+++ b/openair1/PHY/TOOLS/lte_dfts.c
@@ -94,7 +94,7 @@ static inline void cmacc(__m128i a,__m128i b, __m128i *re32, __m128i *im32)
   cmac_tmp    = _mm_sign_epi16(b,*(__m128i*)reflip);
   //  cmac_tmp    = _mm_shufflelo_epi16(b,_MM_SHUFFLE(2,3,0,1));
   //  cmac_tmp    = _mm_shufflehi_epi16(cmac_tmp,_MM_SHUFFLE(2,3,0,1));
-  cmac_tmp = _mm_shuffle_epi8(b,_mm_set_epi8(13,12,15,14,9,8,11,10,5,4,7,6,1,0,3,2));
+  cmac_tmp = _mm_shuffle_epi8(cmac_tmp,_mm_set_epi8(13,12,15,14,9,8,11,10,5,4,7,6,1,0,3,2));
   cmac_tmp_im32  = _mm_madd_epi16(cmac_tmp,a);
 
   *re32 = _mm_add_epi32(*re32,cmac_tmp_re32);
diff --git a/openair1/PHY/TOOLS/signal_energy.c b/openair1/PHY/TOOLS/signal_energy.c
index 323a1831dc17cbf1f72fc7df9004fb83a2127113..373fdc0d90acbe35cd3095ee51c25d099e87d780 100755
--- a/openair1/PHY/TOOLS/signal_energy.c
+++ b/openair1/PHY/TOOLS/signal_energy.c
@@ -197,7 +197,7 @@ int32_t signal_energy(int32_t *input,uint32_t length)
   for (i=0; i<length>>1; i++) {
 
     tmpE = vqaddq_s32(tmpE,vshrq_n_s32(vmull_s16(*in,*in),shift));
-    tmpDC = vaddw_s16(tmpDC,vshr_n_s16(*in++,shift_DC));
+    //tmpDC = vaddw_s16(tmpDC,vshr_n_s16(*in++,shift_DC));
 
   }
 
diff --git a/openair1/SCHED/defs.h b/openair1/SCHED/defs.h
index bebe476dcd2fd3ab194549d5cfdb39fd2dfb2ecd..a88327ba92e6b1ddc1e0121bb55b61d16a04a70a 100644
--- a/openair1/SCHED/defs.h
+++ b/openair1/SCHED/defs.h
@@ -401,6 +401,8 @@ uint16_t get_Np(uint8_t N_RB_DL,uint8_t nCCE,uint8_t plus1);
 
 int get_nCCE_offset(unsigned char L, int nCCE, int common_dci, unsigned short rnti, unsigned char subframe);
 
+void put_harq_pid_in_freelist(LTE_eNB_DLSCH_t *DLSCH_ptr, int harq_pid);
+void remove_harq_pid_from_freelist(LTE_eNB_DLSCH_t *DLSCH_ptr, int harq_pid);
 
 int8_t find_ue(uint16_t rnti, PHY_VARS_eNB *phy_vars_eNB);
 int32_t add_ue(int16_t rnti, PHY_VARS_eNB *phy_vars_eNB);
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 165f2fbac61ebda4df560c9588465d505dfcd84d..d0736575192e47fc1909572bb2e0ca84ad7d4afc 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -136,6 +136,30 @@ uint8_t is_SR_subframe(PHY_VARS_eNB *phy_vars_eNB,uint8_t UE_id,uint8_t sched_su
   return(0);
 }
 
+void put_harq_pid_in_freelist(LTE_eNB_DLSCH_t *DLSCH_ptr, int harq_pid)
+{
+  DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->tail_freelist] = harq_pid;
+  DLSCH_ptr->tail_freelist = (DLSCH_ptr->tail_freelist + 1) % 10;
+}
+
+void remove_harq_pid_from_freelist(LTE_eNB_DLSCH_t *DLSCH_ptr, int harq_pid)
+{
+  if (DLSCH_ptr->head_freelist == DLSCH_ptr->tail_freelist) {
+    LOG_E(PHY, "%s:%d: you cannot read this!\n", __FILE__, __LINE__);
+    abort();
+  }
+  /* basic check, in case several threads deal with the free list at the same time
+   * in normal situations it should not happen, that's also why we don't use any
+   * locking mechanism to protect the free list
+   * to be refined in case things don't work properly
+   */
+  if (harq_pid != DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist]) {
+    LOG_E(PHY, "%s:%d: critical error, get in touch with the authors\n", __FILE__, __LINE__);
+    abort();
+  }
+  DLSCH_ptr->head_freelist = (DLSCH_ptr->head_freelist + 1) % 10;
+}
+
 int32_t add_ue(int16_t rnti, PHY_VARS_eNB *phy_vars_eNB)
 {
   uint8_t i;
@@ -178,6 +202,7 @@ int32_t add_ue(int16_t rnti, PHY_VARS_eNB *phy_vars_eNB)
 int32_t remove_ue(uint16_t rnti, PHY_VARS_eNB *phy_vars_eNB, uint8_t abstraction_flag)
 {
   uint8_t i;
+  int j;
 
   for (i=0; i<NUMBER_OF_UE_MAX; i++) {
     if ((phy_vars_eNB->dlsch_eNB[i]==NULL) || (phy_vars_eNB->ulsch_eNB[i]==NULL)) {
@@ -196,6 +221,13 @@ int32_t remove_ue(uint16_t rnti, PHY_VARS_eNB *phy_vars_eNB, uint8_t abstraction
         //phy_vars_eNB->eNB_UE_stats[i].crnti = 0;
         memset(&phy_vars_eNB->eNB_UE_stats[i],0,sizeof(LTE_eNB_UE_stats));
         //  mac_exit_wrapper("Removing UE");
+
+        /* clear the harq pid freelist */
+        phy_vars_eNB->dlsch_eNB[i][0]->head_freelist = 0;
+        phy_vars_eNB->dlsch_eNB[i][0]->tail_freelist = 0;
+        for (j = 0; j < 8; j++)
+          put_harq_pid_in_freelist(phy_vars_eNB->dlsch_eNB[i][0], j);
+
         return(i);
       }
     }
@@ -224,14 +256,12 @@ int8_t find_next_ue_index(PHY_VARS_eNB *phy_vars_eNB)
 
 int get_ue_active_harq_pid(const uint8_t Mod_id,const uint8_t CC_id,const uint16_t rnti, const int frame, const uint8_t subframe,uint8_t *harq_pid,uint8_t *round,const uint8_t ul_flag)
 {
-
   LTE_eNB_DLSCH_t *DLSCH_ptr;
   LTE_eNB_ULSCH_t *ULSCH_ptr;
   uint8_t ulsch_subframe,ulsch_frame;
   uint8_t i;
   int8_t UE_id = find_ue(rnti,PHY_vars_eNB_g[Mod_id][CC_id]);
   int sf1=(10*frame)+subframe,sf2,sfdiff,sfdiff_max=7;
-  int first_proc_found=0;
 
   if (UE_id==-1) {
     LOG_D(PHY,"Cannot find UE with rnti %x (Mod_id %d, CC_id %d)\n",rnti, Mod_id, CC_id);
@@ -247,18 +277,7 @@ int get_ue_active_harq_pid(const uint8_t Mod_id,const uint8_t CC_id,const uint16
 
     for (i=0; i<DLSCH_ptr->Mdlharq; i++) {
       if (DLSCH_ptr->harq_processes[i]!=NULL) {
-	if (DLSCH_ptr->harq_processes[i]->status != ACTIVE) {
-	  // store first inactive process
-	  if (first_proc_found == 0) {
-	    first_proc_found = 1;
-	    *harq_pid = i;
-	    *round = 0;
-	    LOG_D(PHY,"process %d is first free process\n",i);
-	  }
-	  else {
-	    LOG_D(PHY,"process %d is free\n",i);
-	  }
-	} else {
+	if (DLSCH_ptr->harq_processes[i]->status == ACTIVE) {
 	  sf2 = (DLSCH_ptr->harq_processes[i]->frame*10) + DLSCH_ptr->harq_processes[i]->subframe;
 	  if (sf2<=sf1)
 	    sfdiff = sf1-sf2;
@@ -270,7 +289,6 @@ int get_ue_active_harq_pid(const uint8_t Mod_id,const uint8_t CC_id,const uint16
 	    sfdiff_max = sfdiff; 
 	    *harq_pid = i;
 	    *round = DLSCH_ptr->harq_processes[i]->round;
-	    first_proc_found = 1;
 	  }
 	}
       } else { // a process is not defined
@@ -278,6 +296,14 @@ int get_ue_active_harq_pid(const uint8_t Mod_id,const uint8_t CC_id,const uint16
 	return(-1);
       }
     }
+
+    /* if no active harq pid, get the oldest in the freelist, if any */
+    if (*harq_pid == 255 && DLSCH_ptr->head_freelist != DLSCH_ptr->tail_freelist) {
+      *harq_pid = DLSCH_ptr->harq_pid_freelist[DLSCH_ptr->head_freelist];
+      *round = 0;
+      LOG_D(PHY,"process %d is first free process\n", *harq_pid);
+    }
+
     LOG_D(PHY,"get_ue_active_harq_pid DL => Frame %d, Subframe %d : harq_pid %d\n",
 	  frame,subframe,*harq_pid);
   } else { // This is a UL request
@@ -296,7 +322,6 @@ int get_ue_active_harq_pid(const uint8_t Mod_id,const uint8_t CC_id,const uint16
   return(0);
 }
 
-
 int CCE_table[800];
 
 void init_nCCE_table(void)
@@ -2868,6 +2893,7 @@ void process_HARQ_feedback(uint8_t UE_id,
               dlsch_harq_proc->round = 0;
               ue_stats->dlsch_l2_errors[dl_harq_pid[m]]++;
               dlsch_harq_proc->status = SCH_IDLE;
+              put_harq_pid_in_freelist(dlsch, dl_harq_pid[m]);
               dlsch->harq_ids[dl_subframe] = dlsch->Mdlharq;
             }
           } else {
@@ -2880,6 +2906,7 @@ void process_HARQ_feedback(uint8_t UE_id,
             // Received ACK so set round to 0 and set dlsch_harq_pid IDLE
             dlsch_harq_proc->round  = 0;
             dlsch_harq_proc->status = SCH_IDLE;
+            put_harq_pid_in_freelist(dlsch, dl_harq_pid[m]);
             dlsch->harq_ids[dl_subframe] = dlsch->Mdlharq;
 
             ue_stats->total_TBS = ue_stats->total_TBS +
@@ -3949,6 +3976,9 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
             phy_vars_eNB->eNB_UE_stats[i].sr_received++;
 
             if (phy_vars_eNB->first_sr[i] == 1) { // this is the first request for uplink after Connection Setup, so clear HARQ process 0 use for Msg4
+              /* is this test necessary? */
+              if (phy_vars_eNB->dlsch_eNB[i][0]->harq_processes[0]->status != SCH_IDLE)
+                put_harq_pid_in_freelist(phy_vars_eNB->dlsch_eNB[i][0], 0);
               phy_vars_eNB->first_sr[i] = 0;
               phy_vars_eNB->dlsch_eNB[i][0]->harq_processes[0]->round=0;
               phy_vars_eNB->dlsch_eNB[i][0]->harq_processes[0]->status=SCH_IDLE;
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 7dcd71ce472b982b823b5f91751e17063f5850a6..d65b94506828c5fc722cff91324711655d58cfd5 100755
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -1553,7 +1553,9 @@ void lte_ue_measurement_procedures(uint16_t l, PHY_VARS_UE *phy_vars_ue,uint8_t
 
 #else
 #ifndef OAI_USRP
+  #ifndef OAI_BLADERF
     phy_adjust_gain (phy_vars_ue,0);
+  #endif
 #endif
 #endif
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GAIN_CONTROL, VCD_FUNCTION_OUT);
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index 28e7bc8216ecd57ff465250e9a0261c5c1b5d062..6474e83dd91438e04a4b021d83637ff8ac2eda33 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -326,7 +326,7 @@ int main(int argc, char **argv)
   uint32_t DLSCH_RB_ALLOC = 0x1fff;
   int numCCE=0;
   int dci_length_bytes=0,dci_length=0;
-  double BW = 5.0;
+  //double channel_bandwidth = 5.0, sampling_rate=7.68;
   int common_flag=0,TPC=0;
 
   double cpu_freq_GHz;
@@ -680,27 +680,19 @@ int main(int argc, char **argv)
     switch (N_RB_DL) {
     case 6:
       if (rballocset==0) DLSCH_RB_ALLOC = 0x3f;
-
-      BW = 1.25;
       num_pdcch_symbols = 3;
       break;
 
     case 25:
       if (rballocset==0) DLSCH_RB_ALLOC = 0x1fff;
-
-      BW = 5.00;
       break;
 
     case 50:
       if (rballocset==0) DLSCH_RB_ALLOC = 0x1ffff;
-
-      BW = 10.00;
       break;
 
     case 100:
       if (rballocset==0) DLSCH_RB_ALLOC = 0x1ffffff;
-
-      BW = 20.00;
       break;
     }
 
@@ -708,8 +700,6 @@ int main(int argc, char **argv)
   } else
     NB_RB = 4;
 
-  NB_RB=conv_nprb(0,DLSCH_RB_ALLOC,N_RB_DL);
-
   if ((transmission_mode > 1) && (n_tx != 2))
     printf("n_tx must be >1 for transmission_mode %d\n",transmission_mode);
 
@@ -777,6 +767,10 @@ int main(int argc, char **argv)
     sprintf(bler_fname,"bler_tx%d_chan%d_nrx%d_mcs%d.csv",transmission_mode,channel_model,n_rx,mcs1);
 
   bler_fd = fopen(bler_fname,"w");
+  if (bler_fd==NULL) {
+    fprintf(stderr,"Cannot create file %s!\n",bler_fname);
+    exit(-1);
+  }
   fprintf(bler_fd,"SNR; MCS; TBS; rate; err0; trials0; err1; trials1; err2; trials2; err3; trials3; dci_err\n");
 
   if (test_perf != 0) {
@@ -784,12 +778,16 @@ int main(int argc, char **argv)
     hostname[1023] = '\0';
     gethostname(hostname, 1023);
     printf("Hostname: %s\n", hostname);
-    char dirname[FILENAME_MAX];
-    sprintf(dirname, "%s/SIMU/USER/pre-ci-logs-%s", getenv("OPENAIR_TARGETS"),hostname );
-    sprintf(time_meas_fname,"%s/time_meas_prb%d_mcs%d_anttx%d_antrx%d_pdcch%d_channel%s_tx%d.csv",
-            dirname,N_RB_DL,mcs1,n_tx,n_rx,num_pdcch_symbols,channel_model_input,transmission_mode);
-    mkdir(dirname,0777);
+    //char dirname[FILENAME_MAX];
+    //sprintf(dirname, "%s/SIMU/USER/pre-ci-logs-%s", getenv("OPENAIR_TARGETS"),hostname );
+    sprintf(time_meas_fname,"time_meas_prb%d_mcs%d_anttx%d_antrx%d_pdcch%d_channel%s_tx%d.csv",
+            N_RB_DL,mcs1,n_tx,n_rx,num_pdcch_symbols,channel_model_input,transmission_mode);
+    //mkdir(dirname,0777);
     time_meas_fd = fopen(time_meas_fname,"w");
+    if (time_meas_fd==NULL) {
+      fprintf(stderr,"Cannot create file %s!\n",time_meas_fname);
+      exit(-1);
+    }
   }
 
   if(abstx) {
@@ -797,6 +795,10 @@ int main(int argc, char **argv)
     sprintf(csv_fname,"dataout_tx%d_u2%d_mcs%d_chan%d_nsimus%d_R%d.m",transmission_mode,dual_stream_UE,mcs1,channel_model,n_frames,num_rounds);
     csv_fd = fopen(csv_fname,"w");
     fprintf(csv_fd,"data_all%d=[",mcs1);
+    if (csv_fd==NULL) {
+      fprintf(stderr,"Cannot create file %s!\n",csv_fname);
+      exit(-1);
+    }
   }
 
   /*
@@ -955,7 +957,8 @@ int main(int argc, char **argv)
   eNB2UE[0] = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx,
                                    PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                    channel_model,
-                                   BW,
+                                   N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
+				   N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
                                    forgetting_factor,
                                    rx_sample_offset,
                                    0);
@@ -965,8 +968,9 @@ int main(int argc, char **argv)
       eNB2UE[n] = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx,
                                        PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                        channel_model,
-                                       BW,
-                                       forgetting_factor,
+				       N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
+				       N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
+				       forgetting_factor,
                                        rx_sample_offset,
                                        0);
   }
@@ -2777,7 +2781,7 @@ PMI_FEEDBACK:
 
           // Multipath channel
           if (awgn_flag == 0) {
-            multipath_channel(eNB2UE[0],s_re,s_im,r_re,r_im,
+            multipath_channel(eNB2UE[round],s_re,s_im,r_re,r_im,
                               2*frame_parms->samples_per_tti,hold_channel);
 
             //      printf("amc: ****************** eNB2UE[%d]->n_rx = %d,dd %d\n",round,eNB2UE[round]->nb_rx,eNB2UE[round]->channel_offset);
diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c
index 862edaa864493c8af5af0e6942382455da3f3e93..b9be0b27e8163404ff3310894927385fe0d05121 100644
--- a/openair1/SIMULATION/LTE_PHY/mbmssim.c
+++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c
@@ -54,8 +54,6 @@
 
 #include "OCG_vars.h"
 
-//#define BW 5.0
-
 
 PHY_VARS_eNB *PHY_vars_eNB;
 PHY_VARS_UE *PHY_vars_UE;
@@ -131,7 +129,7 @@ int main(int argc, char **argv)
 
   char c;
 
-  int i,l,aa,aarx;
+  int i,l,aa,aarx,k;
   double sigma2, sigma2_dB=0,SNR,snr0=-2.0,snr1=0.0;
   uint8_t snr1set=0;
   double snr_step=1,input_snr_step=1;
@@ -172,7 +170,6 @@ int main(int argc, char **argv)
   unsigned int trials,errs[4]= {0,0,0,0}; //,round_trials[4]={0,0,0,0};
 
   uint8_t N_RB_DL=25,osf=1;
-  double BW=5.0;
   uint32_t perfect_ce = 0;
 
   lte_frame_type_t frame_type = FDD;
@@ -255,27 +252,9 @@ int main(int argc, char **argv)
     case 'R':
       N_RB_DL = atoi(optarg);
 
-      switch (N_RB_DL) {
-      case 6:
-        BW=1.25;
-        break;
-
-      case 25:
-        BW=5.0;
-        break;
-
-      case 50:
-        BW=10.0;
-        break;
-
-      case 100:
-        BW=20.0;
-        break;
-
-      default:
+      if ((N_RB_DL!=6) && (N_RB_DL!=25) && (N_RB_DL!=50) && (N_RB_DL!=100))  {
         printf("Unsupported Bandwidth %d\n",N_RB_DL);
         exit(-1);
-        break;
       }
 
       break;
@@ -397,7 +376,8 @@ int main(int argc, char **argv)
   eNB2UE = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx,
                                 PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+				N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
+				N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
                                 0,
                                 0,
                                 0);
@@ -541,15 +521,26 @@ int main(int argc, char **argv)
                        subframe%10,
                        0,
                        0);
-      }
-
-      for (l=2; l<12; l++) {
-        rx_pmch(PHY_vars_UE,
+  
+	if (PHY_vars_UE->perfect_ce==1) {
+	  // fill in perfect channel estimates
+	  freq_channel(eNB2UE,PHY_vars_UE->lte_frame_parms.N_RB_DL,12*PHY_vars_UE->lte_frame_parms.N_RB_DL + 1);
+	  for(k=0; k<NUMBER_OF_eNB_MAX; k++) {
+	    for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
+	      for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
+		for (i=0; i<frame_parms->N_RB_DL*12; i++) {
+		  ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+(l*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(eNB2UE->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].x*AMP);
+		  ((int16_t *) PHY_vars_UE->lte_ue_common_vars.dl_ch_estimates[k][(aa<<1)+aarx])[2*i+1+(l*frame_parms->ofdm_symbol_size+LTE_CE_FILTER_LENGTH)*2]=(int16_t)(eNB2UE->chF[aarx+(aa*frame_parms->nb_antennas_rx)][i].y*AMP);
+		}
+	      }
+	    }
+	  }
+	}
+	
+	rx_pmch(PHY_vars_UE,
                 0,
                 subframe%10,
                 l);
-
-
       }
 
       PHY_vars_UE->dlsch_ue_MCH[0]->harq_processes[0]->G = get_G(&PHY_vars_UE->lte_frame_parms,
diff --git a/openair1/SIMULATION/LTE_PHY/pbchsim.c b/openair1/SIMULATION/LTE_PHY/pbchsim.c
index 5aa3fac997461ebd69f63d67fccf35f1530b5b01..b7f9f57b6bb1539b5b150dfb9dd5f51d3275f597 100644
--- a/openair1/SIMULATION/LTE_PHY/pbchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pbchsim.c
@@ -53,9 +53,6 @@
 
 #include "OCG_vars.h"
 
-#define BW 5.0
-
-
 PHY_VARS_eNB *PHY_vars_eNb,*PHY_vars_eNb1,*PHY_vars_eNb2;
 PHY_VARS_UE *PHY_vars_UE;
 
@@ -485,7 +482,8 @@ int main(int argc, char **argv)
   eNB2UE = new_channel_desc_scm(PHY_vars_eNb->lte_frame_parms.nb_antennas_tx,
                                 PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+ 				N_RB2sampling_rate(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
+				N_RB2channel_bandwidth(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
                                 0,
                                 0,
                                 0);
@@ -494,7 +492,8 @@ int main(int argc, char **argv)
     eNB2UE1 = new_channel_desc_scm(PHY_vars_eNb->lte_frame_parms.nb_antennas_tx,
                                    PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                    channel_model,
-                                   BW,
+				   N_RB2sampling_rate(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
+				   N_RB2channel_bandwidth(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
                                    0,
                                    4,
                                    0);
@@ -503,7 +502,8 @@ int main(int argc, char **argv)
     eNB2UE2 = new_channel_desc_scm(PHY_vars_eNb->lte_frame_parms.nb_antennas_tx,
                                    PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                    channel_model,
-                                   BW,
+				   N_RB2sampling_rate(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
+				   N_RB2channel_bandwidth(PHY_vars_eNb->lte_frame_parms.N_RB_DL),
                                    0,
                                    8,
                                    0);
diff --git a/openair1/SIMULATION/LTE_PHY/pdcchsim.c b/openair1/SIMULATION/LTE_PHY/pdcchsim.c
index caa7e1248d48e7dcc0078b45bffb1cb53f1d9d3c..7a361329806eb8347805d6a04637b8b823f41248 100644
--- a/openair1/SIMULATION/LTE_PHY/pdcchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pdcchsim.c
@@ -552,7 +552,6 @@ int main(int argc, char **argv)
   uint32_t *txptr;
   int aarx;
   int k;
-  double BW=5.0;
   uint32_t perfect_ce = 0;
 
   number_of_cards = 1;
@@ -840,28 +839,11 @@ int main(int argc, char **argv)
          subframe,NUMBER_OF_OFDM_CARRIERS,
          PHY_vars_eNB->lte_frame_parms.Ncp,PHY_vars_eNB->lte_frame_parms.samples_per_tti,nsymb);
 
-  switch (N_RB_DL) {
-  case 6:
-    BW = 1.25;
-    break;
-
-  case 25:
-    BW = 5.00;
-    break;
-
-  case 50:
-    BW = 10.00;
-    break;
-
-  case 100:
-    BW = 20.00;
-    break;
-  }
-
   eNB2UE = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx_eNB,
                                 PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+				N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
+				N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_DL),
                                 0,
                                 0,
                                 0);
diff --git a/openair1/SIMULATION/LTE_PHY/prachsim.c b/openair1/SIMULATION/LTE_PHY/prachsim.c
index eeca52a274da992602981381e3dd2721d26b6d8d..4df53b053f9b377569c7de648cd323bd12e51176 100644
--- a/openair1/SIMULATION/LTE_PHY/prachsim.c
+++ b/openair1/SIMULATION/LTE_PHY/prachsim.c
@@ -47,8 +47,6 @@
 
 #include "OCG_vars.h"
 
-#define BW 5.0
-
 int current_dlsch_cqi; //FIXME!
 
 PHY_VARS_eNB *PHY_vars_eNB;
@@ -412,7 +410,8 @@ int main(int argc, char **argv)
   UE2eNB = new_channel_desc_scm(PHY_vars_UE->lte_frame_parms.nb_antennas_tx,
                                 PHY_vars_eNB->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+				N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
+				N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
                                 0.0,
                                 delay,
                                 0);
diff --git a/openair1/SIMULATION/LTE_PHY/pucchsim.c b/openair1/SIMULATION/LTE_PHY/pucchsim.c
index 919bec144dd428f1f9d8858ab056c85e162ba45c..d9a3367b902c74b039fa524026a7a9078c2a94f2 100644
--- a/openair1/SIMULATION/LTE_PHY/pucchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pucchsim.c
@@ -49,8 +49,6 @@
 #include "OCG_vars.h"
 #include "UTIL/LOG/log_extern.h"
 
-#define BW 5.0
-
 int current_dlsch_cqi; //FIXME!
 
 PHY_VARS_eNB *PHY_vars_eNB;
@@ -418,7 +416,8 @@ int main(int argc, char **argv)
   UE2eNB = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx,
                                 PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+ 				N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
+				N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
                                 0.0,
                                 0,
                                 0);
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index dd697899b8cc79a231f7501c90c88923bb71d0d7..de2789acef4e6745e8ac92720d4a722c4ca78a1e 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -58,23 +58,11 @@
 
 extern unsigned short dftsizes[33];
 extern short *ul_ref_sigs[30][2][33];
-//#define AWGN
-//#define NO_DCI
-
-#define BW 7.68
-//#define ABSTRACTION
-//#define PERFECT_CE
-
-/*
-  #define RBmask0 0x00fc00fc
-  #define RBmask1 0x0
-  #define RBmask2 0x0
-  #define RBmask3 0x0
-*/
+
 PHY_VARS_eNB *PHY_vars_eNB;
 PHY_VARS_UE *PHY_vars_UE;
 
-#define MCS_COUNT 23//added for PHY abstraction
+//#define MCS_COUNT 23//added for PHY abstraction
 
 channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX];
 channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX];
@@ -155,11 +143,6 @@ void lte_param_init(unsigned char N_tx, unsigned char N_rx,unsigned char transmi
 
 
 
-#define UL_RB_ALLOC 0x1ff;
-
-
-
-
 int main(int argc, char **argv)
 {
 
@@ -172,8 +155,6 @@ int main(int argc, char **argv)
   double input_snr_step=.2,snr_int=30;
   double blerr;
 
-  //int **txdataF, **txdata;
-
   int **txdata;
 
   LTE_DL_FRAME_PARMS *frame_parms;
@@ -214,6 +195,7 @@ int main(int argc, char **argv)
   //  FILE *rx_frame_file;
   FILE *csv_fdUL=NULL;
 
+  /*
   FILE *fperen=NULL;
   char fperen_name[512];
 
@@ -222,6 +204,7 @@ int main(int argc, char **argv)
 
   FILE *flogeren=NULL;
   char flogeren_name[512];
+  */
 
   /* FILE *ftxlev;
      char ftxlev_name[512];
@@ -581,6 +564,10 @@ int main(int argc, char **argv)
 
   sprintf(bler_fname,"ULbler_mcs%d_nrb%d_ChannelModel%d_nsim%d.csv",mcs,nb_rb,chMod,n_frames);
   bler_fd = fopen(bler_fname,"w");
+  if (bler_fd==NULL) {
+    fprintf(stderr,"Problem creating file %s\n",bler_fname);
+    exit(-1);
+  }
 
   fprintf(bler_fd,"#SNR;mcs;nb_rb;TBS;rate;errors[0];trials[0];errors[1];trials[1];errors[2];trials[2];errors[3];trials[3]\n");
 
@@ -589,15 +576,19 @@ int main(int argc, char **argv)
     hostname[1023] = '\0';
     gethostname(hostname, 1023);
     printf("Hostname: %s\n", hostname);
-    char dirname[FILENAME_MAX];
-    sprintf(dirname, "%s//SIMU/USER/pre-ci-logs-%s", getenv("OPENAIR_TARGETS"),hostname);
-    mkdir(dirname, 0777);
-    sprintf(time_meas_fname,"%s/time_meas_prb%d_mcs%d_antrx%d_channel%s_tx%d.csv",
-            dirname,
+    //char dirname[FILENAME_MAX];
+    //sprintf(dirname, "%s//SIMU/USER/pre-ci-logs-%s", getenv("OPENAIR_TARGETS"),hostname);
+    //mkdir(dirname, 0777);
+    sprintf(time_meas_fname,"time_meas_prb%d_mcs%d_antrx%d_channel%s_tx%d.csv",
             N_RB_DL,mcs,n_rx,channel_model_input,transmission_mode);
     time_meas_fd = fopen(time_meas_fname,"w");
+    if (time_meas_fd==NULL) {
+      fprintf(stderr,"Cannot create file %s!\n",time_meas_fname);
+      exit(-1);
+    }
   }
 
+  /*
   if(abstx) {
     sprintf(fperen_name,"ULchan_estims_F_mcs%d_rb%d_chanMod%d_nframes%d_chanReal%d.m",mcs,nb_rb,chMod,n_frames,n_ch_rlz);
     fperen = fopen(fperen_name,"a+");
@@ -614,6 +605,7 @@ int main(int argc, char **argv)
     fprintf(flogeren,"mag_f = [");
     fclose(flogeren);
   }
+  */
 
   /*
     sprintf(ftxlev_name,"txlevel_mcs%d_rb%d_chanMod%d_nframes%d_chanReal%d.m",mcs,nb_rb,chMod,n_frames,n_ch_rlz);
@@ -626,6 +618,10 @@ int main(int argc, char **argv)
     // CSV file
     sprintf(csv_fname,"EULdataout_tx%d_mcs%d_nbrb%d_chan%d_nsimus%d_eren.m",transmission_mode,mcs,nb_rb,chMod,n_frames);
     csv_fdUL = fopen(csv_fname,"w");
+    if (csv_fdUL == NULL) {
+      fprintf(stderr,"Problem opening file %s\n",csv_fname);
+      exit(-1);
+    }
     fprintf(csv_fdUL,"data_all%d=[",mcs);
   }
 
@@ -680,7 +676,8 @@ int main(int argc, char **argv)
   UE2eNB = new_channel_desc_scm(PHY_vars_eNB->lte_frame_parms.nb_antennas_tx,
                                 PHY_vars_UE->lte_frame_parms.nb_antennas_rx,
                                 channel_model,
-                                BW,
+				N_RB2sampling_rate(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
+				N_RB2channel_bandwidth(PHY_vars_eNB->lte_frame_parms.N_RB_UL),
                                 forgetting_factor,
                                 delay,
                                 0);
@@ -1270,11 +1267,13 @@ int main(int argc, char **argv)
 
           PHY_vars_eNB->ulsch_eNB[0]->cyclicShift = cyclic_shift;// cyclic shift for DMRS
 
+	  /*
           if(abstx) {
             namepointer_log2 = &flogeren_name;
             namepointer_chMag = &fmageren_name;
             //namepointer_txlev = &ftxlev;
           }
+	  */
 
           start_meas(&PHY_vars_eNB->ulsch_demodulation_stats);
           rx_ulsch(PHY_vars_eNB,
@@ -1285,6 +1284,7 @@ int main(int argc, char **argv)
                    cooperation_flag);
           stop_meas(&PHY_vars_eNB->ulsch_demodulation_stats);
 
+	  /*
           if(abstx) {
             namepointer_chMag = NULL;
 
@@ -1296,8 +1296,7 @@ int main(int argc, char **argv)
               // flagMag = 1;
             }
           }
-
-          ///////
+	  */
 
           start_meas(&PHY_vars_eNB->ulsch_decoding_stats);
           ret= ulsch_decoding(PHY_vars_eNB,
@@ -1816,6 +1815,7 @@ int main(int argc, char **argv)
 
   }//ch realization
 
+  /*
   if(abstx) {
     fperen = fopen(fperen_name,"a+");
     fprintf(fperen,"];\n");
@@ -1829,6 +1829,7 @@ int main(int argc, char **argv)
     fprintf(flogeren,"];\n");
     fclose(flogeren);
   }
+  */
 
   // ftxlev = fopen(ftxlev_name,"a+");
   //fprintf(ftxlev,"];\n");
diff --git a/openair1/SIMULATION/TOOLS/abstraction.c b/openair1/SIMULATION/TOOLS/abstraction.c
index d63d0b0fe9cf8a970190e8dc48db1a9829a8d811..3720d9f99895becb2388bac4830cbb56ead1809a 100644
--- a/openair1/SIMULATION/TOOLS/abstraction.c
+++ b/openair1/SIMULATION/TOOLS/abstraction.c
@@ -73,7 +73,7 @@ void init_freq_channel(channel_desc_t *desc,uint16_t nb_rb,int16_t n_samples)
       if (desc->nb_taps==1)
         delay = desc->delays[l];
       else
-        delay = desc->delays[l]+NB_SAMPLES_CHANNEL_OFFSET/desc->BW;
+        delay = desc->delays[l]+NB_SAMPLES_CHANNEL_OFFSET/desc->sampling_rate;
 
       cos_lut[f+(n_samples>>1)][l] = cos(2*M_PI*freq*delay);
       sin_lut[f+(n_samples>>1)][l] = sin(2*M_PI*freq*delay);
diff --git a/openair1/SIMULATION/TOOLS/defs.h b/openair1/SIMULATION/TOOLS/defs.h
index 187ffcb241b815521e6cedfabc8aa6cb9c9db53b..0dfea70b890febf0a422674fb05dc33d2c13f95d 100644
--- a/openair1/SIMULATION/TOOLS/defs.h
+++ b/openair1/SIMULATION/TOOLS/defs.h
@@ -69,7 +69,9 @@ typedef struct {
   ///Maximum path delay in mus.
   double Td;
   ///Channel bandwidth in MHz.
-  double BW;
+  double channel_bandwidth;
+  ///System sampling rate in Msps.
+  double sampling_rate;
   ///Ricean factor of first tap wrt other taps (0..1, where 0 means AWGN and 1 means Rayleigh channel).
   double ricean_factor;
   ///Angle of arrival of wavefront (in radians). For Ricean channel only. This assumes that both RX and TX have linear antenna arrays with lambda/2 antenna spacing. Furhter it is assumed that the arrays are parallel to each other and that they are far enough apart so that we can safely assume plane wave propagation.
@@ -202,7 +204,8 @@ typedef enum {
 channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                                      uint8_t nb_rx,
                                      SCM_t channel_model,
-                                     double BW,
+				     double sampling_rate,
+                                     double channel_bandwidth,
                                      double forgetting_factor,
                                      int32_t channel_offset,
                                      double path_loss_dB);
@@ -364,6 +367,10 @@ void multipath_tv_channel(channel_desc_t *desc,
 
 /**@} */
 /**@} */
+
+double N_RB2sampling_rate(uint16_t N_RB);
+double N_RB2channel_bandwidth(uint16_t N_RB);
+
 #endif
 
 
diff --git a/openair1/SIMULATION/TOOLS/multipath_tv_channel.c b/openair1/SIMULATION/TOOLS/multipath_tv_channel.c
index b1bd091ca7edc9810acb6790f1069ac616fd9eca..3568545f299e573cc3a1d265ef33f49f1bdf9012 100644
--- a/openair1/SIMULATION/TOOLS/multipath_tv_channel.c
+++ b/openair1/SIMULATION/TOOLS/multipath_tv_channel.c
@@ -175,13 +175,13 @@ void tv_channel(channel_desc_t *desc,double complex ***H,uint16_t length)
      {
     for(p=0;p<desc->nb_paths;p++)
        {
-         H[i][j] += sqrt(desc->amps[j]/2)*alpha[p]*cexp(-I*(2*pi*w_Hz[p]*i*(1/(desc->BW*1e6))+phi_rad[p]));
+         H[i][j] += sqrt(desc->amps[j]/2)*alpha[p]*cexp(-I*(2*pi*w_Hz[p]*i*(1/(desc->sampling_rate*1e6))+phi_rad[p]));
        }
        }
    }
   for(j=0;j<desc->nb_paths;j++)
    {
-  phi_rad[j] = fmod(2*pi*w_Hz[j]*(length-1)*(1/desc->BW)+phi_rad[j],2*pi);
+  phi_rad[j] = fmod(2*pi*w_Hz[j]*(length-1)*(1/desc->sampling_rate)+phi_rad[j],2*pi);
    }
   */
 
@@ -193,13 +193,13 @@ void tv_channel(channel_desc_t *desc,double complex ***H,uint16_t length)
           H[i+(j*desc->nb_rx)][k][l] = 0;
 
           for(p=0; p<desc->nb_paths; p++) {
-            H[i+(j*desc->nb_rx)][k][l] += sqrt(desc->amps[l]/2)*alpha[p]*cexp(I*(2*pi*w_Hz[p]*k*(1/(desc->BW*1e6))+phi_rad[p]));
+            H[i+(j*desc->nb_rx)][k][l] += sqrt(desc->amps[l]/2)*alpha[p]*cexp(I*(2*pi*w_Hz[p]*k*(1/(desc->sampling_rate*1e6))+phi_rad[p]));
           }
         }
       }
 
       for(j=0; j<desc->nb_paths; j++) {
-        phi_rad[j] = fmod(2*pi*w_Hz[j]*(length-1)*(1/desc->BW)+phi_rad[j],2*pi);
+        phi_rad[j] = fmod(2*pi*w_Hz[j]*(length-1)*(1/desc->sampling_rate)+phi_rad[j],2*pi);
       }
     }
   }
diff --git a/openair1/SIMULATION/TOOLS/random_channel.c b/openair1/SIMULATION/TOOLS/random_channel.c
index 9233d94132c3283a31aff7e8b46a83f32a0362cd..417ff29162785cd4b17d56713cc239df6c69eb89 100644
--- a/openair1/SIMULATION/TOOLS/random_channel.c
+++ b/openair1/SIMULATION/TOOLS/random_channel.c
@@ -48,7 +48,8 @@ void fill_channel_desc(channel_desc_t *chan_desc,
                        double *delays,
                        struct complex** R_sqrt,
                        double Td,
-                       double BW,
+                       double sampling_rate,
+		       double channel_bandwidth,
                        double ricean_factor,
                        double aoa,
                        double forgetting_factor,
@@ -81,7 +82,8 @@ void fill_channel_desc(channel_desc_t *chan_desc,
     chan_desc->delays         = delays;
 
   chan_desc->Td             = Td;
-  chan_desc->BW             = BW;
+  chan_desc->sampling_rate             = sampling_rate;
+  chan_desc->channel_bandwidth         = channel_bandwidth;
   chan_desc->ricean_factor  = ricean_factor;
   chan_desc->aoa            = aoa;
   chan_desc->random_aoa  = random_aoa;
@@ -195,7 +197,8 @@ struct complex **R_sqrt_ptr2;
 channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                                      uint8_t nb_rx,
                                      SCM_t channel_model,
-                                     double BW,
+                                     double sampling_rate,
+				     double channel_bandwidth,
                                      double forgetting_factor,
                                      int32_t channel_offset,
                                      double path_loss_dB)
@@ -209,7 +212,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
 
   chan_desc->nb_tx          = nb_tx;
   chan_desc->nb_rx          = nb_rx;
-  chan_desc->BW             = BW;
+  chan_desc->sampling_rate             = sampling_rate;
+  chan_desc->channel_bandwidth         = channel_bandwidth;
   chan_desc->forgetting_factor = forgetting_factor;
   chan_desc->channel_offset = channel_offset;
   chan_desc->path_loss_dB   = path_loss_dB;
@@ -232,7 +236,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case SCM_C:
     chan_desc->nb_taps        = 18;
     chan_desc->Td             = 4.625;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -291,7 +295,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
     LOG_W(OCM,"This is not the real SCM-D model! It is just SCM-C with an additional Rice factor!\n");
     chan_desc->nb_taps        = 18;
     chan_desc->Td             = 4.625;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -349,7 +353,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case EPA:
     chan_desc->nb_taps        = 7;
     chan_desc->Td             = .410;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -403,7 +407,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case EVA:
     chan_desc->nb_taps        = 9;
     chan_desc->Td             = 2.51;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -457,7 +461,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case ETU:
     chan_desc->nb_taps        = 9;
     chan_desc->Td             = 5.0;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -511,7 +515,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case MBSFN:
     chan_desc->nb_taps        = 18;
     chan_desc->Td             = 28.58;
-    chan_desc->channel_length = (int) (2*chan_desc->BW*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->BW*chan_desc->Td));
+    chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td));
     sum_amps = 0;
     chan_desc->amps           = (double*) malloc(chan_desc->nb_taps*sizeof(double));
 
@@ -558,7 +562,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case Rayleigh8:
     nb_taps = 8;
     Td = 0.8;
-    channel_length = (int)11+2*BW*Td;
+    channel_length = (int)11+2*sampling_rate*Td;
     ricean_factor = 1;
     aoa = .03;
     maxDoppler = 0;
@@ -572,7 +576,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -585,7 +590,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
   case Rice8:
     nb_taps = 8;
     Td = 0.8;
-    channel_length = (int)11+2*BW*Td;
+    channel_length = (int)11+2*sampling_rate*Td;
     ricean_factor = 0.1;
     aoa = .03;
     maxDoppler = 0;
@@ -598,7 +603,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -624,7 +630,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -650,7 +657,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -683,7 +691,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       R_sqrt_ptr2,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -716,7 +725,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       R_sqrt_ptr2,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -742,7 +752,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -768,7 +779,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       NULL,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -803,7 +815,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       R_sqrt_ptr2,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -836,7 +849,8 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
                       NULL,
                       R_sqrt_ptr2,
                       Td,
-                      BW,
+                      sampling_rate,
+		      channel_bandwidth,
                       ricean_factor,
                       aoa,
                       forgetting_factor,
@@ -985,11 +999,11 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag)
             desc->ch[aarx+(aatx*desc->nb_rx)][k].y = 0.0;
 
             for (l=0; l<desc->nb_taps; l++) {
-              if ((k - (desc->delays[l]*desc->BW) - NB_SAMPLES_CHANNEL_OFFSET) == 0)
+              if ((k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET) == 0)
                 s = 1.0;
               else
-                s = sin(M_PI*(k - (desc->delays[l]*desc->BW) - NB_SAMPLES_CHANNEL_OFFSET))/
-                    (M_PI*(k - (desc->delays[l]*desc->BW) - NB_SAMPLES_CHANNEL_OFFSET));
+                s = sin(M_PI*(k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET))/
+                    (M_PI*(k - (desc->delays[l]*desc->sampling_rate) - NB_SAMPLES_CHANNEL_OFFSET));
 
               desc->ch[aarx+(aatx*desc->nb_rx)][k].x += s*desc->a[l][aarx+(aatx*desc->nb_rx)].x;
               desc->ch[aarx+(aatx*desc->nb_rx)][k].y += s*desc->a[l][aarx+(aatx*desc->nb_rx)].y;
@@ -1014,22 +1028,77 @@ int random_channel(channel_desc_t *desc, uint8_t abstraction_flag)
   return (0);
 }
 
+double N_RB2sampling_rate(uint16_t N_RB)
+{
+  double sampling_rate;
+  switch (N_RB) {
+  case 6:
+    sampling_rate = 1.92;
+    break;
+    
+  case 25:
+    sampling_rate = 7.68;
+    break;
+    
+  case 50:
+    sampling_rate = 15.36;
+    break;
+    
+  case 100:
+    sampling_rate = 30.72;
+    break;
+    
+  default:
+    LOG_E(PHY,"Unknown N_PRB\n");
+    return(-1);  
+  }
+
+  return(sampling_rate);
+}
+
+double N_RB2channel_bandwidth(uint16_t N_RB)
+{
+  double channel_bandwidth;
+  switch (N_RB) {
+  case 6:
+    channel_bandwidth = 1.25;
+    break;
+    
+  case 25:
+    channel_bandwidth = 5.00;
+    break;
+    
+  case 50:
+    channel_bandwidth = 10.00;
+    break;
+    
+  case 100:
+    channel_bandwidth = 20.00;
+    break;
+    
+  default:
+    LOG_E(PHY,"Unknown N_PRB\n");
+    return(-1);  
+  }
+  return(channel_bandwidth);
+}
+
 #ifdef RANDOM_CHANNEL_MAIN
-#define BW 5.0
+#define sampling_rate 5.0
 #define Td 2.0
 main(int argc,char **argv)
 {
 
   double amps[8] = {.8,.2,.1,.04,.02,.01,.005};
-  struct complex ch[(int)(1+2*BW*Td)],phase;
+  struct complex ch[(int)(1+2*sampling_rate*Td)],phase;
   int i;
 
   randominit();
   phase.x = 1.0;
   phase.y = 0;
-  random_channel(amps,Td, 8,BW,ch,(double)1.0,&phase);
+  random_channel(amps,Td, 8,sampling_rate,ch,(double)1.0,&phase);
   /*
-  for (i=0;i<(11+2*BW*Td);i++){
+  for (i=0;i<(11+2*sampling_rate*Td);i++){
     printf("%f + sqrt(-1)*%f\n",ch[i].x,ch[i].y);
   }
   */
diff --git a/openair3/TEST/test_kdf.c b/openair3/TEST/test_kdf.c
index 2a66527773218f57e2cbeac2bf7876d9806ecf66..121efcb9532c011e8179b4d99f560a25911a6166 100644
--- a/openair3/TEST/test_kdf.c
+++ b/openair3/TEST/test_kdf.c
@@ -42,9 +42,9 @@ static
 void do_kdf(uint8_t *key, unsigned key_length, uint8_t *data, unsigned data_length,
             uint8_t *exp, unsigned exp_length)
 {
-  uint8_t *result;
+  uint8_t result[32];
 
-  kdf(key, key_length, data, data_length, &result, 32);
+  kdf(key, key_length, data, data_length, result, 32);
 
   if (compare_buffer(result, exp_length, exp, exp_length) != 0) {
     fail("Fail: kdf\n");
diff --git a/openair3/TEST/test_secu_kenb.c b/openair3/TEST/test_secu_kenb.c
index 16f6a8eadc9faceb802eabfb151f30b5648d4332..967e45722907580815bfc0aeac45def5611c38da 100644
--- a/openair3/TEST/test_secu_kenb.c
+++ b/openair3/TEST/test_secu_kenb.c
@@ -39,15 +39,15 @@ static
 void do_derive_kenb(uint32_t nas_count, const uint8_t *kasme, const unsigned length,
                     const uint8_t *kenb_exp)
 {
-  uint8_t *kenb;
+  uint8_t kenb[32];
 
-  derive_keNB(kasme, nas_count, &kenb);
+  memset(kenb, 0, sizeof(kenb));
+  derive_keNB(kasme, nas_count, kenb);
 
   if (compare_buffer(kenb_exp, length, kenb, length) != 0) {
     fail("Fail: kenb derivation\n");
   }
 
-  free(kenb);
 }
 
 void doit (void)
diff --git a/openair3/TEST/test_secu_knas.c b/openair3/TEST/test_secu_knas.c
index ecf213f7b3027e8b931e0c42b77835bbf476f4d5..9b9cdc415a18db118cdaf7d6ea6e573865ce6704 100644
--- a/openair3/TEST/test_secu_knas.c
+++ b/openair3/TEST/test_secu_knas.c
@@ -39,21 +39,23 @@ static
 void derive_knas_keys(algorithm_type_dist_t atd, uint8_t *kasme, unsigned length,
                       uint8_t *knas_enc_exp, uint8_t *knas_int_exp)
 {
-  uint8_t *knas_enc;
-  uint8_t *knas_int;
+  uint8_t *knas_enc = NULL;
+  uint8_t *knas_int = NULL;
 
-  derive_key_nas_enc(atd, kasme, &knas_enc);
-  derive_key_nas_int(atd, kasme, &knas_int);
+  knas_enc = calloc(1, 32);
+  knas_int = calloc(1, 32);
+
+  derive_key_nas_enc(atd, kasme, knas_enc);
+  derive_key_nas_int(atd, kasme, knas_int);
 
   /* Compare both keys with expected */
-  if (compare_buffer(knas_enc, 32, knas_enc_exp, 32) != 0) {
+  if (compare_buffer(knas_enc, 16, &knas_enc_exp[16], 16) != 0) {
     fail("Fail: knas_enc derivation\n");
   }
 
-  if (compare_buffer(knas_int, 32, knas_int_exp, 32) != 0) {
+  if (compare_buffer(knas_int, 16, &knas_int_exp[16], 16) != 0) {
     fail("Fail: knas_int derivation\n");
   }
-
   free(knas_enc);
   free(knas_int);
 }
diff --git a/openair3/TEST/test_secu_knas_encrypt_eea1.c b/openair3/TEST/test_secu_knas_encrypt_eea1.c
index 9c54828ff4dcafd516fa2af3ae332f3ac08c4be1..83a4077d892b820db034b815a34dd7ba17303605 100755
--- a/openair3/TEST/test_secu_knas_encrypt_eea1.c
+++ b/openair3/TEST/test_secu_knas_encrypt_eea1.c
@@ -40,14 +40,15 @@ void eea1_encrypt(uint8_t direction, uint32_t count,
                   uint8_t bearer, uint8_t *key, uint32_t key_length, uint8_t *message,
                   uint32_t length, uint8_t *expected)
 {
-  nas_stream_cipher_t *nas_cipher;
-  uint8_t *result;
-  uint32_t zero_bits = length & 7;
-  uint32_t byte_length = length >> 3;
+  nas_stream_cipher_t *nas_cipher  = NULL;
+  uint8_t             *result      = NULL;
+  uint32_t             zero_bits   = length & 7;
+  uint32_t             byte_length = length >> 3;
 
   if (zero_bits > 0)
     byte_length += 1;
 
+  result     = calloc(1, byte_length);
   nas_cipher = calloc(1, sizeof(nas_stream_cipher_t));
 
   nas_cipher->direction  = direction;
@@ -58,7 +59,7 @@ void eea1_encrypt(uint8_t direction, uint32_t count,
   nas_cipher->blength    = length;
   nas_cipher->message    = message;
 
-  if (nas_stream_encrypt_eea1(nas_cipher, &result) != 0)
+  if (nas_stream_encrypt_eea1(nas_cipher, result) != 0)
     fail("Fail: nas_stream_encrypt_eea1\n");
 
   if (compare_buffer(result, byte_length, expected, byte_length) != 0) {
diff --git a/openair3/TEST/test_secu_knas_encrypt_eea2.c b/openair3/TEST/test_secu_knas_encrypt_eea2.c
index 712da6d947f713369cd9901b65eedfbe2e8e57ed..d0ff01c1e6bf36f1b1f18055046a6b64b079c2b0 100644
--- a/openair3/TEST/test_secu_knas_encrypt_eea2.c
+++ b/openair3/TEST/test_secu_knas_encrypt_eea2.c
@@ -40,14 +40,15 @@ void eea2_encrypt(uint8_t direction, uint32_t count,
                   uint8_t bearer, uint8_t *key, uint32_t key_length, uint8_t *message,
                   uint32_t length, uint8_t *expected)
 {
-  nas_stream_cipher_t *nas_cipher;
-  uint8_t *result;
-  uint32_t zero_bits = length & 7;
-  uint32_t byte_length = length >> 3;
+  nas_stream_cipher_t *nas_cipher  = NULL;
+  uint8_t             *result      = NULL;
+  uint32_t             zero_bits   = length & 7;
+  uint32_t             byte_length = length >> 3;
 
   if (zero_bits > 0)
     byte_length += 1;
 
+  result     = calloc(1, byte_length);
   nas_cipher = calloc(1, sizeof(nas_stream_cipher_t));
 
   nas_cipher->direction  = direction;
@@ -58,7 +59,7 @@ void eea2_encrypt(uint8_t direction, uint32_t count,
   nas_cipher->blength    = length;
   nas_cipher->message    = message;
 
-  if (nas_stream_encrypt_eea2(nas_cipher, &result) != 0)
+  if (nas_stream_encrypt_eea2(nas_cipher, result) != 0)
     fail("Fail: nas_stream_encrypt_eea2\n");
 
   if (compare_buffer(result, byte_length, expected, byte_length) != 0) {
diff --git a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
index b06059fdfb3e2014b874c4281359a9a1fa686c30..c7f2ee7b5e8d8c83a7b74ddbbca02b2ab7a6e116 100644
--- a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
+++ b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
@@ -132,15 +132,16 @@ static int trx_brf_read(openair0_device *device, openair0_timestamp *ptimestamp,
   brf->meta_rx.flags = BLADERF_META_FLAG_RX_NOW;
   status = bladerf_sync_rx(brf->dev, samples, (unsigned int) nsamps, &brf->meta_rx, 2*brf->rx_timeout_ms);
   
-  //printf("Current RX timestampe  %u, nsamps %u, actual %u, cc %d\n",  brf->meta_rx.timestamp, nsamps, brf->meta_rx.actual_count, cc);
+  //  printf("Current RX timestampe  %u, nsamps %u, actual %u, cc %d\n",  brf->meta_rx.timestamp, nsamps, brf->meta_rx.actual_count, cc);
    
   if (status != 0) {
     fprintf(stderr, "RX failed: %s\n", bladerf_strerror(status)); 
+    //    printf("RX failed: %s\n", bladerf_strerror(status)); 
     brf->num_rx_errors++;
   } else if ( brf->meta_rx.status & BLADERF_META_STATUS_OVERRUN) {
     brf->num_overflows++;
-    fprintf(stderr, "RX overrun (%d) is detected. t=%u. Got %u samples. nsymps %d\n", 
-	    brf->num_overflows,brf->meta_rx.timestamp,  brf->meta_rx.actual_count, nsamps);
+    printf("RX overrun (%d) is detected. t=%u. Got %u samples. nsymps %d\n", 
+	   brf->num_overflows,brf->meta_rx.timestamp,  brf->meta_rx.actual_count, nsamps);
   } 
   //printf("Current RX timestampe  %u\n",  brf->meta_rx.timestamp);
   //printf("[BRF] (buff %p) ts=0x%"PRIu64" %s\n",samples, brf->meta_rx.timestamp,bladerf_strerror(status));
@@ -192,6 +193,23 @@ int trx_brf_stop(openair0_device* device) {
 
 int trx_brf_set_freq(openair0_device* device) {
 
+  int status;
+  brf_state_t *brf = (brf_state_t *)device->priv;
+  openair0_config_t *openair0_cfg = (openair0_config_t *)device->openair0_cfg;
+
+
+  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_TX, (unsigned int) openair0_cfg->tx_freq[0])) != 0){
+    fprintf(stderr,"Failed to set TX frequency: %s\n",bladerf_strerror(status));
+    brf_error(status);
+  }else 
+    printf("[BRF] set TX Frequency to %u\n", (unsigned int) openair0_cfg->tx_freq[0]);
+
+  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg->rx_freq[0])) != 0){
+    fprintf(stderr,"Failed to set RX frequency: %s\n",bladerf_strerror(status));
+    brf_error(status);
+  } else 
+    printf("[BRF] set RX frequency to %u\n",(unsigned int)openair0_cfg->rx_freq[0]);
+
   return(0);
 
 }
@@ -201,6 +219,609 @@ int trx_brf_set_gains(openair0_device* device) {
 
 }
 
+#define RXDCLENGTH 16384
+int16_t cos_fsover8[8]  = {2047,   1447,      0,  -1448,  -2047,  -1448,     0,   1447};
+int16_t cos_3fsover8[8] = {2047,  -1448,      0,   1447,  -2047,   1447,     0,  -1448};
+
+rx_gain_calib_table_t calib_table_fx4[] = {
+  {2300000000.0,53.5},
+  {1880000000.0,57.0},
+  {816000000.0,73.0},
+  {-1,0}};
+
+void set_rx_gain_offset(openair0_config_t *openair0_cfg, int chain_index) {
+
+  int i=0;
+  // loop through calibration table to find best adjustment factor for RX frequency
+  double min_diff = 6e9,diff;
+  
+  while (openair0_cfg->rx_gain_calib_table[i].freq>0) {
+    diff = fabs(openair0_cfg->rx_freq[chain_index] - openair0_cfg->rx_gain_calib_table[i].freq);
+    printf("cal %d: freq %f, offset %f, diff %f\n",
+	   i,
+	   openair0_cfg->rx_gain_calib_table[i].freq,
+	   openair0_cfg->rx_gain_calib_table[i].offset,diff);
+    if (min_diff > diff) {
+      min_diff = diff;
+      openair0_cfg->rx_gain_offset[chain_index] = openair0_cfg->rx_gain_calib_table[i].offset;
+    }
+    i++;
+  }
+  
+}
+
+void calibrate_rf(openair0_device *device) {
+
+
+  brf_state_t *brf = (brf_state_t *)device->priv;
+  openair0_timestamp ptimestamp;
+  int16_t *calib_buffp,*calib_tx_buffp;
+  int16_t calib_buff[2*RXDCLENGTH];
+  int16_t calib_tx_buff[2*RXDCLENGTH];
+  int i,j,offI,offQ,offIold,offQold,offInew,offQnew,offphase,offphaseold,offphasenew,offgain,offgainold,offgainnew;
+  int32_t meanI,meanQ,meanIold,meanQold;
+  int cnt=0,loop;
+
+  // put TX on a far-away frequency to avoid interference in RX band
+  bladerf_set_frequency(brf->dev,BLADERF_MODULE_TX, (unsigned int) device->openair0_cfg->rx_freq[0] + 200e6);  
+  // Set gains to close to max
+  bladerf_set_gain(brf->dev, BLADERF_MODULE_RX, 60);
+  bladerf_set_gain(brf->dev, BLADERF_MODULE_TX, 60);
+
+  // fill TX buffer with fs/8 complex sinusoid
+  j=0;
+  for (i=0;i<RXDCLENGTH;i++) {
+    calib_tx_buff[j++] = cos_fsover8[i&7];
+    calib_tx_buff[j++] = cos_fsover8[(i+6)&7];  // sin
+  }
+  calib_buffp = &calib_buff[0];
+  calib_tx_buffp = &calib_tx_buff[0];
+  // Calibrate RX DC offset
+
+  offIold=offQold=2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_I,offIold);
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_Q,offQold);
+  for (i=0;i<10;i++)
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+  
+  for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+    meanIold+=calib_buff[j++];
+    meanQold+=calib_buff[j++];
+  }
+  meanIold/=RXDCLENGTH;
+  meanQold/=RXDCLENGTH;
+  printf("[BRF] RX DC: (%d,%d) => (%d,%d)\n",offIold,offQold,meanIold,meanQold);
+
+  offI=offQ=-2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_I,offI);
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_Q,offQ);
+  for (i=0;i<10;i++)
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+  
+  for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+    meanI+=calib_buff[j++];
+    meanQ+=calib_buff[j++];
+  }
+  meanI/=RXDCLENGTH;
+  meanQ/=RXDCLENGTH;
+  //  printf("[BRF] RX DC: (%d,%d) => (%d,%d)\n",offI,offQ,meanI,meanQ);
+
+  while (cnt++ < 12) {
+
+    offInew=(offIold+offI)>>1;
+    offQnew=(offQold+offQ)>>1;
+
+    if (meanI*meanI < meanIold*meanIold) {
+      meanIold = meanI;
+      offIold = offI;
+      printf("[BRF] *** RX DC: offI %d => %d\n",offIold,meanI);
+    }
+    if (meanQ*meanQ < meanQold*meanQold) {
+      meanQold = meanQ;
+      offQold = offQ;
+      printf("[BRF] *** RX DC: offQ %d => %d\n",offQold,meanQ);
+    }
+    offI = offInew;
+    offQ = offQnew;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_I,offI);
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_Q,offQ);
+
+    for (i=0;i<10;i++)
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+    
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      meanI+=calib_buff[j++];
+      meanQ+=calib_buff[j++];
+    }
+    meanI/=RXDCLENGTH;
+    meanQ/=RXDCLENGTH;
+    printf("[BRF] RX DC: (%d,%d) => (%d,%d)\n",offI,offQ,meanI,meanQ);
+  }
+
+  printf("[BRF] RX DC: (%d,%d) => (%d,%d)\n",offIold,offQold,meanIold,meanQold);
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_I,offIold);
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_LMS_DCOFF_Q,offQold);
+
+  // TX DC offset
+  // PUT TX as f_RX + fs/4
+  // loop back BLADERF_LB_RF_LNA1
+  bladerf_set_frequency(brf->dev,BLADERF_MODULE_TX, (unsigned int) device->openair0_cfg->rx_freq[0] + (unsigned int) device->openair0_cfg->sample_rate/4);  
+  bladerf_set_loopback (brf->dev,BLADERF_LB_RF_LNA1);
+
+  offIold=2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_I,offIold);
+  for (i=0;i<10;i++) {
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+    trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+  }
+  for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+    switch (i&3) {
+    case 0:
+      meanIold+=calib_buff[j++];
+      break;
+    case 1:
+      meanQold+=calib_buff[j++];
+      break;
+    case 2:
+      meanIold-=calib_buff[j++];
+      break;
+    case 3:
+      meanQold-=calib_buff[j++];
+      break;
+    }
+  }
+  //  meanIold/=RXDCLENGTH;
+  //  meanQold/=RXDCLENGTH;
+  printf("[BRF] TX DC (offI): %d => (%d,%d)\n",offIold,meanIold,meanQold);
+
+  offI=-2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_I,offI);
+  for (i=0;i<10;i++) {
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+    trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+  }
+  for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+    switch (i&3) {
+    case 0:
+      meanI+=calib_buff[j++];
+      break;
+    case 1:
+      meanQ+=calib_buff[j++];
+      break;
+    case 2:
+      meanI-=calib_buff[j++];
+      break;
+    case 3:
+      meanQ-=calib_buff[j++];
+      break;
+    }
+  }
+  //  meanI/=RXDCLENGTH;
+  //  meanQ/=RXDCLENGTH;
+  printf("[BRF] TX DC (offI): %d => (%d,%d)\n",offI,meanI,meanQ);
+  cnt = 0;
+  while (cnt++ < 12) {
+
+    offInew=(offIold+offI)>>1;
+    if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+      printf("[BRF] TX DC (offI): ([%d,%d]) => %d : %d\n",offIold,offI,offInew,meanI*meanI+meanQ*meanQ);
+      meanIold = meanI;
+      meanQold = meanQ;
+      offIold = offI;
+    }
+    offI = offInew;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_I,offI);
+
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      switch (i&3) {
+      case 0:
+	meanI+=calib_buff[j++];
+	break;
+      case 1:
+	meanQ+=calib_buff[j++];
+	break;
+      case 2:
+	meanI-=calib_buff[j++];
+	break;
+      case 3:
+	meanQ-=calib_buff[j++];
+	break;
+      }
+    }
+    //    meanI/=RXDCLENGTH;
+    //   meanQ/=RXDCLENGTH;
+    //    printf("[BRF] TX DC (offI): %d => (%d,%d)\n",offI,meanI,meanQ);
+  }
+
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_I,offIold);
+
+  offQold=2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_Q,offQold);
+  for (i=0;i<10;i++) {
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+    trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+  }
+  // project on fs/4
+  for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+    switch (i&3) {
+    case 0:
+      meanIold+=calib_buff[j++];
+      break;
+    case 1:
+      meanQold+=calib_buff[j++];
+      break;
+    case 2:
+      meanIold-=calib_buff[j++];
+      break;
+    case 3:
+      meanQold-=calib_buff[j++];
+      break;
+    }
+  }
+  //  meanIold/=RXDCLENGTH;
+  //  meanQold/=RXDCLENGTH;
+  printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQold,meanIold,meanQold);
+
+  offQ=-2048;
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_Q,offQ);
+  for (i=0;i<10;i++) {
+    trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+    trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+  }
+  for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+    switch (i&3) {
+    case 0:
+      meanI+=calib_buff[j++];
+      break;
+    case 1:
+      meanQ+=calib_buff[j++];
+      break;
+    case 2:
+      meanI-=calib_buff[j++];
+      break;
+    case 3:
+      meanQ-=calib_buff[j++];
+      break;
+    }
+  }
+  //  meanI/=RXDCLENGTH;
+  //  meanQ/=RXDCLENGTH;
+  printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+
+  cnt=0;
+  while (cnt++ < 12) {
+
+    offQnew=(offQold+offQ)>>1;
+    if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+      printf("[BRF] TX DC (offQ): ([%d,%d]) => %d : %d\n",offQold,offQ,offQnew,meanI*meanI+meanQ*meanQ);
+
+      meanIold = meanI;
+      meanQold = meanQ;
+      offQold = offQ;
+    }
+    offQ = offQnew;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_Q,offQ);
+
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      switch (i&3) {
+      case 0:
+	meanI+=calib_buff[j++];
+	break;
+      case 1:
+	meanQ+=calib_buff[j++];
+	break;
+      case 2:
+	meanI-=calib_buff[j++];
+	break;
+      case 3:
+	meanQ-=calib_buff[j++];
+	break;
+      }
+    }
+    //    meanI/=RXDCLENGTH;
+    //   meanQ/=RXDCLENGTH;
+    //    printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+  }
+
+  printf("[BRF] TX DC: (%d,%d) => (%d,%d)\n",offIold,offQold,meanIold,meanQold);
+
+  bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_LMS_DCOFF_Q,offQold);
+
+  // TX IQ imbalance
+  for (loop=0;loop<2;loop++) {
+    offphaseold=4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_PHASE,offphaseold);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on fs/8 (Image of TX signal in +ve frequencies)
+    for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+      meanIold+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+      meanQold+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanIold/=RXDCLENGTH;
+    meanQold/=RXDCLENGTH;
+    printf("[BRF] TX IQ (offphase): %d => (%d,%d)\n",offphaseold,meanIold,meanQold);
+    
+    offphase=-4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_PHASE,offphase);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on fs/8 (Image of TX signal in +ve frequencies)
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      meanI+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+      meanQ+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanI/=RXDCLENGTH;
+    meanQ/=RXDCLENGTH;
+    printf("[BRF] TX IQ (offphase): %d => (%d,%d)\n",offphase,meanI,meanQ);
+    
+    cnt=0;
+    while (cnt++ < 13) {
+      
+      offphasenew=(offphaseold+offphase)>>1;
+      printf("[BRF] TX IQ (offphase): ([%d,%d]) => %d : %d\n",offphaseold,offphase,offphasenew,meanI*meanI+meanQ*meanQ);
+      if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+
+	
+	meanIold = meanI;
+	meanQold = meanQ;
+	offphaseold = offphase;
+      }
+      offphase = offphasenew;
+      bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_PHASE,offphase);
+      
+      for (i=0;i<10;i++) {
+	trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+	trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+      }
+      // project on fs/8 (Image of TX signal in +ve frequencies)
+      for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+	meanI+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+	meanQ+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+	j+=2;
+      }
+      meanI/=RXDCLENGTH;
+      meanQ/=RXDCLENGTH;
+      
+      //    printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+    }
+    
+    printf("[BRF] TX IQ offphase: %d => (%d,%d)\n",offphaseold,meanIold,meanQold);
+    
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_PHASE,offphaseold);
+    
+    offgainold=4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_GAIN,offgainold);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on fs/8 (Image of TX signal in +ve frequencies)
+    for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+      meanIold+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+      meanQold+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanIold/=RXDCLENGTH;
+    meanQold/=RXDCLENGTH;
+    printf("[BRF] TX IQ (offgain): %d => (%d,%d)\n",offgainold,meanIold,meanQold);
+    
+    offgain=-4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_GAIN,offgain);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on fs/8 (Image of TX signal in +ve frequencies)
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      meanI+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+      meanQ+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanI/=RXDCLENGTH;
+    meanQ/=RXDCLENGTH;
+    printf("[BRF] TX IQ (offgain): %d => (%d,%d)\n",offgain,meanI,meanQ);
+    
+    cnt=0;
+    while (cnt++ < 13) {
+      
+      offgainnew=(offgainold+offgain)>>1;
+      if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+	printf("[BRF] TX IQ (offgain): ([%d,%d]) => %d : %d\n",offgainold,offgain,offgainnew,meanI*meanI+meanQ*meanQ);
+	
+	meanIold = meanI;
+	meanQold = meanQ;
+	offgainold = offgain;
+      }
+      offgain = offgainnew;
+      bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_GAIN,offgain);
+      
+      for (i=0;i<10;i++) {
+	trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+	trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+      }
+      // project on fs/8 (Image of TX signal in +ve frequencies)
+      for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+	meanI+= (calib_buff[j]*cos_fsover8[i&7] - calib_buff[j+1]*cos_fsover8[(i+2)&7])>>11;
+	meanQ+= (calib_buff[j]*cos_fsover8[(i+2)&7] + calib_buff[j+1]*cos_fsover8[i&7])>>11;
+	j+=2;
+      }
+      meanI/=RXDCLENGTH;
+      meanQ/=RXDCLENGTH;
+      
+      //    printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+    }
+    
+    printf("[BRF] TX IQ offgain: %d => (%d,%d)\n",offgainold,meanIold,meanQold);
+    
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_TX,BLADERF_CORR_FPGA_GAIN,offgainold);
+  }
+
+  // RX IQ imbalance
+  for (loop=0;loop<2;loop++) {
+    offphaseold=4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_PHASE,offphaseold);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on -3fs/8 (Image of TX signal in -ve frequencies)
+    for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+      meanIold+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+      meanQold+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanIold/=RXDCLENGTH;
+    meanQold/=RXDCLENGTH;
+    printf("[BRF] RX IQ (offphase): %d => (%d,%d)\n",offphaseold,meanIold,meanQold);
+    
+    offphase=-4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_PHASE,offphase);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on -3fs/8 (Image of TX signal in -ve frequencies)
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      meanI+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+      meanQ+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanI/=RXDCLENGTH;
+    meanQ/=RXDCLENGTH;
+    printf("[BRF] RX IQ (offphase): %d => (%d,%d)\n",offphase,meanI,meanQ);
+    
+    cnt=0;
+    while (cnt++ < 13) {
+      
+      offphasenew=(offphaseold+offphase)>>1;
+      printf("[BRF] RX IQ (offphase): ([%d,%d]) => %d : %d\n",offphaseold,offphase,offphasenew,meanI*meanI+meanQ*meanQ);
+      if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+
+	
+	meanIold = meanI;
+	meanQold = meanQ;
+	offphaseold = offphase;
+      }
+      offphase = offphasenew;
+      bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_PHASE,offphase);
+      
+      for (i=0;i<10;i++) {
+	trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+	trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+      }
+      // project on -3fs/8 (Image of TX signal in -ve frequencies)
+      for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+	meanI+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+	meanQ+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+	j+=2;
+      }
+      meanI/=RXDCLENGTH;
+      meanQ/=RXDCLENGTH;
+      
+      //    printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+    }
+    
+    printf("[BRF] RX IQ offphase: %d => (%d,%d)\n",offphaseold,meanIold,meanQold);
+    
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_PHASE,offphaseold);
+    
+    offgainold=4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_GAIN,offgainold);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on -3fs/8 (Image of TX signal in +ve frequencies)
+    for (meanIold=meanQold=i=j=0;i<RXDCLENGTH;i++) {
+      meanIold+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+      meanQold+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanIold/=RXDCLENGTH;
+    meanQold/=RXDCLENGTH;
+    printf("[BRF] RX IQ (offgain): %d => (%d,%d)\n",offgainold,meanIold,meanQold);
+    
+    offgain=-4096;
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_GAIN,offgain);
+    for (i=0;i<10;i++) {
+      trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+      trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+    }
+    // project on 3fs/8 (Image of TX signal in -ve frequencies)
+    for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+      meanI+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+      meanQ+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+      j+=2;
+    }
+    
+    meanI/=RXDCLENGTH;
+    meanQ/=RXDCLENGTH;
+    printf("[BRF] RX IQ (offgain): %d => (%d,%d)\n",offgain,meanI,meanQ);
+    
+    cnt=0;
+    while (cnt++ < 13) {
+      
+      offgainnew=(offgainold+offgain)>>1;
+      if (meanI*meanI+meanQ*meanQ < meanIold*meanIold +meanQold*meanQold) {
+	printf("[BRF] RX IQ (offgain): ([%d,%d]) => %d : %d\n",offgainold,offgain,offgainnew,meanI*meanI+meanQ*meanQ);
+	
+	meanIold = meanI;
+	meanQold = meanQ;
+	offgainold = offgain;
+      }
+      offgain = offgainnew;
+      bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_GAIN,offgain);
+      
+      for (i=0;i<10;i++) {
+	trx_brf_read(device, &ptimestamp, (void **)&calib_buffp, RXDCLENGTH, 0);
+	trx_brf_write(device,ptimestamp+5*RXDCLENGTH, (void **)&calib_tx_buffp, RXDCLENGTH, 0);
+      }
+      // project on -3fs/8 (Image of TX signal in -ve frequencies)
+      for (meanI=meanQ=i=j=0;i<RXDCLENGTH;i++) {
+	meanI+= (calib_buff[j]*cos_3fsover8[i&7] - calib_buff[j+1]*cos_3fsover8[(i+2)&7])>>11;
+	meanQ+= (calib_buff[j]*cos_3fsover8[(i+2)&7] + calib_buff[j+1]*cos_3fsover8[i&7])>>11;
+	j+=2;
+      }
+      meanI/=RXDCLENGTH;
+      meanQ/=RXDCLENGTH;
+      
+      //    printf("[BRF] TX DC (offQ): %d => (%d,%d)\n",offQ,meanI,meanQ);
+    }
+    
+    printf("[BRF] RX IQ offgain: %d => (%d,%d)\n",offgainold,meanIold,meanQold);
+    
+    bladerf_set_correction(brf->dev,BLADERF_MODULE_RX,BLADERF_CORR_FPGA_GAIN,offgainold);
+  }
+
+  bladerf_set_frequency(brf->dev,BLADERF_MODULE_TX, (unsigned int) device->openair0_cfg->tx_freq[0]);  
+  bladerf_set_loopback(brf->dev,BLADERF_LB_NONE);
+  bladerf_set_gain(brf->dev, BLADERF_MODULE_RX, (unsigned int) device->openair0_cfg->rx_gain[0]-device->openair0_cfg[0].rx_gain_offset[0]);
+  bladerf_set_gain(brf->dev, BLADERF_MODULE_TX, (unsigned int) device->openair0_cfg->tx_gain[0]);
+  //  write_output("blade_rf_test.m","rxs",calib_buff,RXDCLENGTH,1,1);
+}
+
 int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openair0_cfg) {
 
   int status;
@@ -208,15 +829,45 @@ int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openai
   
   brf_state_t *brf = (brf_state_t*)malloc(sizeof(brf_state_t));
   memset(brf, 0, sizeof(brf_state_t));
-  // init required params for BRF
+  // init required params
+
+  switch ((int)openair0_cfg->sample_rate) {
+  case 30720000:
+    openair0_cfg->samples_per_packet    = 2048;
+    openair0_cfg->tx_sample_advance     = 0;
+    openair0_cfg->tx_scheduling_advance = 8*openair0_cfg->samples_per_packet;
+    break;
+  case 15360000:
+    openair0_cfg->samples_per_packet    = 2048;
+    openair0_cfg->tx_sample_advance     = 0;
+    openair0_cfg->tx_scheduling_advance = 4*openair0_cfg->samples_per_packet;
+    break;
+  case 7680000:
+    openair0_cfg->samples_per_packet    = 1024;
+    openair0_cfg->tx_sample_advance     = 0;
+    openair0_cfg->tx_scheduling_advance = 4*openair0_cfg->samples_per_packet;
+    break;
+  case 1920000:
+    openair0_cfg->samples_per_packet    = 256;
+    openair0_cfg->tx_sample_advance     = 50;
+    openair0_cfg->tx_scheduling_advance = 8*openair0_cfg->samples_per_packet;
+    break;
+  default:
+    printf("Error: unknown sampling rate %f\n",openair0_cfg->sample_rate);
+    exit(-1);
+    break;
+  }
+
+  openair0_cfg->rx_gain_calib_table = calib_table_fx4;
+
   //  The number of buffers to use in the underlying data stream
   brf->num_buffers   = 128;
   // the size of the underlying stream buffers, in samples
-  brf->buffer_size   = (unsigned int) openair0_cfg[card].samples_per_packet;//*sizeof(int32_t); // buffer size = 4096 for sample_len of 1024
+  brf->buffer_size   = (unsigned int) openair0_cfg->samples_per_packet;//*sizeof(int32_t); // buffer size = 4096 for sample_len of 1024
   brf->num_transfers = 16;
   brf->rx_timeout_ms = 0;  
   brf->tx_timeout_ms = 0;
-  brf->sample_rate=(unsigned int)openair0_cfg[card].sample_rate;
+  brf->sample_rate=(unsigned int)openair0_cfg->sample_rate;
 
   memset(&brf->meta_rx, 0, sizeof(brf->meta_rx));
   memset(&brf->meta_tx, 0, sizeof(brf->meta_tx));
@@ -240,57 +891,60 @@ int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openai
   // RX  
   // Example of CLI output: RX Frequency: 2539999999Hz
   
-  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg[card].rx_freq[0])) != 0){
+  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg->rx_freq[0])) != 0){
     fprintf(stderr,"Failed to set RX frequency: %s\n",bladerf_strerror(status));
     brf_error(status);
   } else 
-    printf("[BRF] set RX frequency to %u\n",(unsigned int)openair0_cfg[card].rx_freq[0]);
+    printf("[BRF] set RX frequency to %u\n",(unsigned int)openair0_cfg->rx_freq[0]);
   
+
+
   unsigned int actual_value=0;
-  if ((status=bladerf_set_sample_rate(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg[card].sample_rate, &actual_value)) != 0){
+  if ((status=bladerf_set_sample_rate(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg->sample_rate, &actual_value)) != 0){
     fprintf(stderr,"Failed to set RX sample rate: %s\n", bladerf_strerror(status));
     brf_error(status);
   }else  
-    printf("[BRF] set RX sample rate to %u, %u\n", (unsigned int) openair0_cfg[card].sample_rate, actual_value);
+    printf("[BRF] set RX sample rate to %u, %u\n", (unsigned int) openair0_cfg->sample_rate, actual_value);
  
 
-  if ((status=bladerf_set_bandwidth(brf->dev, BLADERF_MODULE_RX, 2*(unsigned int) openair0_cfg[card].rx_bw, &actual_value)) != 0){
+  if ((status=bladerf_set_bandwidth(brf->dev, BLADERF_MODULE_RX, (unsigned int) openair0_cfg->rx_bw*2, &actual_value)) != 0){
     fprintf(stderr,"Failed to set RX bandwidth: %s\n", bladerf_strerror(status));
     brf_error(status);
   }else 
-    printf("[BRF] set RX bandwidth to %u, %u\n",2*(unsigned int)openair0_cfg[card].rx_bw, actual_value);
+    printf("[BRF] set RX bandwidth to %u, %u\n",(unsigned int)openair0_cfg->rx_bw*2, actual_value);
  
-  if ((status=bladerf_set_gain(brf->dev, BLADERF_MODULE_RX, (int) openair0_cfg[card].rx_gain[0])) != 0) {
+  set_rx_gain_offset(&openair0_cfg[0],0);
+  if ((status=bladerf_set_gain(brf->dev, BLADERF_MODULE_RX, (int) openair0_cfg->rx_gain[0]-openair0_cfg[0].rx_gain_offset[0])) != 0) {
     fprintf(stderr,"Failed to set RX gain: %s\n",bladerf_strerror(status));
     brf_error(status);
   } else 
-    printf("[BRF] set RX gain to %d\n",(int)openair0_cfg[card].rx_gain[0]);
+    printf("[BRF] set RX gain to %d (%d)\n",(int)(openair0_cfg->rx_gain[0]-openair0_cfg[0].rx_gain_offset[0]),(int)openair0_cfg[0].rx_gain_offset[0]);
 
   // TX
   
-  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_TX, (unsigned int) openair0_cfg[card].tx_freq[0])) != 0){
+  if ((status=bladerf_set_frequency(brf->dev, BLADERF_MODULE_TX, (unsigned int) openair0_cfg->tx_freq[0])) != 0){
     fprintf(stderr,"Failed to set TX frequency: %s\n",bladerf_strerror(status));
     brf_error(status);
   }else 
-    printf("[BRF] set TX Frequenct to %u\n", (unsigned int) openair0_cfg[card].tx_freq[0]);
+    printf("[BRF] set TX Frequency to %u\n", (unsigned int) openair0_cfg->tx_freq[0]);
 
-  if ((status=bladerf_set_sample_rate(brf->dev, BLADERF_MODULE_TX, (unsigned int) openair0_cfg[card].sample_rate, NULL)) != 0){
+  if ((status=bladerf_set_sample_rate(brf->dev, BLADERF_MODULE_TX, (unsigned int) openair0_cfg->sample_rate, NULL)) != 0){
     fprintf(stderr,"Failed to set TX sample rate: %s\n", bladerf_strerror(status));
     brf_error(status);
   }else 
-    printf("[BRF] set TX sampling rate to %u \n", (unsigned int) openair0_cfg[card].sample_rate);
+    printf("[BRF] set TX sampling rate to %u \n", (unsigned int) openair0_cfg->sample_rate);
 
-  if ((status=bladerf_set_bandwidth(brf->dev, BLADERF_MODULE_TX,2*(unsigned int)openair0_cfg[card].tx_bw, NULL)) != 0){
+  if ((status=bladerf_set_bandwidth(brf->dev, BLADERF_MODULE_TX,(unsigned int)openair0_cfg->tx_bw*2, NULL)) != 0){
     fprintf(stderr, "Failed to set TX bandwidth: %s\n", bladerf_strerror(status));
     brf_error(status);
   }else 
-    printf("[BRF] set TX bandwidth to %u \n", 2*(unsigned int) openair0_cfg[card].tx_bw);
+    printf("[BRF] set TX bandwidth to %u \n", (unsigned int) openair0_cfg->tx_bw*2);
 
-  if ((status=bladerf_set_gain(brf->dev, BLADERF_MODULE_TX, (int) openair0_cfg[card].tx_gain[0])) != 0) {
+  if ((status=bladerf_set_gain(brf->dev, BLADERF_MODULE_TX, (int) openair0_cfg->tx_gain[0])) != 0) {
     fprintf(stderr,"Failed to set TX gain: %s\n",bladerf_strerror(status));
     brf_error(status);
   }else 
-    printf("[BRF] set the TX gain to %d\n", (int)openair0_cfg[card].tx_gain[0]);
+    printf("[BRF] set the TX gain to %d\n", (int)openair0_cfg->tx_gain[0]);
   
 
  /* Configure the device's TX module for use with the sync interface.
@@ -341,7 +995,8 @@ int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openai
     printf("[BRF] RX module calibrated DC \n");
   
 
-  bladerf_log_set_verbosity(get_brf_log_level(openair0_cfg[card].log_level));
+
+  bladerf_log_set_verbosity(get_brf_log_level(openair0_cfg->log_level));
   
   printf("BLADERF: Initializing openair0_device\n");
   device->priv           = brf; 
@@ -355,7 +1010,11 @@ int openair0_dev_init_bladerf(openair0_device *device, openair0_config_t *openai
   device->trx_stop_func        = trx_brf_stop;
   device->trx_set_freq_func    = trx_brf_set_freq;
   device->trx_set_gains_func   = trx_brf_set_gains;
-  memcpy((void*)&device->openair0_cfg,(void*)openair0_cfg,sizeof(openair0_config_t));
+  device->openair0_cfg = openair0_cfg;
+
+  calibrate_rf(device);
+
+  //  memcpy((void*)&device->openair0_cfg,(void*)&openair0_cfg[0],sizeof(openair0_config_t));
 
   return 0;
 }
diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c
index 8b91a74b4923ec5cc7d3f30c6dc87875a7c6d228..b7700ec06fc04c3225c705739cca1320d2160e75 100644
--- a/targets/ARCH/COMMON/common_lib.c
+++ b/targets/ARCH/COMMON/common_lib.c
@@ -52,7 +52,7 @@ int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cf
   openair0_dev_init_exmimo(device, openair0_cfg);
   printf("openair0_dev_init_exmimo...\n");
 #elif OAI_USRP
-  device->type=USRP_IF;
+  device->type=USRP_B200_IF;
   openair0_dev_init_usrp(device, openair0_cfg);
   printf("openair0_dev_init_usrp ...\n");
 #elif OAI_BLADERF  
diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index 8cc7926d4571158f210eb976dd3df102f4d2a510..a3fe9e9dbd33973354db652203a8d9e4c6461164 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -60,6 +60,11 @@ typedef enum {
   max_gain=0,med_gain,byp_gain
 } rx_gain_t;
 
+typedef enum {
+  duplex_mode_TDD=1,duplex_mode_FDD=0
+} duplex_mode_t;
+
+
 /** @addtogroup _PHY_RF_INTERFACE_
  * @{
  */
@@ -76,6 +81,8 @@ typedef struct {
   int Mod_id;
   // device log level
   int log_level;
+  //! duplexing mode
+  duplex_mode_t duplex_mode;
   //! number of downlink resource blocks
   int num_rb_dl;
   //! number of samples per frame 
@@ -84,10 +91,10 @@ typedef struct {
   double sample_rate;
   //! number of samples per RX/TX packet (USRP + Ethernet)
   int samples_per_packet;
-  // delay in sending samples (write)  due to hardware access, softmodem processing and fronthaul delay if exist
-  int tx_delay;
-  //! adjust the position of the samples after delay when sending   
-  unsigned int	tx_forward_nsamps;
+  //! delay in sending samples (write)  due to hardware access, softmodem processing and fronthaul delay if exist
+  int tx_scheduling_advance;
+  //! offset in samples between TX and RX paths
+  int tx_sample_advance;
   //! number of RX channels (=RX antennas)
   int rx_num_channels;
   //! number of TX channels (=TX antennas)
@@ -98,6 +105,10 @@ typedef struct {
   //! \brief Center frequency in Hz for TX.
   //! index: [0..rx_num_channels[ !!! see lte-ue.c:427 FIXME iterates over rx_num_channels
   double tx_freq[4];
+
+  //! \brief Pointer to Calibration table for RX gains
+  rx_gain_calib_table_t *rx_gain_calib_table;
+
   //! mode for rxgain (ExpressMIMO2) 
   rx_gain_t rxg_mode[4];
   //! \brief Gain for RX in dB.
@@ -147,8 +158,10 @@ typedef enum {
   ETH_IF,
   /*!\brief device is ExpressMIMO */
   EXMIMO_IF,
-  /*!\brief device is USRP*/
-  USRP_IF,
+  /*!\brief device is USRP B200/B210*/
+  USRP_B200_IF,
+  /*!\brief device is USRP X300/X310*/
+  USRP_X300_IF,
   /*!\brief device is BLADE RF*/
   BLADERF_IF,
   /*!\brief device is NONE*/
@@ -180,7 +193,7 @@ struct openair0_device_t {
   func_type_t func_type;
 
   /* RF frontend parameters set by application */
-  openair0_config_t openair0_cfg;
+  openair0_config_t *openair0_cfg;
 
   /* Can be used by driver to hold internal structure*/
   void *priv;
diff --git a/targets/ARCH/EXMIMO/DEFS/pcie_interface.h b/targets/ARCH/EXMIMO/DEFS/pcie_interface.h
index 925787cabfbb955e1cb20d17b0d73ecb0c5a5694..713480b40bbdcadcb042af1c14c9c3c199a0555d 100644
--- a/targets/ARCH/EXMIMO/DEFS/pcie_interface.h
+++ b/targets/ARCH/EXMIMO/DEFS/pcie_interface.h
@@ -316,7 +316,9 @@ typedef struct {
 //
 //    In TDD mode, there are two ways to control the RX/TX switch:
 //    1. using the LSB from the TX data (TXRXSWITCH_LSB)
+//       only the LSB from RF chain set in the ACTIVE_RF register controls the switch on all the chains
 //    2. using FPGA logic, based on switch_offset[0..3]
+//       this mode is not tested well and should be used with care
 #define DUPLEXMODE_MASK   (1<<0)
 #define DUPLEXMODE_FDD     0
 #define DUPLEXMODE_TDD    (1<<0)
@@ -330,6 +332,11 @@ typedef struct {
 #define SWITCHSTATE_1     (1<<3)
 #define TEST_ADACLOOP_MASK  (1<<4)
 #define TEST_ADACLOOP_EN    (1<<4)
+#define RF_ACTIVE_MASK      (15<<5)
+#define RF_ACTIVE_1         (1<<5)
+#define RF_ACTIVE_2         (2<<5)
+#define RF_ACTIVE_3         (4<<5)
+#define RF_ACTIVE_4         (8<<5)
 
 typedef enum {
   BW5,
diff --git a/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c b/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
index df9900d3bc98720090143b73c2989a30ad0868ea..238c94bd7e97a6ce6d6330f260ca99c38e83e5b5 100644
--- a/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
+++ b/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
@@ -296,6 +296,7 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
   int ant, card;
   int resampling_factor=2;
   int rx_filter=RXLPF25, tx_filter=TXLPF25;
+  int ACTIVE_RF=0;
 
   exmimo_config_t         *p_exmimo_config;
   exmimo_id_t             *p_exmimo_id;
@@ -315,8 +316,6 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
     else
       p_exmimo_config->framing.eNB_flag   = !UE_flag;
 
-    p_exmimo_config->framing.tdd_config = DUPLEXMODE_FDD + TXRXSWITCH_LSB;
-
     if (openair0_num_detected_cards==1)
       p_exmimo_config->framing.multicard_syncmode=SYNCMODE_FREE;
     else if (card==0)
@@ -355,6 +354,7 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
 
     for (ant=0; ant<4; ant++) {
       if (openair0_cfg[card].rx_freq[ant] || openair0_cfg[card].tx_freq[ant]) {
+	ACTIVE_RF += (1<<ant)<<5;
         p_exmimo_config->rf.rf_mode[ant] = RF_MODE_BASE;
         p_exmimo_config->rf.do_autocal[ant] = 1;//openair0_cfg[card].autocal[ant];
 	printf("card %d, antenna %d, autocal %d\n",card,ant,openair0_cfg[card].autocal[ant]);
@@ -408,6 +408,15 @@ int openair0_config(openair0_config_t *openair0_cfg, int UE_flag)
       }
     }
 
+    if (openair0_cfg[card].duplex_mode==duplex_mode_FDD) {
+      p_exmimo_config->framing.tdd_config = DUPLEXMODE_FDD;
+      printf("!!!!!setting FDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config);
+    } 
+    else {
+      p_exmimo_config->framing.tdd_config = DUPLEXMODE_TDD + TXRXSWITCH_LSB + ACTIVE_RF;
+      printf("!!!!!setting TDD (tdd_config=%d)\n",p_exmimo_config->framing.tdd_config);
+    }
+
     ret = ioctl(openair0_fd, openair_DUMP_CONFIG, card);
 
     if (ret!=0)
diff --git a/targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10 b/targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10
index 2889dfa80f8f6a9128af6e9ca6dd1a309c9e1b39..d79e46df76881a3d2bf476b82f988b0a9bfd4839 100755
Binary files a/targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10 and b/targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/sdr_expressmimo2_v10 differ
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index e57f55720b14fbb7605fc41e6ab091a61cc7755d..b12f7397f01160dafd9b3fbff8c43410b381f2e4 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -171,31 +171,45 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
 #endif
 
 
-  
-  if (cc>1) {
+  if (device->type == USRP_B200_IF) {  
+    if (cc>1) {
     // receive multiple channels (e.g. RF A and RF B)
-    std::vector<void *> buff_ptrs;
-    for (int i=0;i<cc;i++) buff_ptrs.push_back(buff_tmp[i]);
-    samples_received = s->rx_stream->recv(buff_ptrs, nsamps, s->rx_md);
-  } else {
+      std::vector<void *> buff_ptrs;
+ 
+      for (int i=0;i<cc;i++) buff_ptrs.push_back(buff_tmp[i]);
+      samples_received = s->rx_stream->recv(buff_ptrs, nsamps, s->rx_md);
+    } else {
     // receive a single channel (e.g. from connector RF A)
-    samples_received = s->rx_stream->recv(buff_tmp[0], nsamps, s->rx_md);
-  }
-
+      samples_received = s->rx_stream->recv(buff_tmp[0], nsamps, s->rx_md);
+    }
+   
   // bring RX data into 12 LSBs for softmodem RX
-  for (int i=0;i<cc;i++) {
-    for (int j=0; j<nsamps2; j++) {      
+    for (int i=0;i<cc;i++) {
+      for (int j=0; j<nsamps2; j++) {      
 #if defined(__x86_64__) || defined(__i386__)
 #ifdef __AVX2__
-      ((__m256i *)buff[i])[j] = _mm256_srai_epi16(buff_tmp[i][j],4);
+        ((__m256i *)buff[i])[j] = _mm256_srai_epi16(buff_tmp[i][j],4);
 #else
-      ((__m128i *)buff[i])[j] = _mm_srai_epi16(buff_tmp[i][j],4);
+        ((__m128i *)buff[i])[j] = _mm_srai_epi16(buff_tmp[i][j],4);
 #endif
 #elif defined(__arm__)
-      ((int16x8_t*)buff[i])[j] = vshrq_n_s16(buff_tmp[i][j],4);
+        ((int16x8_t*)buff[i])[j] = vshrq_n_s16(buff_tmp[i][j],4);
 #endif
+      }
     }
+  } else if (device->type == USRP_X300_IF) {
+    if (cc>1) {
+    // receive multiple channels (e.g. RF A and RF B)
+      std::vector<void *> buff_ptrs;
+ 
+      for (int i=0;i<cc;i++) buff_ptrs.push_back(buff[i]);
+      samples_received = s->rx_stream->recv(buff_ptrs, nsamps, s->rx_md);
+    } else {
+    // receive a single channel (e.g. from connector RF A)
+      samples_received = s->rx_stream->recv(buff[0], nsamps, s->rx_md);
     }
+  }
+
   if (samples_received < nsamps) {
     printf("[recv] received %d samples out of %d\n",samples_received,nsamps);
     
@@ -279,7 +293,7 @@ int trx_usrp_set_gains(openair0_device* device,
     exit(-1);
   }
   s->usrp->set_rx_gain(openair0_cfg[0].rx_gain[0]-openair0_cfg[0].rx_gain_offset[0]);
-  printf("Setting USRP RX gain to %f\n", openair0_cfg[0].rx_gain[0]-openair0_cfg[0].rx_gain_offset[0]);
+  printf("Setting USRP RX gain to %f (rx_gain %f,gain_range.stop() %f)\n", openair0_cfg[0].rx_gain[0]-openair0_cfg[0].rx_gain_offset[0],openair0_cfg[0].rx_gain[0],gain_range.stop());
 
   return(0);
 }
@@ -289,7 +303,7 @@ int trx_usrp_stop(int card) {
 }
 
 
-rx_gain_calib_table_t calib_table[] = {
+rx_gain_calib_table_t calib_table_b210[] = {
   {3500000000.0,46.0},
   {2660000000.0,53.0},
   {2300000000.0,54.0},
@@ -297,19 +311,29 @@ rx_gain_calib_table_t calib_table[] = {
   {816000000.0,62.0},
   {-1,0}};
 
+rx_gain_calib_table_t calib_table_x310[] = {
+  {3500000000.0,77.0},
+  {2660000000.0,80.0},
+  {2300000000.0,81.0},
+  {1880000000.0,82.0},
+  {816000000.0,85.0},
+  {-1,0}};
+
 void set_rx_gain_offset(openair0_config_t *openair0_cfg, int chain_index) {
 
   int i=0;
   // loop through calibration table to find best adjustment factor for RX frequency
   double min_diff = 6e9,diff;
- 
-  while (calib_table[i].freq>0) {
-    diff = fabs(openair0_cfg->rx_freq[chain_index] - calib_table[i].freq);
+  
+  while (openair0_cfg->rx_gain_calib_table[i].freq>0) {
+    diff = fabs(openair0_cfg->rx_freq[chain_index] - openair0_cfg->rx_gain_calib_table[i].freq);
     printf("cal %d: freq %f, offset %f, diff %f\n",
-	   i,calib_table[i].freq,calib_table[i].offset,diff);
+	   i,
+	   openair0_cfg->rx_gain_calib_table[i].freq,
+	   openair0_cfg->rx_gain_calib_table[i].offset,diff);
     if (min_diff > diff) {
       min_diff = diff;
-      openair0_cfg->rx_gain_offset[chain_index] = calib_table[i].offset;
+      openair0_cfg->rx_gain_offset[chain_index] = openair0_cfg->rx_gain_calib_table[i].offset;
     }
     i++;
   }
@@ -372,9 +396,43 @@ int openair0_dev_init_usrp(openair0_device* device, openair0_config_t *openair0_
     // lock mboard clocks
     s->usrp->set_clock_source("internal");
     
+    //Setting device type to USRP X300/X310 
+    device->type=USRP_X300_IF;
+
     // this is not working yet, master clock has to be set via constructor
     // set master clock rate and sample rate for tx & rx for streaming
     //s->usrp->set_master_clock_rate(usrp_master_clock);
+
+    openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
+
+    switch ((int)openair0_cfg[0].sample_rate) {
+    case 30720000:
+            // from usrp_time_offset
+      openair0_cfg[0].samples_per_packet    = 2048;
+      openair0_cfg[0].tx_sample_advance     = 15;
+      openair0_cfg[0].tx_scheduling_advance = 8*openair0_cfg[0].samples_per_packet;
+      break;
+    case 15360000:
+      openair0_cfg[0].samples_per_packet    = 2048;
+      openair0_cfg[0].tx_sample_advance     = 45;
+      openair0_cfg[0].tx_scheduling_advance = 5*openair0_cfg[0].samples_per_packet;
+      break;
+    case 7680000:
+      openair0_cfg[0].samples_per_packet    = 1024;
+      openair0_cfg[0].tx_sample_advance     = 50;
+      openair0_cfg[0].tx_scheduling_advance = 5*openair0_cfg[0].samples_per_packet;
+      break;
+    case 1920000:
+      openair0_cfg[0].samples_per_packet    = 256;
+      openair0_cfg[0].tx_sample_advance     = 50;
+      openair0_cfg[0].tx_scheduling_advance = 8*openair0_cfg[0].samples_per_packet;
+      break;
+    default:
+      printf("Error: unknown sampling rate %f\n",openair0_cfg[0].sample_rate);
+      exit(-1);
+      break;
+    }
+
   } else {
     printf("Found USRP B200");
     s->usrp = uhd::usrp::multi_usrp::make(args);
@@ -386,16 +444,46 @@ int openair0_dev_init_usrp(openair0_device* device, openair0_config_t *openair0_
 //    // lock mboard clocks
 //    s->usrp->set_clock_source("internal");
     // set master clock rate and sample rate for tx & rx for streaming
-    s->usrp->set_master_clock_rate(30.72e6);
-  }
 
+    device->type = USRP_B200_IF;
+    s->usrp->set_master_clock_rate(30.72e6);
 
+    openair0_cfg[0].rx_gain_calib_table = calib_table_b210;
+
+    switch ((int)openair0_cfg[0].sample_rate) {
+    case 30720000:
+            // from usrp_time_offset
+      openair0_cfg[0].samples_per_packet    = 2048;
+      openair0_cfg[0].tx_sample_advance     = 115;
+      openair0_cfg[0].tx_scheduling_advance = 11*openair0_cfg[0].samples_per_packet;
+      break;
+    case 15360000:
+      openair0_cfg[0].samples_per_packet    = 2048;
+      openair0_cfg[0].tx_sample_advance     = 113;
+      openair0_cfg[0].tx_scheduling_advance = 5*openair0_cfg[0].samples_per_packet;
+      break;
+    case 7680000:
+      openair0_cfg[0].samples_per_packet    = 1024;
+      openair0_cfg[0].tx_sample_advance     = 70;//103;
+      openair0_cfg[0].tx_scheduling_advance = 5*openair0_cfg[0].samples_per_packet;
+      break;
+    case 1920000:
+      openair0_cfg[0].samples_per_packet    = 256;
+      openair0_cfg[0].tx_sample_advance     = 40;
+      openair0_cfg[0].tx_scheduling_advance = 8*openair0_cfg[0].samples_per_packet;
+      break;
+    default:
+      printf("Error: unknown sampling rate %f\n",openair0_cfg[0].sample_rate);
+      exit(-1);
+      break;
+    }
+  }
 
   for(i=0;i<s->usrp->get_rx_num_channels();i++) {
     if (i<openair0_cfg[0].rx_num_channels) {
       s->usrp->set_rx_rate(openair0_cfg[0].sample_rate,i);
       s->usrp->set_rx_bandwidth(openair0_cfg[0].rx_bw,i);
-      printf("Setting rx freq/gain on channel %lu/%lu\n",i,s->usrp->get_rx_num_channels());
+      printf("Setting rx freq/gain on channel %lu/%lu : BW %f (readback %f)\n",i,s->usrp->get_rx_num_channels(),openair0_cfg[0].rx_bw/1e6,s->usrp->get_rx_bandwidth(i)/1e6);
       s->usrp->set_rx_freq(openair0_cfg[0].rx_freq[i],i);
       set_rx_gain_offset(&openair0_cfg[0],i);
 
@@ -416,7 +504,7 @@ int openair0_dev_init_usrp(openair0_device* device, openair0_config_t *openair0_
     if (i<openair0_cfg[0].tx_num_channels) {
       s->usrp->set_tx_rate(openair0_cfg[0].sample_rate,i);
       s->usrp->set_tx_bandwidth(openair0_cfg[0].tx_bw,i);
-      printf("Setting tx freq/gain on channel %lu/%lu\n",i,s->usrp->get_tx_num_channels());
+      printf("Setting tx freq/gain on channel %lu/%lu: BW %f (readback %f)\n",i,s->usrp->get_tx_num_channels(),openair0_cfg[0].tx_bw/1e6,s->usrp->get_tx_bandwidth(i)/1e6);
       s->usrp->set_tx_freq(openair0_cfg[0].tx_freq[i],i);
       s->usrp->set_tx_gain(openair0_cfg[0].tx_gain[i],i);
     }
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
index 0071b7d002ab33c880b125fdfa8791b35a927339..9444a6f95e8c610b95a87dd6ce3ecc52765ac811 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.exmimo2.conf
@@ -17,7 +17,7 @@ eNBs =
 
     mobile_country_code =  "208";
 
-    mobile_network_code =  "92";
+    mobile_network_code =  "93";
 
        ////////// Physical parameters:
 
@@ -131,7 +131,7 @@ eNBs =
     };
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.13.11";
+    mme_ip_address      = ( { ipv4       = "192.168.12.70";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -141,10 +141,10 @@ eNBs =
     NETWORK_INTERFACES :
     {
       ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-      ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
+      ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.212/24";
 
       ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-      ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+      ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.212/24";
       ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
new file mode 100644
index 0000000000000000000000000000000000000000..210c7ea74084fbf489956c1a166a742cf3abffdf
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpx310.conf
@@ -0,0 +1,169 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        frame_type					      = "FDD";
+        tdd_config 					      = 3;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 7;
+        downlink_frequency      			      = 2660000000L;
+        uplink_frequency_offset 			      = -120000000;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 100;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 32;
+        rx_gain                                            = 116;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 32;
+        pdsch_referenceSignalPower 			      = -23;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -90;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -108;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "192.168.12.26";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf
new file mode 100644
index 0000000000000000000000000000000000000000..d4b88383e249fac091e2e8bbb6ecfe779398e191
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.usrpx310.epc.remote.conf
@@ -0,0 +1,169 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        frame_type					      = "FDD";
+        tdd_config 					      = 3;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 7;
+        downlink_frequency      			      = 2660000000L;
+        uplink_frequency_offset 			      = -120000000;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 25;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 32;
+        rx_gain                                            = 116;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 32;
+        pdsch_referenceSignalPower 			      = -16;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -90;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -108;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "192.168.12.26";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.bladerfx40.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.bladerfx40.conf
new file mode 100644
index 0000000000000000000000000000000000000000..5f7ac3d65f5c066cdf33f8661296ccddd5770f7f
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.bladerfx40.conf
@@ -0,0 +1,171 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+    
+    cell_type =  "CELL_MACRO_ENB";
+    
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+    
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+    
+    mobile_country_code =  "208";
+    
+    mobile_network_code =  "92";
+    
+       ////////// Physical parameters:
+  
+    component_carriers = (
+    		       	 {
+  			   frame_type					      = "FDD";	
+                           tdd_config 					      = 3;
+                           tdd_config_s            			      = 0;
+ 			   prefix_type             			      = "NORMAL";
+  			   eutra_band              			      = 7;
+                           downlink_frequency      			      = 2680000000L;
+                           uplink_frequency_offset 			      = -120000000;
+  			   Nid_cell					      = 0;
+                           N_RB_DL                 			      = 50;
+                           Nid_cell_mbsfn          			      = 0;
+                           nb_antennas_tx          			      = 1;
+                           nb_antennas_rx          			      = 1; 
+			   tx_gain                                            = 60;
+			   rx_gain                                            = 60;
+                           prach_root              			      = 0;
+                           prach_config_index      			      = 0;
+                           prach_high_speed        			      = "DISABLE";
+  	                   prach_zero_correlation  			      = 1;
+                           prach_freq_offset       			      = 2;
+			   pucch_delta_shift       			      = 1;
+                           pucch_nRB_CQI           			      = 1;
+                           pucch_nCS_AN            			      = 0;
+                           pucch_n1_AN             			      = 32;
+                           pdsch_referenceSignalPower 			      = -26;
+                           pdsch_p_b                  			      = 0;
+                           pusch_n_SB                 			      = 1; 
+                           pusch_enable64QAM          			      = "DISABLE";
+			   pusch_hoppingMode                                  = "interSubFrame";
+			   pusch_hoppingOffset                                = 0;
+     	                   pusch_groupHoppingEnabled  			      = "ENABLE";
+	                   pusch_groupAssignment      			      = 0;
+	                   pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+	                   pusch_nDMRS1                                       = 1;
+	                   phich_duration                                     = "NORMAL";
+	                   phich_resource                                     = "ONESIXTH";
+	                   srs_enable                                         = "DISABLE";
+	               /*  srs_BandwidthConfig                                =;
+	                   srs_SubframeConfig                                 =;
+	                   srs_ackNackST                                      =;
+	                   srs_MaxUpPts                                       =;*/  
+
+	                   pusch_p0_Nominal                                   = -90; 
+	                   pusch_alpha                                        = "AL1";
+	                   pucch_p0_Nominal                                   = -108;
+	                   msg3_delta_Preamble                                = 6;
+	                   pucch_deltaF_Format1                               = "deltaF2";
+	                   pucch_deltaF_Format1b                              = "deltaF3";
+	                   pucch_deltaF_Format2                               = "deltaF0";
+	                   pucch_deltaF_Format2a                              = "deltaF0";
+  	                   pucch_deltaF_Format2b		    	      = "deltaF0";
+	
+                           rach_numberOfRA_Preambles                          = 64;
+                           rach_preamblesGroupAConfig                         = "DISABLE";
+/*
+                           rach_sizeOfRA_PreamblesGroupA                      = ;
+                           rach_messageSizeGroupA                             = ;
+                           rach_messagePowerOffsetGroupB                      = ; 
+*/
+                           rach_powerRampingStep                              = 4;
+	                   rach_preambleInitialReceivedTargetPower            = -108;
+                           rach_preambleTransMax                              = 10;
+	                   rach_raResponseWindowSize                          = 10;
+	                   rach_macContentionResolutionTimer                  = 48;
+	                   rach_maxHARQ_Msg3Tx                                = 4;
+
+			   pcch_default_PagingCycle                           = 128;
+			   pcch_nB                                            = "oneT";
+			   bcch_modificationPeriodCoeff			      = 2;
+			   ue_TimersAndConstants_t300			      = 1000;
+			   ue_TimersAndConstants_t301			      = 1000;
+			   ue_TimersAndConstants_t310			      = 1000;
+			   ue_TimersAndConstants_t311			      = 10000;
+			   ue_TimersAndConstants_n310			      = 20;
+			   ue_TimersAndConstants_n311			      = 1;
+
+			 }
+			 );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] 
+        timer_poll_retransmit    = 80;
+        
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+        
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+        
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+        
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+        
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+    
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+        
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "192.168.13.11";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES : 
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+    
+    log_config : 
+    {
+	global_log_level                      ="info"; 
+    	global_log_verbosity                  ="medium";
+	hw_log_level                          ="info"; 
+    	hw_log_verbosity                      ="medium";
+	phy_log_level                         ="info"; 
+    	phy_log_verbosity                     ="medium";
+	mac_log_level                         ="info"; 
+    	mac_log_verbosity                     ="high";
+	rlc_log_level                         ="info"; 
+    	rlc_log_verbosity                     ="medium";
+	pdcp_log_level                        ="info"; 
+    	pdcp_log_verbosity                    ="medium";
+	rrc_log_level                         ="info"; 
+    	rrc_log_verbosity                     ="medium";
+   };	
+   
+  }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf
new file mode 100644
index 0000000000000000000000000000000000000000..4c760e19c2ca4f362c55278a9791d38ab18786aa
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpx310.conf
@@ -0,0 +1,169 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        frame_type					      = "FDD";
+        tdd_config 					      = 3;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 7;
+        downlink_frequency      			      = 2660000000L;
+        uplink_frequency_offset 			      = -120000000;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 50;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 32;
+        rx_gain                                            = 120;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 32;
+        pdsch_referenceSignalPower 			      = -19;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -90;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -108;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "192.168.12.26";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf
index bdbb46a98b40fc7e3c272b116b3f1514fab20cec..5c53803c4dd4d9fe9fd822df0b98f6b7c104e44e 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf
@@ -17,7 +17,7 @@ eNBs =
     
     mobile_country_code =  "208";
     
-    mobile_network_code =  "92";
+    mobile_network_code =  "93";
     
        ////////// Physical parameters:
   
@@ -35,8 +35,8 @@ eNBs =
                            Nid_cell_mbsfn          			      = 0;
                            nb_antennas_tx          			      = 1;
                            nb_antennas_rx          			      = 1; 
-			   tx_gain                                            = 20;
-			   rx_gain                                            = 20;
+			   tx_gain                                            = 60;
+			   rx_gain                                            = 120;
                            prach_root              			      = 0;
                            prach_config_index      			      = 0;
                            prach_high_speed        			      = "DISABLE";
@@ -46,7 +46,7 @@ eNBs =
                            pucch_nRB_CQI           			      = 1;
                            pucch_nCS_AN            			      = 0;
                            pucch_n1_AN             			      = 32;
-                           pdsch_referenceSignalPower 			      = -26;
+                           pdsch_referenceSignalPower 			      = -29;
                            pdsch_p_b                  			      = 0;
                            pusch_n_SB                 			      = 1; 
                            pusch_enable64QAM          			      = "DISABLE";
@@ -132,7 +132,7 @@ eNBs =
     };
         
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.13.11";
+    mme_ip_address      = ( { ipv4       = "192.168.12.11";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -142,10 +142,10 @@ eNBs =
     NETWORK_INTERFACES : 
     {
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.212/24";
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.212/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
     
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
index 212f341580f6acbab2cb4fc8994e38beb4f6b47e..3ce32398f7ac5d6fe42720447565c0fb6326213a 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf
@@ -17,7 +17,7 @@ eNBs =
 
     mobile_country_code =  "208";
 
-    mobile_network_code =  "92";
+    mobile_network_code =  "93";
 
        ////////// Physical parameters:
 
@@ -31,7 +31,7 @@ eNBs =
         downlink_frequency      			      = 2680000000L;
         uplink_frequency_offset 			      = -120000000;
         Nid_cell					      = 0;
-        N_RB_DL                 			      = 50;
+        N_RB_DL                 			      = 25;
         Nid_cell_mbsfn          			      = 0;
         nb_antennas_tx          			      = 1;
         nb_antennas_rx          			      = 1;
@@ -131,7 +131,7 @@ eNBs =
     };
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "10.0.1.1";
+    mme_ip_address      = ( { ipv4       = "192.168.12.171";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -140,11 +140,11 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth3";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "10.0.1.229/24";
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth2";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.80/24";
 
-        ENB_INTERFACE_NAME_FOR_S1U               = "eth3";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "10.0.1.229/24";
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth2";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.80/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
index 2f11e42ba9d817b5e5c11c1f6ed91bd9475b8e0d..d8ea58910a66cfb45eeb394b6c2556295b32bb40 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf
@@ -36,7 +36,7 @@ eNBs =
       nb_antennas_tx          			      = 1;
       nb_antennas_rx          			      = 1;
       tx_gain                                            = 90;
-      rx_gain                                            = 120;
+      rx_gain                                            = 132;
       prach_root              			      = 0;
       prach_config_index      			      = 0;
       prach_high_speed        			      = "DISABLE";
@@ -143,10 +143,10 @@ eNBs =
     NETWORK_INTERFACES :
     {
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.216/24";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.213/24";
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.216/24";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.213/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf
index e864f47edb1663570633f9daf064346e42dd289b..6470b310f0bf25c58d4109709e52e39b340f842f 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf
@@ -36,7 +36,7 @@ eNBs =
         nb_antennas_tx          			      = 1;
         nb_antennas_rx          			      = 1;
         tx_gain                                = 90;
-        rx_gain                                = 120;
+        rx_gain                                = 132;
         prach_root              			      = 0;
         prach_config_index      			      = 0;
         prach_high_speed        			      = "DISABLE";
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
index 21303ebc71eb0d5e176ecf952dbe90a99f07185d..4722040b07638f68bbdbcf2905499ffa32d499ea 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.remote.conf
@@ -16,7 +16,7 @@ eNBs =
     tracking_area_code  =  "1";
 
     mobile_country_code =  "208";
-    mobile_network_code =  "95";
+    mobile_network_code =  "92";
 
        ////////// Physical parameters:
 
@@ -35,7 +35,7 @@ eNBs =
         nb_antennas_tx          			      = 1;
         nb_antennas_rx          			      = 1;
         tx_gain                                            = 90;
-        rx_gain                                            = 120;
+        rx_gain                                            = 132;
         prach_root              			      = 0;
         prach_config_index      			      = 0;
         prach_high_speed        			      = "DISABLE";
@@ -130,12 +130,10 @@ eNBs =
     };
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.12.62";
-                              ipv6       = "192:168:30::17";
-                              active     = "yes";
-                              preference = "ipv4";
-                            }
-                          );
+    mme_ip_address      = ( {ipv4 = "192.168.12.26";
+                              ipv6="192:168:30::17";
+                              active="yes";
+                              preference="ipv4";});
 
     NETWORK_INTERFACES :
     {
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf
new file mode 100644
index 0000000000000000000000000000000000000000..d4b88383e249fac091e2e8bbb6ecfe779398e191
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf
@@ -0,0 +1,169 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB_Eurecom_LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code  =  "1";
+
+    mobile_country_code =  "208";
+    mobile_network_code =  "92";
+
+       ////////// Physical parameters:
+
+    component_carriers = (
+      {
+        frame_type					      = "FDD";
+        tdd_config 					      = 3;
+        tdd_config_s            			      = 0;
+        prefix_type             			      = "NORMAL";
+        eutra_band              			      = 7;
+        downlink_frequency      			      = 2660000000L;
+        uplink_frequency_offset 			      = -120000000;
+        Nid_cell					      = 0;
+        N_RB_DL                 			      = 25;
+        Nid_cell_mbsfn          			      = 0;
+        nb_antennas_tx          			      = 1;
+        nb_antennas_rx          			      = 1;
+        tx_gain                                            = 32;
+        rx_gain                                            = 116;
+        prach_root              			      = 0;
+        prach_config_index      			      = 0;
+        prach_high_speed        			      = "DISABLE";
+        prach_zero_correlation  			      = 1;
+        prach_freq_offset       			      = 2;
+        pucch_delta_shift       			      = 1;
+        pucch_nRB_CQI           			      = 1;
+        pucch_nCS_AN            			      = 0;
+        pucch_n1_AN             			      = 32;
+        pdsch_referenceSignalPower 			      = -16;
+        pdsch_p_b                  			      = 0;
+        pusch_n_SB                 			      = 1;
+        pusch_enable64QAM          			      = "DISABLE";
+        pusch_hoppingMode                                  = "interSubFrame";
+        pusch_hoppingOffset                                = 0;
+        pusch_groupHoppingEnabled  			      = "ENABLE";
+        pusch_groupAssignment      			      = 0;
+        pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+        pusch_nDMRS1                                       = 1;
+        phich_duration                                     = "NORMAL";
+        phich_resource                                     = "ONESIXTH";
+        srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+        srs_SubframeConfig                                 =;
+        srs_ackNackST                                      =;
+        srs_MaxUpPts                                       =;*/
+
+        pusch_p0_Nominal                                   = -90;
+        pusch_alpha                                        = "AL1";
+        pucch_p0_Nominal                                   = -108;
+        msg3_delta_Preamble                                = 6;
+        pucch_deltaF_Format1                               = "deltaF2";
+        pucch_deltaF_Format1b                              = "deltaF3";
+        pucch_deltaF_Format2                               = "deltaF0";
+        pucch_deltaF_Format2a                              = "deltaF0";
+        pucch_deltaF_Format2b		    	      = "deltaF0";
+
+        rach_numberOfRA_Preambles                          = 64;
+        rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+        rach_sizeOfRA_PreamblesGroupA                      = ;
+        rach_messageSizeGroupA                             = ;
+        rach_messagePowerOffsetGroupB                      = ;
+      */
+        rach_powerRampingStep                              = 4;
+        rach_preambleInitialReceivedTargetPower            = -108;
+        rach_preambleTransMax                              = 10;
+        rach_raResponseWindowSize                          = 10;
+        rach_macContentionResolutionTimer                  = 48;
+        rach_maxHARQ_Msg3Tx                                = 4;
+
+        pcch_default_PagingCycle                           = 128;
+        pcch_nB                                            = "oneT";
+        bcch_modificationPeriodCoeff			      = 2;
+        ue_TimersAndConstants_t300			      = 1000;
+        ue_TimersAndConstants_t301			      = 1000;
+        ue_TimersAndConstants_t310			      = 1000;
+        ue_TimersAndConstants_t311			      = 10000;
+        ue_TimersAndConstants_n310			      = 20;
+        ue_TimersAndConstants_n311			      = 1;
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "192.168.12.26";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.111/24";
+
+        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.111/24";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+    };
+
+    log_config :
+    {
+      global_log_level                      ="debug";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
+
+  }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
index 57a43fb4146d320c25580c96429639132c9a59e4..6e3357e49b5ee8cef961837ffeefbea21e3a29da 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
@@ -36,7 +36,7 @@ eNBs =
                            nb_antennas_tx          			      = 2;
                            nb_antennas_rx          			      = 2; 
 			   tx_gain                                            = 90;
-			   rx_gain                                            = 115;
+			   rx_gain                                            = 132;
                            prach_root              			      = 0;
                            prach_config_index      			      = 0;
                            prach_high_speed        			      = "DISABLE";
@@ -132,7 +132,7 @@ eNBs =
     };
     
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.13.11";
+    mme_ip_address      = ( { ipv4       = "192.168.12.11";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -142,10 +142,10 @@ eNBs =
     NETWORK_INTERFACES : 
     {
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.213/24";
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.213/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
     
diff --git a/targets/RT/USER/eNB_transport_IQ.c b/targets/RT/USER/eNB_transport_IQ.c
index 07533ff59cfd66b7ee3755797e5bd99338f31bb3..af3873ef76cfd4b940988333c93f4c9d586f5fb7 100644
--- a/targets/RT/USER/eNB_transport_IQ.c
+++ b/targets/RT/USER/eNB_transport_IQ.c
@@ -172,7 +172,7 @@ void config_BBU_mod( rrh_module_t *mod_enb, uint8_t RT_flag, uint8_t NRT_flag) {
 	mod_enb->devs->openair0_cfg.tx_delay = 8;
       }
     }
-    else if (mod_enb->devs->type == USRP_IF) {
+    else if ((mod_enb->devs->type == USRP_B200_IF )||(mod_enb->devs->type == USRP_X300_IF )) {
       if ( mod_enb->devs->openair0_cfg.num_rb_dl == 100 ) {
 	mod_enb->devs->openair0_cfg.samples_per_packet = 2048;
 	mod_enb->devs->openair0_cfg.tx_forward_nsamps = 175;
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 9f104fb04940ee6b66035b4570cb74e4b9c2b911..464cb329a11b26659a00707db31f204130711b53 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -289,14 +289,12 @@ double bw = 10.0e6;
 
 static int                      tx_max_power[MAX_NUM_CCs]; /* =  {0,0}*/;
 
+int chain_offset=0;
+
 #ifndef EXMIMO
 char ref[128] = "internal";
 char channels[128] = "0";
 
-//unsigned int samples_per_frame = 307200;
-//unsigned int tx_forward_nsamps=0;
-//int tx_delay;
-
 #endif
 
 int                      rx_input_level_dBm;
@@ -318,6 +316,7 @@ static LTE_DL_FRAME_PARMS      *frame_parms[MAX_NUM_CCs];
 int multi_thread=1;
 uint32_t target_dl_mcs = 28; //maximum allowed mcs
 uint32_t target_ul_mcs = 10;
+uint32_t timing_advance = 0;
 uint8_t exit_missed_slots=1;
 uint64_t num_missed_slots=0; // counter for the number of missed slots
 
@@ -422,7 +421,7 @@ void help (void) {
   printf("  --ue-txgain set UE TX gain\n");
   printf("  --ue-scan_carrier set UE to scan around carrier\n");
   printf("  --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
-  printf("  -C Set the downlink frequecny for all Component carrier\n");
+  printf("  -C Set the downlink frequency for all component carriers\n");
   printf("  -d Enable soft scope and L1 and L2 stats (Xforms)\n");
   printf("  -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime \n");
   printf("  -g Set the global log level, valide options: (9:trace, 8/7:debug, 6:info, 4:warn, 3:error)\n");
@@ -436,6 +435,7 @@ void help (void) {
   printf("  -r Set the PRB, valid values: 6, 25, 50, 100  \n");    
   printf("  -S Skip the missed slots/subframes \n");    
   printf("  -t Set the maximum uplink MCS\n");
+  printf("  -T Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).\n");
   printf("  -U Set the lte softmodem as a UE\n");
   printf("  -W Enable L2 wireshark messages on localhost \n");
   printf("  -V Enable VCD (generated file will be located atopenair_dump_eNB.vcd, read it with target/RT/USER/eNB.gtkw\n");
@@ -970,6 +970,25 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
 	 phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset++] = 0x00010001;
        }
      }
+
+     if ((((phy_vars_eNB->lte_frame_parms.tdd_config==0) ||
+	  (phy_vars_eNB->lte_frame_parms.tdd_config==1) ||
+	  (phy_vars_eNB->lte_frame_parms.tdd_config==2) ||
+	  (phy_vars_eNB->lte_frame_parms.tdd_config==6)) && 
+	  (subframe==0)) || (subframe==5)) {
+       // turn on tx switch N_TA_offset before
+       //LOG_D(HW,"subframe %d, time to switch to tx (N_TA_offset %d, slot_offset %d) \n",subframe,phy_vars_eNB->N_TA_offset,slot_offset);
+       for (i=0; i<phy_vars_eNB->N_TA_offset; i++) {
+	 tx_offset = (int)slot_offset+time_offset[aa]+i-phy_vars_eNB->N_TA_offset/2;
+	 if (tx_offset<0)
+	   tx_offset += LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_eNB->lte_frame_parms.samples_per_tti;
+	 
+	 if (tx_offset>=(LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_eNB->lte_frame_parms.samples_per_tti))
+	   tx_offset -= LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_eNB->lte_frame_parms.samples_per_tti;
+	 
+	 phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset] = 0x00000000;
+       }
+     }
     }
   }
 }
@@ -1573,7 +1592,7 @@ static void* eNB_thread( void* arg )
   int hw_subframe = 0; // 0..NUM_ENB_THREADS-1 => 0..9
   
   unsigned int rx_pos = 0;
-  unsigned int tx_pos = 0; //spp*tx_delay;
+  unsigned int tx_pos = 0;
 #endif
   int CC_id=0;	
   struct timespec trx_time0, trx_time1, trx_time2;
@@ -1648,8 +1667,8 @@ static void* eNB_thread( void* arg )
   int frame = 0;
 
 #ifndef EXMIMO
-  spp = openair0_cfg[0].samples_per_packet;
-  tx_pos=spp*openair0_cfg[0].tx_delay;
+  spp        = openair0_cfg[0].samples_per_packet;
+  tx_pos     = openair0_cfg[0].tx_scheduling_advance;
 #endif
 
   while (!oai_exit) {
@@ -1810,11 +1829,10 @@ static void* eNB_thread( void* arg )
       // prepare tx buffer pointers
       for (i=0; i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx; i++)
 	txp[i] = (void*)&txdata[i][tx_pos];
-      //printf("tx_pos %d ts %d, ts_offset %d txp[i] %p, ap %d\n", tx_pos,  timestamp, (timestamp+(tx_delay*spp)-tx_forward_nsamps),txp[i], i);
       // if symb_written < spp ==> error 
       if (frame > 50) {
 	openair0.trx_write_func(&openair0,
-				(timestamp+(openair0_cfg[card].tx_delay*spp)-openair0_cfg[card].tx_forward_nsamps),
+				(timestamp+(openair0_cfg[card].tx_scheduling_advance)-openair0_cfg[card].tx_sample_advance),
 				txp,
 				spp,
 				PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx,
@@ -1822,7 +1840,7 @@ static void* eNB_thread( void* arg )
       }
       
       VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, timestamp&0xffffffff );
-      VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (timestamp+(openair0_cfg[card].tx_delay*spp)-openair0_cfg[card].tx_forward_nsamps)&0xffffffff );
+      VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (timestamp+(openair0_cfg[card].tx_scheduling_advance)-openair0_cfg[card].tx_sample_advance)&0xffffffff );
 
       stop_meas( &softmodem_stats_mt );
       clock_gettime( CLOCK_MONOTONIC, &trx_time2 );
@@ -1833,7 +1851,8 @@ static void* eNB_thread( void* arg )
       rt_sleep_ns(1000000);
 #endif
 
-      if ((tx_launched == 0) &&
+      if ((frame>50) &&
+	  (tx_launched == 0) &&
           (rx_pos >= (((2*hw_subframe)+1)*PHY_vars_eNB_g[0][0]->lte_frame_parms.samples_per_tti>>1))) {
         tx_launched = 1;
 
@@ -1902,52 +1921,53 @@ static void* eNB_thread( void* arg )
 #else
       int sf = hw_subframe;
 #endif
-
-      for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
+      if (frame>50) {
+	for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
 #ifdef EXMIMO
-
-        if (pthread_mutex_lock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_tx) != 0) {
-          LOG_E(PHY,"[eNB] ERROR pthread_mutex_lock for eNB TX thread %d (IC %d)\n",sf,PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx);
-        } else {
-          //          LOG_I(PHY,"[eNB] Waking up eNB process %d (IC %d)\n",sf,PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt);
-          PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx++;
-          pthread_mutex_unlock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_tx);
-
-          if (PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx == 0) {
-            if (pthread_cond_signal(&PHY_vars_eNB_g[0][CC_id]->proc[sf].cond_tx) != 0) {
-              LOG_E(PHY,"[eNB] ERROR pthread_cond_signal for eNB TX thread %d\n",sf);
+	  
+	  if (pthread_mutex_lock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_tx) != 0) {
+	    LOG_E(PHY,"[eNB] ERROR pthread_mutex_lock for eNB TX thread %d (IC %d)\n",sf,PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx);
+	  } else {
+	    //          LOG_I(PHY,"[eNB] Waking up eNB process %d (IC %d)\n",sf,PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt);
+	    PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx++;
+	    pthread_mutex_unlock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_tx);
+	    
+	    if (PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_tx == 0) {
+	      if (pthread_cond_signal(&PHY_vars_eNB_g[0][CC_id]->proc[sf].cond_tx) != 0) {
+		LOG_E(PHY,"[eNB] ERROR pthread_cond_signal for eNB TX thread %d\n",sf);
+		exit_fun("nothing to add");
+	      }
+	    } else {
+	      LOG_W(PHY,"[eNB] Frame %d, eNB TX thread %d busy!!\n",PHY_vars_eNB_g[0][CC_id]->proc[sf].frame_tx,sf);
 	      exit_fun("nothing to add");
-            }
-          } else {
-            LOG_W(PHY,"[eNB] Frame %d, eNB TX thread %d busy!!\n",PHY_vars_eNB_g[0][CC_id]->proc[sf].frame_tx,sf);
-            exit_fun("nothing to add");
-          }
-        }
-
+	    }
+	  }
+	  
 #endif
 
-        if (pthread_mutex_lock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_rx) != 0) {
-          LOG_E( PHY, "[eNB] ERROR pthread_mutex_lock for eNB RX thread %d (IC %d)\n", sf, PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx );
-          exit_fun( "error locking mutex_rx" );
-          break;
-        }
-
-        int cnt_rx = ++PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx;
-
-        pthread_mutex_unlock( &PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_rx );
-
-        if (cnt_rx == 0) {
-          // the thread was presumably waiting where it should and can now be woken up
-          if (pthread_cond_signal(&PHY_vars_eNB_g[0][CC_id]->proc[sf].cond_rx) != 0) {
-            LOG_E( PHY, "[eNB] ERROR pthread_cond_signal for eNB RX thread %d\n", sf );
-            exit_fun( "ERROR pthread_cond_signal" );
-            break;
-          }
-        } else {
-          LOG_W( PHY, "[eNB] Frame %d, eNB RX thread %d busy!! instance_cnt %d CC_id %d\n", PHY_vars_eNB_g[0][CC_id]->proc[sf].frame_rx, sf, PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx, CC_id );
-          exit_fun( "RX thread busy" );
-          break;
-        }
+	  if (pthread_mutex_lock(&PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_rx) != 0) {
+	    LOG_E( PHY, "[eNB] ERROR pthread_mutex_lock for eNB RX thread %d (IC %d)\n", sf, PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx );
+	    exit_fun( "error locking mutex_rx" );
+	    break;
+	  }
+	  
+	  int cnt_rx = ++PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx;
+	  
+	  pthread_mutex_unlock( &PHY_vars_eNB_g[0][CC_id]->proc[sf].mutex_rx );
+	  
+	  if (cnt_rx == 0) {
+	    // the thread was presumably waiting where it should and can now be woken up
+	    if (pthread_cond_signal(&PHY_vars_eNB_g[0][CC_id]->proc[sf].cond_rx) != 0) {
+	      LOG_E( PHY, "[eNB] ERROR pthread_cond_signal for eNB RX thread %d\n", sf );
+	      exit_fun( "ERROR pthread_cond_signal" );
+	      break;
+	    }
+	  } else {
+	    LOG_W( PHY, "[eNB] Frame %d, eNB RX thread %d busy!! instance_cnt %d CC_id %d\n", PHY_vars_eNB_g[0][CC_id]->proc[sf].frame_rx, sf, PHY_vars_eNB_g[0][CC_id]->proc[sf].instance_cnt_rx, CC_id );
+	    exit_fun( "RX thread busy" );
+	    break;
+	  }
+	}
       }
     }
 
@@ -2056,7 +2076,7 @@ static void get_options (int argc, char **argv)
     {NULL, 0, NULL, 0}
   };
 
-  while ((c = getopt_long (argc, argv, "C:dK:g:F:G:hqO:m:SUVRM:r:P:Ws:t:x:",long_options,NULL)) != -1) {
+  while ((c = getopt_long (argc, argv, "A:a:C:dK:g:F:G:hqO:m:SUVRM:r:P:Ws:t:Tx:",long_options,NULL)) != -1) {
     switch (c) {
     case LONG_OPTION_MAXPOWER:
       tx_max_power[0]=atoi(optarg);
@@ -2131,6 +2151,10 @@ static void get_options (int argc, char **argv)
 #endif
       break;
 
+    case 'A':
+      timing_advance = atoi (optarg);
+      break;
+
     case 'C':
       for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
         downlink_frequency[CC_id][0] = atof(optarg); // Use float to avoid issue with frequency over 2^31.
@@ -2144,6 +2168,10 @@ static void get_options (int argc, char **argv)
 
       break;
 
+    case 'a':
+      chain_offset = atoi(optarg);
+      break;
+
     case 'd':
 #ifdef XFORMS
       do_forms=1;
@@ -2321,8 +2349,13 @@ static void get_options (int argc, char **argv)
         printf("Transmission mode > 2 (%d) not supported for the moment\n",transmission_mode);
         exit(-1);
       }
+      break;
 
+    case 'T':
+      for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) 
+	frame_parms[CC_id]->frame_type = TDD;
       break;
+
     case 'h':
       help ();
       exit (-1);
@@ -2482,12 +2515,10 @@ int main( int argc, char **argv )
   memset(tx_max_power,0,sizeof(int)*MAX_NUM_CCs);
   set_latency_target();
 
-
-
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
     frame_parms[CC_id] = (LTE_DL_FRAME_PARMS*) malloc(sizeof(LTE_DL_FRAME_PARMS));
     /* Set some default values that may be overwritten while reading options */
-    frame_parms[CC_id]->frame_type         = FDD; /* TDD */
+    frame_parms[CC_id]->frame_type          = FDD;
     frame_parms[CC_id]->tdd_config          = 3;
     frame_parms[CC_id]->tdd_config_S        = 0;
     frame_parms[CC_id]->N_RB_DL             = 100;
@@ -2784,7 +2815,7 @@ int main( int argc, char **argv )
     PHY_vars_eNB_g[0] = malloc(sizeof(PHY_VARS_eNB*));
 
     for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
-      PHY_vars_eNB_g[0][CC_id] = init_lte_eNB(frame_parms[CC_id],0,Nid_cell,cooperation_flag,transmission_mode,abstraction_flag);
+      PHY_vars_eNB_g[0][CC_id] = init_lte_eNB(frame_parms[CC_id],0,frame_parms[CC_id]->Nid_cell,cooperation_flag,transmission_mode,abstraction_flag);
       PHY_vars_eNB_g[0][CC_id]->CC_id = CC_id;
 
 #ifndef OPENAIR2
@@ -2835,7 +2866,7 @@ int main( int argc, char **argv )
       }
 
 #else
-      //already taken care of in lte-softmodem
+      //already taken care of in lte-softmodem.c
       PHY_vars_eNB_g[0][CC_id]->N_TA_offset = 0;
 #endif
 
@@ -2861,66 +2892,37 @@ int main( int argc, char **argv )
   for (card=0; card<MAX_CARDS; card++) {
 
     if(frame_parms[0]->N_RB_DL == 100) {
-      sample_rate = 30.72e6;
-      bw          = 10.0e6;
-#ifndef EXMIMO
       openair0_cfg[card].sample_rate=30.72e6;
-      openair0_cfg[card].samples_per_packet = 2048;
       openair0_cfg[card].samples_per_frame = 307200; 
       openair0_cfg[card].tx_bw = 10e6;
       openair0_cfg[card].rx_bw = 10e6;
-      // from usrp_time_offset
-      openair0_cfg[card].tx_forward_nsamps = 175;
-      openair0_cfg[card].tx_delay = 8;
-#endif
     } else if(frame_parms[0]->N_RB_DL == 50) {
-      sample_rate = 15.36e6;
-      bw          = 5.0e6;
-#ifndef EXMIMO
       openair0_cfg[card].sample_rate=15.36e6;
-      openair0_cfg[card].samples_per_packet = 2048;
       openair0_cfg[card].samples_per_frame = 153600;
       openair0_cfg[card].tx_bw = 5e6;
       openair0_cfg[card].rx_bw = 5e6;
-      openair0_cfg[card].tx_forward_nsamps = 95;
-      openair0_cfg[card].tx_delay = 5;
-#endif
     } else if (frame_parms[0]->N_RB_DL == 25) {
-      sample_rate = 7.68e6;
-      bw          = 2.5e6;
-#ifndef EXMIMO
       openair0_cfg[card].sample_rate=7.68e6;
       openair0_cfg[card].samples_per_frame = 76800;
       openair0_cfg[card].tx_bw = 2.5e6;
       openair0_cfg[card].rx_bw = 2.5e6;
-      openair0_cfg[card].samples_per_packet = 1024;
-#ifdef OAI_USRP
-    openair0_cfg[card].tx_forward_nsamps = 70;
-    openair0_cfg[card].tx_delay = 5;
-#elif OAI_BLADERF
-      openair0_cfg[card].tx_forward_nsamps = 0;
-      openair0_cfg[card].tx_delay = 4;
-#endif 
-#endif
     } else if (frame_parms[0]->N_RB_DL == 6) {
-      sample_rate = 1.92e6;
-      bw          = 0.96e6;
-#ifndef EXMIMO
       openair0_cfg[card].sample_rate=1.92e6;
-      openair0_cfg[card].samples_per_packet = 256;
       openair0_cfg[card].samples_per_frame = 19200;
       openair0_cfg[card].tx_bw = 1.5e6;
       openair0_cfg[card].rx_bw = 1.5e6;
-      openair0_cfg[card].tx_forward_nsamps = 40;
-      openair0_cfg[card].tx_delay = 8;
-#endif
     }
-    
+
+    if (frame_parms[0]->frame_type==TDD)
+      openair0_cfg[card].duplex_mode = duplex_mode_TDD;
+    else //FDD
+      openair0_cfg[card].duplex_mode = duplex_mode_FDD;
+
 #ifdef ETHERNET
 
     //calib needed
-    openair0_cfg[card].tx_delay = 0;
-    openair0_cfg[card].tx_forward_nsamps = 0;
+    openair0_cfg[card].tx_scheduling_advance = 0;
+    openair0_cfg[card].tx_sample_advance = 0;
     
     if (frame_parms[0]->N_RB_DL == 6) 
       openair0_cfg[card].samples_per_packet = 256;
@@ -2931,9 +2933,6 @@ int main( int argc, char **argv )
 #endif
 
 
-#ifndef EXMIMO
-    openair0_cfg[card].samples_per_packet = openair0_cfg[0].samples_per_packet;
-#endif
     printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
            ((UE_flag==0) ? PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx : PHY_vars_UE_g[0][0]->lte_frame_parms.nb_antennas_tx),
            ((UE_flag==0) ? PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx : PHY_vars_UE_g[0][0]->lte_frame_parms.nb_antennas_rx));
@@ -2949,11 +2948,9 @@ int main( int argc, char **argv )
       openair0_cfg[card].remote_ip   = &rrh_eNB_ip[0];
       openair0_cfg[card].remote_port = rrh_eNB_port;
     }
-openair0_cfg[card].num_rb_dl=frame_parms[0]->N_RB_DL;
+    openair0_cfg[card].num_rb_dl=frame_parms[0]->N_RB_DL;
 #endif
-    openair0_cfg[card].sample_rate = sample_rate;
-    openair0_cfg[card].tx_bw = bw;
-    openair0_cfg[card].rx_bw = bw;
+
     // in the case of the USRP, the following variables need to be initialized before the init
     // since the USRP only supports one CC (for the moment), we initialize all the cards with first CC.
     // in the case of EXMIMO2, these values are overwirtten in the function setup_eNB/UE_buffer
@@ -2977,26 +2974,31 @@ openair0_cfg[card].num_rb_dl=frame_parms[0]->N_RB_DL;
 	openair0_cfg[card].rx_gain[i] = PHY_vars_eNB_g[0][0]->rx_total_gain_eNB_dB;
       }
       else {
-	openair0_cfg[card].rx_gain[i] = PHY_vars_UE_g[0][0]->rx_total_gain_dB;// - USRP_GAIN_OFFSET;  // calibrated for USRP B210 @ 2.6 GHz, 30.72 MS/s
+	openair0_cfg[card].rx_gain[i] = PHY_vars_UE_g[0][0]->rx_total_gain_dB;
       }
 
+#ifdef OAI_USRP      
       switch(frame_parms[0]->N_RB_DL) {
       case 6:
-        openair0_cfg[card].rx_gain[i] -= 6;
+        openair0_cfg[card].rx_gain[i] -= 12;
         break;
 
       case 25:
-        openair0_cfg[card].rx_gain[i] += 6;
+        openair0_cfg[card].rx_gain[i] -= 6;
         break;
 
       case 50:
-        openair0_cfg[card].rx_gain[i] += 8;
+        openair0_cfg[card].rx_gain[i] -= 3;
+        break;
+
+      case 100:
+        openair0_cfg[card].rx_gain[i] -= 0;
         break;
 
       default:
         break;
       }
-
+#endif      
 
     }
 
@@ -3078,13 +3080,13 @@ openair0_cfg[card].num_rb_dl=frame_parms[0]->N_RB_DL;
 
   for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
     rf_map[CC_id].card=0;
-    rf_map[CC_id].chain=CC_id;
+    rf_map[CC_id].chain=CC_id+chain_offset;
   }
 
   // connect the TX/RX buffers
   if (UE_flag==1) {
 #ifdef OAI_USRP
-    openair_daq_vars.timing_advance = 160;
+    openair_daq_vars.timing_advance = timing_advance;
 #else
     openair_daq_vars.timing_advance = 160;
 #endif
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 31701d877fb0eeab408814bfc62d6f4708c0adb1..7f116b98250ceb84fad4e32aaab8ea6a84fdc69c 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -400,7 +400,7 @@ static void *UE_thread_synch(void *arg)
  
     case pbch:
 
-      
+      LOG_I(PHY,"[UE thread Synch] Running Initial Synch\n");
       if (initial_sync( UE, UE->mode ) == 0) {
 
         hw_slot_offset = (UE->rx_offset<<1) / UE->lte_frame_parms.samples_per_tti;
@@ -410,6 +410,7 @@ static void *UE_thread_synch(void *arg)
 	  UE->UE_scan_carrier = 0;
 	  // rerun with new cell parameters and frequency-offset
 	  for (i=0;i<openair0_cfg[0].rx_num_channels;i++) {
+	    openair0_cfg[0].rx_gain[i] = UE->rx_total_gain_dB;//-USRP_GAIN_OFFSET;
 	    openair0_cfg[0].rx_freq[i] -= UE->lte_ue_common_vars.freq_offset;
 	    openair0_cfg[0].tx_freq[i] =  openair0_cfg[0].rx_freq[i]+uplink_frequency_offset[0][i];
 	    downlink_frequency[0][i] = openair0_cfg[0].rx_freq[i];
@@ -422,25 +423,33 @@ static void *UE_thread_synch(void *arg)
 	    openair0_cfg[0].sample_rate =1.92e6;
 	    openair0_cfg[0].rx_bw          =.96e6;
 	    openair0_cfg[0].tx_bw          =.96e6;
+#ifdef OAI_USRP
             openair0_cfg[0].rx_gain[0] -= 12;
+#endif
 	    break;
 	  case 25:
 	    openair0_cfg[0].sample_rate =7.68e6;
 	    openair0_cfg[0].rx_bw          =2.5e6;
 	    openair0_cfg[0].tx_bw          =2.5e6;
+#ifdef OAI_USRP
             openair0_cfg[0].rx_gain[0] -= 6;
+#endif
 	    break;
 	  case 50:
 	    openair0_cfg[0].sample_rate =15.36e6;
 	    openair0_cfg[0].rx_bw          =5.0e6;
 	    openair0_cfg[0].tx_bw          =5.0e6;
+#ifdef OAI_USRP
             openair0_cfg[0].rx_gain[0] -= 3;
+#endif
 	    break;
 	  case 100:
 	    openair0_cfg[0].sample_rate=30.72e6;
 	    openair0_cfg[0].rx_bw=10.0e6;
 	    openair0_cfg[0].tx_bw=10.0e6;
+#ifdef OAI_USRP
             openair0_cfg[0].rx_gain[0] -= 0;
+#endif
 	    break;
 	  }
 #ifndef EXMIMO
@@ -519,10 +528,6 @@ static void *UE_thread_synch(void *arg)
           for (i=0; i<openair0_cfg[card].rx_num_channels; i++) {
             openair0_cfg[card].rx_freq[i] = downlink_frequency[card][i]+freq_offset;
             openair0_cfg[card].tx_freq[i] = downlink_frequency[card][i]+uplink_frequency_offset[card][i]+freq_offset;
-#ifdef OAI_USRP
-            openair0_cfg[card].rx_gain[i] = UE->rx_total_gain_dB;//-USRP_GAIN_OFFSET;
-	    
-	    
 #ifndef EXMIMO
 	    openair0.trx_set_freq_func(&openair0,&openair0_cfg[0],0);
 	    
@@ -530,6 +535,12 @@ static void *UE_thread_synch(void *arg)
 	    openair0_set_frequencies(&openair0,&openair0_cfg[0],0);
 	    
 #endif
+
+#ifdef OAI_USRP
+            openair0_cfg[card].rx_gain[i] = UE->rx_total_gain_dB;//-USRP_GAIN_OFFSET;
+	    
+	    
+
             switch(UE->lte_frame_parms.N_RB_DL) {
             case 6:
               openair0_cfg[card].rx_gain[i] -= 12;
@@ -1002,7 +1013,7 @@ void *UE_thread(void *arg)
   static int UE_thread_retval;
   PHY_VARS_UE *UE = PHY_vars_UE_g[0][0];
   int spp = openair0_cfg[0].samples_per_packet;
-  int slot=1, frame=0, hw_subframe=0, rxpos=0, txpos=spp*openair0_cfg[0].tx_delay;
+  int slot=1, frame=0, hw_subframe=0, rxpos=0, txpos=openair0_cfg[0].tx_scheduling_advance;
 #ifdef __AVX2__
   int dummy[2][spp] __attribute__((aligned(32)));
 #else
@@ -1019,6 +1030,10 @@ void *UE_thread(void *arg)
 
   openair0_timestamp timestamp;
 
+#ifdef NAS_UE
+  MessageDef *message_p;
+#endif
+
 #ifdef RTAI
   RT_TASK *task = rt_task_init_schmod(nam2num("UE thread"), 0, 0, 0, SCHED_FIFO, 0xF);
 
@@ -1074,6 +1089,11 @@ void *UE_thread(void *arg)
 
   printf("starting UE thread\n");
 
+#ifdef NAS_UE
+  message_p = itti_alloc_new_message(TASK_NAS_UE, INITIALIZE_MESSAGE);
+  itti_send_msg_to_task (TASK_NAS_UE, INSTANCE_DEFAULT, message_p);
+#endif
+
   T0 = rt_get_time_ns();
   first_rx = 1;
   rxpos=0;
@@ -1094,10 +1114,10 @@ void *UE_thread(void *arg)
 
       for (int i=0; i<UE->lte_frame_parms.nb_antennas_rx; i++)
         rxp[i] = (dummy_dump==0) ? (void*)&rxdata[i][rxpos] : (void*)dummy[i];
-      /*
-      if (dummy_dump == 0)
-      	printf("writing %d samples to %d (first_rx %d)\n",spp - ((first_rx==1) ? rx_off_diff : 0),rxpos,first_rx);
-      */
+      
+      /*      if (dummy_dump == 0)
+	      printf("writing %d samples to %d (first_rx %d)\n",spp - ((first_rx==1) ? rx_off_diff : 0),rxpos,first_rx);*/
+      
       if (UE->mode != loop_through_memory) {
 	rxs = openair0.trx_read_func(&openair0,
 				     &timestamp,
@@ -1106,8 +1126,11 @@ void *UE_thread(void *arg)
 				     UE->lte_frame_parms.nb_antennas_rx);
 
 	if (rxs != (spp- ((first_rx==1) ? rx_off_diff : 0))) {
-	  exit_fun("problem in rx");
-	  return &UE_thread_retval;
+	  printf("rx error: asked %d got %d ",spp - ((first_rx==1) ? rx_off_diff : 0),rxs);
+	  if (UE->is_synchronized == 1) {
+	    exit_fun("problem in rx");
+	    return &UE_thread_retval;
+	  }
 	}
       }
 
@@ -1127,7 +1150,7 @@ void *UE_thread(void *arg)
           txp[i] = (void*)&txdata[i][txpos];
 
         openair0.trx_write_func(&openair0,
-                                (timestamp+spp*openair0_cfg[0].tx_delay-openair0_cfg[0].tx_forward_nsamps),
+                                (timestamp+openair0_cfg[0].tx_scheduling_advance-openair0_cfg[0].tx_sample_advance),
                                 txp,
 				spp - ((first_rx==1) ? rx_off_diff : 0),
                                 UE->lte_frame_parms.nb_antennas_tx,
@@ -1324,6 +1347,7 @@ void *UE_thread(void *arg)
 
 #ifndef USRP_DEBUG
 	    if (UE->mode != loop_through_memory) {
+	      LOG_I(PHY,"Resynchronizing RX by %d samples\n",UE->rx_offset);
 	      rxs = openair0.trx_read_func(&openair0,
 					   &timestamp,
 					   (void**)rxdata,
diff --git a/targets/RT/USER/rrh_gw.c b/targets/RT/USER/rrh_gw.c
index 39b726ae07472a200c274f307005e399903848db..89c8679554ef7053b2853dc8b10d4ea01145ded9 100644
--- a/targets/RT/USER/rrh_gw.c
+++ b/targets/RT/USER/rrh_gw.c
@@ -216,7 +216,7 @@ static rrh_module_t new_module (unsigned int id) {
   LOG_I(RRH,"Setting RF device to EXMIMO\n");	   
 #elif OAI_USRP
   rrh_mod.devs=oai_dv;	
-  rrh_mod.devs->type=USRP_IF;
+  rrh_mod.devs->type=USRP_B200_IF;
   LOG_I(RRH,"Setting RF device to USRP\n");    	 
 #elif OAI_BLADERF
   rrh_mod.devs=oai_dv;	
diff --git a/targets/RT/USER/rrh_gw.h b/targets/RT/USER/rrh_gw.h
index 69546dbe07e9fbf41de6b943fa1239457bd56aab..739e2088b221296d20037b15fd2e65a1f51ed9ad 100644
--- a/targets/RT/USER/rrh_gw.h
+++ b/targets/RT/USER/rrh_gw.h
@@ -51,7 +51,7 @@
 
 /*! \brief RRH supports two types of modules: eNB and UE
 	   each module is associated with an ethernet device (device of ETH_IF) 
-	   and optionally with a RF device (device type can be USRP_IF/BLADERF_IF/EXMIMO_IF/NONE_IF)
+	   and optionally with a RF device (device type can be USRP_B200/USRP_X300/BLADERF_IF/EXMIMO_IF/NONE_IF)
            UE modules will always have RF device type NONE_IF */
 typedef struct {
 /*! \brief module id */
diff --git a/targets/SIMU/USER/channel_sim.c b/targets/SIMU/USER/channel_sim.c
index aeddfaddbe83591006d30fa727da9f7d25aa02bb..bba32a5a29b0d7bdf0f48c7bf50edcd546125696 100644
--- a/targets/SIMU/USER/channel_sim.c
+++ b/targets/SIMU/USER/channel_sim.c
@@ -303,8 +303,8 @@ void do_DL_sig(double **r_re0,double **r_im0,
             10*log10(rx_pwr*(double)frame_parms->N_RB_DL*12),next_slot,next_slot>>1);
       LOG_D(OCM,"[SIM][DL] UE %d : rx_pwr (noise) -132 dBm/RE (N0fs = %.1f dBm, N0B = %.1f dBm) for slot %d (subframe %d)\n",
             UE_id,
-            10*log10(eNB2UE[eNB_id][UE_id][CC_id]->BW*1e6)-174,
-            10*log10(eNB2UE[eNB_id][UE_id][CC_id]->BW*1e6*12*frame_parms->N_RB_DL/(double)frame_parms->ofdm_symbol_size)-174,
+            10*log10(eNB2UE[eNB_id][UE_id][CC_id]->sampling_rate*1e6)-174,
+            10*log10(eNB2UE[eNB_id][UE_id][CC_id]->sampling_rate*1e6*12*frame_parms->N_RB_DL/(double)frame_parms->ofdm_symbol_size)-174,
             next_slot,next_slot>>1);
 #endif
 
@@ -342,7 +342,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
                    r_im0,
                    nb_antennas_rx,
                    frame_parms->samples_per_tti>>1,
-                   1e3/eNB2UE[eNB_id][UE_id][CC_id]->BW,  // sampling time (ns)
+                   1e3/eNB2UE[eNB_id][UE_id][CC_id]->sampling_rate,  // sampling time (ns)
                    (double)PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB - 66.227);   // rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
 
 #ifdef DEBUG_SIM
@@ -584,7 +584,7 @@ void do_UL_sig(double **r_re0,double **r_im0,double **r_re,double **r_im,double
                    r_im,
                    nb_antennas_rx,
                    frame_parms->samples_per_tti>>1,
-                   1e3/UE2eNB[0][eNB_id][CC_id]->BW,  // sampling time (ns)
+                   1e3/UE2eNB[0][eNB_id][CC_id]->sampling_rate,  // sampling time (ns)
                    (double)PHY_vars_eNB_g[eNB_id][CC_id]->rx_total_gain_eNB_dB - 66.227);   // rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
 
 #ifdef DEBUG_SIM
diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c
index ebdb3c00d3266c6b5a3de93e4241a095277efd0d..ca1ec9fccb9a839317a59733367ed9e764d8bd0a 100644
--- a/targets/SIMU/USER/oaisim_functions.c
+++ b/targets/SIMU/USER/oaisim_functions.c
@@ -1122,24 +1122,28 @@ void init_ocm(void)
               else
          */
 
-        eNB2UE[eNB_id][UE_id][CC_id] = new_channel_desc_scm(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.nb_antennas_tx,
-                                       PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.nb_antennas_rx,
-                                       map_str_to_int(small_scale_names,oai_emulation.environment_system_config.fading.small_scale.selected_option),
-                                       oai_emulation.environment_system_config.system_bandwidth_MB,
-                                       forgetting_factor,
-                                       0,
-                                       0);
+        eNB2UE[eNB_id][UE_id][CC_id] = 
+	  new_channel_desc_scm(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.nb_antennas_tx,
+			       PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.nb_antennas_rx,
+			       map_str_to_int(small_scale_names,oai_emulation.environment_system_config.fading.small_scale.selected_option),
+			       N_RB2sampling_rate(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.N_RB_DL),
+			       N_RB2channel_bandwidth(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.N_RB_DL),
+			       forgetting_factor,
+			       0,
+			       0);
         random_channel(eNB2UE[eNB_id][UE_id][CC_id],abstraction_flag);
         LOG_D(OCM,"[SIM] Initializing channel (%s, %d) from UE %d to eNB %d\n", oai_emulation.environment_system_config.fading.small_scale.selected_option,
               map_str_to_int(small_scale_names, oai_emulation.environment_system_config.fading.small_scale.selected_option),UE_id, eNB_id);
 
-        UE2eNB[UE_id][eNB_id][CC_id] = new_channel_desc_scm(PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.nb_antennas_tx,
-                                       PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.nb_antennas_rx,
-                                       map_str_to_int(small_scale_names, oai_emulation.environment_system_config.fading.small_scale.selected_option),
-                                       oai_emulation.environment_system_config.system_bandwidth_MB,
-                                       forgetting_factor,
-                                       0,
-                                       0);
+        UE2eNB[UE_id][eNB_id][CC_id] = 
+	  new_channel_desc_scm(PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms.nb_antennas_tx,
+			       PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.nb_antennas_rx,
+			       map_str_to_int(small_scale_names, oai_emulation.environment_system_config.fading.small_scale.selected_option),
+			       N_RB2sampling_rate(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.N_RB_UL),
+			       N_RB2channel_bandwidth(PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.N_RB_UL),
+			       forgetting_factor,
+			       0,
+			       0);
 
         random_channel(UE2eNB[UE_id][eNB_id][CC_id],abstraction_flag);
 
diff --git a/targets/SIMU/USER/sinr_sim.c b/targets/SIMU/USER/sinr_sim.c
index 8bdc4a505775274ed76766596294496dc7221091..317fe53c6093228bbb7ad413259628df95e14afe 100644
--- a/targets/SIMU/USER/sinr_sim.c
+++ b/targets/SIMU/USER/sinr_sim.c
@@ -254,7 +254,7 @@ void init_snr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *ue_dat
   uint8_t qq;
 
   /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth */
-  thermal_noise = -174 + 10*log10(eNB2UE->BW*1e6); //value in dBm
+  thermal_noise = -174 + 10*log10(eNB2UE->sampling_rate*1e6); //value in dBm
 
   //for (aarx=0; aarx<eNB2UE->nb_rx; aarx++)
   *N0 = thermal_noise + ue_data->rx_noise_level;//? all the element have the same noise level?????
@@ -496,7 +496,7 @@ void init_snr_up(channel_desc_t* UE2eNB, node_desc_t *enb_data, node_desc_t *ue_
 
   // nb_rb = phy_vars_eNB->ulsch_eNB[UE_id]->harq_processes[harq_pid]->nb_rb;
   /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth */
-  thermal_noise = -174 + 10*log10(UE2eNB->BW*1e6); //value in dBm
+  thermal_noise = -174 + 10*log10(UE2eNB->sampling_rate*1e6); //value in dBm
   *N0 = thermal_noise + enb_data->rx_noise_level;//? all the element have the same noise level?????
   double lambda ;
   double residual;
@@ -557,7 +557,7 @@ void calculate_sinr(channel_desc_t* eNB2UE, node_desc_t *enb_data, node_desc_t *
   short count;
 
   /* Thermal noise is calculated using 10log10(K*T*B) K = Boltzmann's constant T = room temperature B = bandwidth */
-  thermal_noise = -174 + 10*log10(eNB2UE->BW*1e6); //value in dBm
+  thermal_noise = -174 + 10*log10(eNB2UE->sampling_rate*1e6); //value in dBm
 
   for (count = 0; count < 12 * nb_rb; count++) {
     sir = enb_data->tx_power_dBm