diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 5ef187baad8c4d9eb424530ba75bb5781302caf2..d7e4eaeb2f08692d0ff02e58dd481b0e00e6d37f 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -43,7 +43,6 @@ set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
 project (OpenAirInterface)
 
 #add_definitions("-DEMIT_ASN_DEBUG=1")
-
 add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms7002m lms7002m)
 add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lmsSDR lmsSDR)
 add_subdirectory(${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/Si5351C Si5351C)
@@ -277,6 +276,7 @@ endif (${RTAI})
 # New C code source file, cmake must be re-run (instead of re-running make only)
 #############
 set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1")
+set(fix_asn1c_call "${OPENAIR_CMAKE}/tools/fix_asn1")
 set(asn1_generated_dir ${OPENAIR_BIN_DIR})
 
 set(protoc_call "${OPENAIR_CMAKE}/tools/generate_protobuf")
@@ -298,7 +298,19 @@ set (RRC_FULL_DIR ${asn1_generated_dir}/${RRC_ASN1_VERSION})
 if(NOT EXISTS ${asn1c_call})
   message( FATAL_ERROR "The script ${asn1c_call} must be present" )
 endif(NOT EXISTS ${asn1c_call})
-execute_process(COMMAND ${asn1c_call}  ${RRC_FULL_DIR} ${RRC_GRAMMAR})
+execute_process(COMMAND ${asn1c_call}  ${RRC_FULL_DIR} ${RRC_GRAMMAR}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
+if(NOT EXISTS ${fix_asn1c_call})
+  message( FATAL_ERROR "The script ${fix_asn1c_call} must be present" )
+endif(NOT EXISTS ${fix_asn1c_call})
+execute_process(COMMAND ${fix_asn1c_call} ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${fix_asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
 file(GLOB rrc_source ${RRC_FULL_DIR}/*.c)
 set(rrc_source  ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c)
 file(GLOB rrc_h ${RRC_FULL_DIR}/*.h)
@@ -312,6 +324,7 @@ include_directories ("${RRC_FULL_DIR}")
 add_custom_command (
   OUTPUT ${RRC_FULL_DIR}/asn1_constants.h
   COMMAND ${asn1c_call}  ${RRC_FULL_DIR} ${RRC_GRAMMAR}
+  COMMAND ${fix_asn1c_call}  ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION}
   DEPENDS ${RRC_GRAMMAR}
   )
 
@@ -340,7 +353,21 @@ set(S1AP_ASN_FILES
   )
 set(S1AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR})
 #message("calling ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}")
-execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES})
+execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
+execute_process(COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "asn1tostruct.py: error")
+endif (NOT ${ret} STREQUAL 0)
+execute_process(COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${fix_asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
 file(GLOB S1AP_source ${S1AP_C_DIR}/*.c)
 
 set(S1AP_OAI_generated
@@ -357,6 +384,7 @@ add_custom_command (
   OUTPUT ${S1AP_OAI_generated}
   COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
   COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
+  COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_VERSION}
   DEPENDS ${S1AP_ASN_FILES}
   )
 add_library(S1AP_LIB
@@ -408,7 +436,21 @@ set(X2AP_ASN_FILES
 
 set(X2AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR})
 #message("calling ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}")
-execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES})
+execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
+execute_process(COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "asn1tostruct.py: error")
+endif (NOT ${ret} STREQUAL 0)
+execute_process(COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION}
+                RESULT_VARIABLE ret)
+if (NOT ${ret} STREQUAL 0)
+  message(FATAL_ERROR "${fix_asn1c_call}: error")
+endif (NOT ${ret} STREQUAL 0)
 file(GLOB X2AP_source ${X2AP_C_DIR}/*.c)
 
 set(X2AP_OAI_generated
@@ -425,6 +467,7 @@ add_custom_command (
   OUTPUT ${X2AP_OAI_generated}
   COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
   COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
+  COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_VERSION}
   DEPENDS ${X2AP_ASN_FILES}
   )
 
diff --git a/cmake_targets/autotests/run_compilation_autotests.bash b/cmake_targets/autotests/run_compilation_autotests.bash
index afe7aa4873ccd3c626a449ef11e9289f5b17ba9e..a7b056dc811d32b2d7be1b09258ff1b60ba2d71b 100755
--- a/cmake_targets/autotests/run_compilation_autotests.bash
+++ b/cmake_targets/autotests/run_compilation_autotests.bash
@@ -20,7 +20,7 @@ test_compile() {
     compile_prog=$2
     exec_prog=$3
     build_dir=$tdir/$1/build
-    log_file=$tdir/log/test.$1.txt
+    log_file=$tdir/log/test.$1.$2.$5.txt
     target=$5
     echo "Compiling test case $test_name. Log file = $log_file"
     rm -fr $build_dir
@@ -34,10 +34,10 @@ test_compile() {
     if [ -s $exec_prog ] ; then
         cp $exec_prog $tdir/bin/`basename $exec_prog`.$target.$test_name
         echo_success "$test_name $exec_prog $target compiled"
-        xUnit_success "compilation" $test_name "PASS" 1
+        xUnit_success "compilation" $test_name "PASS" 1 "$results_file"
     else
         echo_error "$test_name $exec_prog $target compilation failed"
-        xUnit_fail "compilation" $test_name "FAIL" 1
+        xUnit_fail "compilation" $test_name "FAIL" 1 "$results_file"
     fi
 }
 
diff --git a/cmake_targets/tools/fix_asn1 b/cmake_targets/tools/fix_asn1
new file mode 100755
index 0000000000000000000000000000000000000000..dcc00d5e37240853d81231ad7e451fe6c249838f
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1
@@ -0,0 +1,177 @@
+#!/bin/bash
+
+# in those arrays, each line is:
+#   <file> <sha1sum of file (without line 4 which changes depending on the location of the files)> <patch to apply to file>
+
+RRC_Rel10=(
+  "SystemInformation-r8-IEs.h" 603cd6615cff36ec7020692d72c0d6de7c4859cb "fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff"
+)
+
+X2AP_Rel11_2=(
+  "X2ap-CriticalityDiagnostics-IE-List.h" ae96308b37fcbcbf39da5012e42968135fc5f27b "fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff"
+  "NativeInteger.c"                       9f173e87daa1e7378618dbb060a10aae752d74be "fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff"
+  "constr_SET_OF.c"                       5c8765a1e0fc44a48e406d0aa7628004bf3aac2a "fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff"
+)
+
+S1AP_Rel10_5=(
+  "NativeInteger.c" 9f173e87daa1e7378618dbb060a10aae752d74be "fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff"
+  "constr_SET_OF.c" 5c8765a1e0fc44a48e406d0aa7628004bf3aac2a "fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff"
+)
+
+red_color="$(tput setaf 1)"
+green_color="$(tput setaf 2)"
+reset_color="$(tput sgr0)"
+
+function error()
+{
+  echo -e "$red_color"ERROR: "$@""$reset_color"
+  exit 1
+}
+
+function check_sha1()
+{
+  local file="$1"
+  local target_sha1="$2"
+
+  if [ ! -f "$file" ]
+  then
+    error "$file: no such file"
+  fi
+
+  # we don't use the line 4 of the file
+  # it contains the location of the ASN1 grammar
+  # and this location is not the same on every
+  # installation (this is for *.h files, for *.c
+  # files it's no big deal to skip that line)
+  local computed_sha1=$(sed 4d "$file" | sha1sum | cut -f 1 -d ' ')
+
+  if [ "$target_sha1" != "$computed_sha1" ]
+  then
+    error "$file: wrong SHA1"
+  fi
+}
+
+function patch_file()
+{
+  local patch="$1"
+  local file="$2"
+
+  echo -e "$green_color""patch file $file with $OPENAIR_DIR/cmake_targets/tools/$patch""$reset_color"
+
+  patch "$file" "$OPENAIR_DIR/cmake_targets/tools/$patch"
+  if [ $? -ne 0 ]
+  then
+    error "patching of $file with $OPENAIR_DIR/cmake_targets/tools/$patch failed"
+  fi
+}
+
+function apply_patches()
+{
+  local directory="$1"
+  local array=$2
+  local len=$3       # the length could be computed locally but the way to do it is not clear to me [CROUX]
+
+  local i
+  local file
+  local sha1
+  local patch
+  local item
+
+  for (( i = 0; i < $len; i += 3 ))
+  do
+    # special bash syntax to access the array
+    item=$array[$i];       file=${!item}
+    item=$array[$((i+1))]; sha1=${!item}
+    item=$array[$((i+2))]; patch=${!item}
+    check_sha1 "$directory/$file" "$sha1"
+    patch_file "$patch" "$directory/$file"
+  done
+}
+
+function patch_rrc()
+{
+  local directory="$1"
+  local version="$2"
+
+  case "$version" in
+    Rel10 )
+      echo "patching RRC files release 10"
+      apply_patches "$directory" RRC_Rel10 ${#RRC_Rel10[*]}
+      ;;
+    Rel8 )
+      echo "patching RRC files release 8 TODO?"
+      ;;
+    * )
+      error unknwon/unhandled RRC version \'"$version"\'
+      ;;
+  esac
+}
+
+function patch_x2ap()
+{
+  local directory="$1"
+  local version="$2"
+
+  case "$version" in
+    R11 )
+      echo "patching X2AP files release 11.2"
+      apply_patches "$directory" X2AP_Rel11_2 ${#X2AP_Rel11_2[*]}
+      ;;
+    * )
+      error unknwon/unhandled X2AP version \'"$version"\'
+      ;;
+  esac
+}
+
+function patch_s1ap()
+{
+  local directory="$1"
+  local version="$2"
+
+  case "$version" in
+    R10 )
+      echo "patching S1AP files release 10.5"
+      apply_patches "$directory" S1AP_Rel10_5 ${#S1AP_Rel10_5[*]}
+      ;;
+    * )
+      error unknwon/unhandled S1AP version \'"$version"\'
+      ;;
+  esac
+}
+
+function main()
+{
+  if [ $# -ne 3 ]
+  then
+    echo "ERROR: pass <output directory> <module> <version>"
+    exit 1
+  fi
+
+  if [ x"$OPENAIR_DIR" = x ]
+  then
+    error "the variable OPENAIR_DIR is not set"
+  fi
+
+  local directory="$1"
+  local module="$2"
+  local version="$3"
+
+  case "$module" in
+    RRC )
+      patch_rrc "$directory" "$version"
+      ;;
+    X2AP )
+      patch_x2ap "$directory" "$version"
+      ;;
+    S1AP )
+      patch_s1ap "$directory" "$version"
+      ;;
+    * )
+      error unknown module "$module"
+      ;;
+  esac
+
+  exit 0
+}
+
+main "$@"
diff --git a/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff b/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff
new file mode 100644
index 0000000000000000000000000000000000000000..525e35ac9e452891513ef8c78c720cff108a5d16
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/RRC.rel10/SystemInformation-r8-IEs.h.diff
@@ -0,0 +1,23 @@
+57,61d56
+< /* SystemInformation-r8-IEs */
+< typedef struct SystemInformation_r8_IEs {
+< 	struct SystemInformation_r8_IEs__sib_TypeAndInfo {
+< 		A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member {
+< 			SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present;
+79c74,78
+< 			} choice;
+---
+> 			};
+> 
+> 		struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member {
+> 			SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR present;
+> 			union SystemInformation_r8_IEs__sib_TypeAndInfo__Member_u choice;
+83c82,87
+< 		} ) list;
+---
+> 		};
+> 
+> /* SystemInformation-r8-IEs */
+> typedef struct SystemInformation_r8_IEs {
+> 	struct SystemInformation_r8_IEs__sib_TypeAndInfo {
+> 		A_SEQUENCE_OF(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member) list;
diff --git a/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff
new file mode 100644
index 0000000000000000000000000000000000000000..3b51426ad3fa008bec5131cd68d2bb0ea99d7750
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/NativeInteger.c.diff
@@ -0,0 +1,8 @@
+283c283
+< 	int dynamic = 0;
+---
+> 	//int dynamic = 0;
+290c290
+< 		dynamic = 1;
+---
+> 		//dynamic = 1;
diff --git a/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff
new file mode 100644
index 0000000000000000000000000000000000000000..3ceaf5e3e5ccef48746cf5abf2952aa0c6910224
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/S1AP.rel10.5/constr_SET_OF.c.diff
@@ -0,0 +1,4 @@
+1007c1007
+< 				(int)nelems, (int)ct ? ct->effective_bits : -1);
+---
+> 				(int)nelems, ct ? ct->effective_bits : -1);
diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff
new file mode 100644
index 0000000000000000000000000000000000000000..3b51426ad3fa008bec5131cd68d2bb0ea99d7750
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/NativeInteger.c.diff
@@ -0,0 +1,8 @@
+283c283
+< 	int dynamic = 0;
+---
+> 	//int dynamic = 0;
+290c290
+< 		dynamic = 1;
+---
+> 		//dynamic = 1;
diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff
new file mode 100644
index 0000000000000000000000000000000000000000..6ea7b2454eb80b1cf1c34b9bd4c320b20b6f6dd8
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/X2ap-CriticalityDiagnostics-IE-List.h.diff
@@ -0,0 +1,15 @@
+29,31c29
+< /* X2ap-CriticalityDiagnostics-IE-List */
+< typedef struct X2ap_CriticalityDiagnostics_IE_List {
+< 	A_SEQUENCE_OF(struct X2ap_CriticalityDiagnostics_IE_List__Member {
+---
+> struct X2ap_CriticalityDiagnostics_IE_List__Member {
+43c41,46
+< 	} ) list;
+---
+> 	};
+> 
+> /* X2ap-CriticalityDiagnostics-IE-List */
+> typedef struct X2ap_CriticalityDiagnostics_IE_List {
+> 	A_SEQUENCE_OF(struct X2ap_CriticalityDiagnostics_IE_List__Member
+> 	) list;
diff --git a/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff
new file mode 100644
index 0000000000000000000000000000000000000000..3ceaf5e3e5ccef48746cf5abf2952aa0c6910224
--- /dev/null
+++ b/cmake_targets/tools/fix_asn1.data/X2AP.rel11.2/constr_SET_OF.c.diff
@@ -0,0 +1,4 @@
+1007c1007
+< 				(int)nelems, (int)ct ? ct->effective_bits : -1);
+---
+> 				(int)nelems, ct ? ct->effective_bits : -1);
diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper
index 49a991057373dde600a7d7e098de916cb1bd5270..cae0bacbe030578fbd3d4a98ea7cdbe792a64dbb 100644
--- a/cmake_targets/tools/test_helper
+++ b/cmake_targets/tools/test_helper
@@ -35,7 +35,7 @@ xUnit_fail() {
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
   xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
-  echo  -e $xml >> $xmlfile_testcase
+  echo  -e "$xml" >> "$xmlfile_testcase"
   XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
   XUNIT_FAILED=$((XUNIT_FAILED+1))
 }
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index d75dc5ebbc504c321ef200f43dbe0215f43b4200..c4a2bd672cdcc9611ea677f0eccab7e47b28a884 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -226,8 +226,13 @@ void rx_sdu(const module_id_t enb_mod_idP,
   for (i=0; i<num_sdu; i++) {
     LOG_D(MAC,"SDU Number %d MAC Subheader SDU_LCID %d, length %d\n",i,rx_lcids[i],rx_lengths[i]);
 
-    if (rx_lcids[i] == CCCH) {
-
+    switch (rx_lcids[i]) {
+    case CCCH :
+      if (rx_lengths[i] > CCCH_PAYLOAD_SIZE_MAX) {
+        LOG_E(MAC, "[eNB %d/%d] frame %d received CCCH of size %d (too big, maximum allowed is %d), dropping packet\n",
+              enb_mod_idP, CC_idP, frameP, rx_lengths[i], CCCH_PAYLOAD_SIZE_MAX);
+        break;
+      }
       LOG_I(MAC,"[eNB %d][RAPROC] CC_id %d Frame %d, Received CCCH:  %x.%x.%x.%x.%x.%x, Terminating RA procedure for UE rnti %x\n",
             enb_mod_idP,CC_idP,frameP,
             payload_ptr[0],payload_ptr[1],payload_ptr[2],payload_ptr[3],payload_ptr[4], payload_ptr[5], rntiP);
@@ -283,9 +288,11 @@ void rx_sdu(const module_id_t enb_mod_idP,
 
         } // if process is active
       } // loop on RA processes
+      
+      break ;
 
-
-    } else if ((rx_lcids[i] == DCCH) || (rx_lcids[i] == DCCH1)) {
+    case DCCH :
+    case DCCH1 :
       //      if(eNB_mac_inst[module_idP][CC_idP].Dcch_lchan[UE_id].Active==1){
 
 #if defined(ENABLE_MAC_PAYLOAD_DEBUG)
@@ -297,31 +304,32 @@ void rx_sdu(const module_id_t enb_mod_idP,
 #endif
 
       if (UE_id != -1) {
-        //  This check is just to make sure we didn't get a bogus SDU length, to be removed ...
-        if (rx_lengths[i]<CCCH_PAYLOAD_SIZE_MAX) {
-          LOG_D(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DCCH%d, received %d bytes form UE %d \n",
-                enb_mod_idP,CC_idP,frameP, rx_lcids[i], rx_lengths[i], UE_id);
-	  
-          mac_rlc_data_ind(
-			   enb_mod_idP,
-			   rntiP,
-			   enb_mod_idP,
-			   frameP,
-			   ENB_FLAG_YES,
-			   MBMS_FLAG_NO,
-			   rx_lcids[i],
-			   (char *)payload_ptr,
-			   rx_lengths[i],
-			   1,
-			   NULL);//(unsigned int*)crc_status);
-          UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1;
-          UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i];
-        }
+        LOG_D(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DCCH, received %d bytes form UE %d on LCID %d \n",
+              enb_mod_idP,CC_idP,frameP, rx_lengths[i], UE_id, rx_lcids[i]);
+
+        mac_rlc_data_ind(
+			 enb_mod_idP,
+			 rntiP,
+			 enb_mod_idP,
+			 frameP,
+			 ENB_FLAG_YES,
+			 MBMS_FLAG_NO,
+			 rx_lcids[i],
+			 (char *)payload_ptr,
+			 rx_lengths[i],
+			 1,
+			 NULL);//(unsigned int*)crc_status);
+        UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1;
+        UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i];
+
       } /* UE_id != -1 */
-      
-    } else if ((rx_lcids[i]  < NB_RB_MAX) && (rx_lcids[i] > DCCH1 )) {
-      LOG_I(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DTCH%d, received %d bytes form UE %d \n",
-	    enb_mod_idP,CC_idP,frameP, rx_lcids[i], rx_lengths[i], UE_id);
+ 
+      // } 
+      break;
+
+      // all the DRBS
+    case DTCH:
+    default :
 
 #if defined(ENABLE_MAC_PAYLOAD_DEBUG)
       LOG_T(MAC,"offset: %d\n",(unsigned char)((unsigned char*)payload_ptr-sduP));
@@ -330,34 +338,44 @@ void rx_sdu(const module_id_t enb_mod_idP,
       }
       LOG_T(MAC,"\n");
 #endif
-
-      if (UE_id != -1) {
-        if ((rx_lengths[i] <SCH_PAYLOAD_SIZE_MAX) &&  (rx_lengths[i] > 0) ) {   // MAX SIZE OF transport block
-          mac_rlc_data_ind(
-			   enb_mod_idP,
-			   rntiP,
-			   enb_mod_idP,
-			   frameP,
-			   ENB_FLAG_YES,
-			   MBMS_FLAG_NO,
-			   rx_lcids[i],
-			   (char *)payload_ptr,
-			   rx_lengths[i],
-			   1,
-			   NULL);//(unsigned int*)crc_status);
-
-          UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1;
-          UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i];
-        }
-      } else { /* UE_id != -1 */
-	UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx+=1;
-      }    
-    } else {
-      UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx+=1;
-      LOG_E(MAC,"[eNB %d] CC_id %d Frame %d : received unsupported or unknown LCID %d from UE %d ",
-            enb_mod_idP, CC_idP, frameP, rx_lcids[i], UE_id);
+      if (rx_lcids[i]  < NB_RB_MAX ) {
+	LOG_D(MAC,"[eNB %d] CC_id %d Frame %d : ULSCH -> UL-DTCH, received %d bytes from UE %d for lcid %d\n",
+	      enb_mod_idP,CC_idP,frameP, rx_lengths[i], UE_id, rx_lcids[i]);
+	
+	if (UE_id != -1) {
+	  if ((rx_lengths[i] <SCH_PAYLOAD_SIZE_MAX) &&  (rx_lengths[i] > 0) ) {   // MAX SIZE OF transport block
+	    mac_rlc_data_ind(
+			     enb_mod_idP,
+			     rntiP,
+			     enb_mod_idP,
+			     frameP,
+			     ENB_FLAG_YES,
+			     MBMS_FLAG_NO,
+			     rx_lcids[i],
+			     (char *)payload_ptr,
+			     rx_lengths[i],
+			     1,
+			     NULL);//(unsigned int*)crc_status);
+	    
+	    UE_list->eNB_UE_stats[CC_idP][UE_id].num_pdu_rx[rx_lcids[i]]+=1;
+	    UE_list->eNB_UE_stats[CC_idP][UE_id].num_bytes_rx[rx_lcids[i]]+=rx_lengths[i];
+	  }
+	  else { /* rx_length[i] */
+	    UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx+=1;
+	    LOG_E(MAC,"[eNB %d] CC_id %d Frame %d : Max size of transport block reached LCID %d from UE %d ",
+		  enb_mod_idP, CC_idP, frameP, rx_lcids[i], UE_id);
+	  }
+	}    
+	else {/*(UE_id != -1*/ 
+	  UE_list->eNB_UE_stats[CC_idP][UE_id].num_errors_rx+=1;
+	  LOG_E(MAC,"[eNB %d] CC_id %d Frame %d : received unsupported or unknown LCID %d from UE %d ",
+		enb_mod_idP, CC_idP, frameP, rx_lcids[i], UE_id);
+	}
+      }
+      
+      break;
     }
-    
+  
     payload_ptr+=rx_lengths[i];
   }
 
diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h
index aa6c9bd7e23a1d45d630111b0bcff078ed115f79..9f4482832bd880b42404db82a1f4bba90a274476 100644
--- a/openair2/RRC/LITE/defs.h
+++ b/openair2/RRC/LITE/defs.h
@@ -228,6 +228,7 @@ typedef enum e_rab_satus_e {
 typedef struct e_rab_param_s {
   e_rab_t param;
   uint8_t status;
+  uint8_t xid; // transaction_id
 } __attribute__ ((__packed__)) e_rab_param_t;
 #endif
 
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index 68519e519e7cd3cb97faa4b08cce1e1b960ec4ed..0a230ea8ef017c95efc441bc62aca4e895e3a94d 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -1280,6 +1280,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
     }
     
     ue_context_pP->ue_context.e_rab[i].status = E_RAB_STATUS_DONE; 
+    ue_context_pP->ue_context.e_rab[i].xid =rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id);   //Transaction_id,
     
   }
   
@@ -1287,7 +1288,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(const protocol_ctxt_t* co
 
    size = do_RRCConnectionReconfiguration(ctxt_pP,
 					  buffer,
-					  rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id),   //Transaction_id,
+					  ue_context_pP->ue_context.e_rab[i].xid,
 					  (SRB_ToAddModList_t*)NULL, 
 					  (DRB_ToAddModList_t*)*DRB_configList,
 					  (DRB_ToReleaseList_t*)NULL,  // DRB2_list,
@@ -4244,6 +4245,7 @@ rrc_eNB_decode_dcch(
           rrcConnectionReconfigurationComplete.
           criticalExtensions.choice.
           rrcConnectionReconfigurationComplete_r8);
+	/*NN: revise the condition */
         if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
 	  dedicated_DRB = 1;
 	  LOG_I(RRC,
@@ -4261,7 +4263,8 @@ rrc_eNB_decode_dcch(
       if (EPC_MODE_ENABLED == 1) {
 	if (dedicated_DRB == 1){
 	  rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
-					     ue_context_p);
+					     ue_context_p,
+					     ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
 	}else {
 	  rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP,
 						       ue_context_p);
diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.c b/openair2/RRC/LITE/rrc_eNB_S1AP.c
index 8f3cd7ae93c103b1d6b2a9efb48ac17637283cee..c8ae96d084ba352c34f00d3bfaf5d3d51b3444b9 100644
--- a/openair2/RRC/LITE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LITE/rrc_eNB_S1AP.c
@@ -1,6 +1,6 @@
 /*******************************************************************************
     OpenAirInterface
-    Copyright(c) 1999 - 2014 Eurecom
+    Copyright(c) 1999 - 2016 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
@@ -28,8 +28,8 @@
 *******************************************************************************/
 /*! \file rrc_eNB_S1AP.c
  * \brief rrc S1AP procedures for eNB
- * \author Laurent Winckel and Sebastien ROUX and Navid Nikaein and Lionel GAUTHIER
- * \date 2013-2014
+ * \author Laurent Winckel, Sebastien ROUX, Navid Nikaein and Lionel GAUTHIER
+ * \date 2013-2016
  * \version 1.0
  * \company Eurecom
  * \email: navid.nikaein@eurecom.fr
@@ -1325,8 +1325,10 @@ int rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name
   }
 }
 
-rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
-				   rrc_eNB_ue_context_t*          const ue_context_pP){
+/*NN: careful about the typcast of xid (long -> uint8_t*/
+int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
+				   rrc_eNB_ue_context_t*          const ue_context_pP,
+				   uint8_t xid ){  
 
   MessageDef      *msg_p         = NULL;
   int e_rab;
@@ -1337,58 +1339,72 @@ rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP,
   S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id = ue_context_pP->ue_context.eNB_ue_s1ap_id;
  
   for (e_rab = 0; e_rab <  ue_context_pP->ue_context.setup_e_rabs ; e_rab++) {
-   
-       
-    if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
+
+    /* only respond to the corresponding transaction */ 
+    if (xid == ue_context_pP->ue_context.e_rab[e_rab].xid) {
+      
+      if (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
      
-      S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
-      // TODO add other information from S1-U when it will be integrated
-      S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
-      S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
-      //S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
-      ue_context_pP->ue_context.e_rab[e_rabs_done].status = E_RAB_STATUS_ESTABLISHED;
+	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
+	// TODO add other information from S1-U when it will be integrated
+	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid = ue_context_pP->ue_context.enb_gtp_teid[e_rab];
+	S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr = ue_context_pP->ue_context.enb_gtp_addrs[e_rab];
+	//S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rab].eNB_addr.length += 4;
+	ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
+	
+	LOG_I (RRC,"enb_gtp_addr (msg index %d, context index %d, status %d, xid %d): nb_of_e_rabs %d,  e_rab_id %d, teid: %u, addr: %d.%d.%d.%d \n ",
+	       e_rabs_done,  e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid,
+	       ue_context_pP->ue_context.nb_of_e_rabs,
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id,
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid,
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[0],
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[1],
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[2],
+	       S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[3]);
+	
+	e_rabs_done++;
+      } else if ((ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_NEW)  || 
+		 (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)){
+	LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
+      }else { /* to be improved */
+	ue_context_pP->ue_context.e_rab[e_rab].status = E_RAB_STATUS_FAILED;
+	S1AP_E_RAB_SETUP_RESP  (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
+	e_rabs_failed++;
+	// TODO add cause when it will be integrated
+      }
       
-      LOG_I (RRC,"enb_gtp_addr (msg index %d, context index %d, status %d): nb_of_e_rabs %d,  e_rab_id %d, teid: %u, addr: %d.%d.%d.%d \n ",
-	     e_rabs_done,  e_rab, ue_context_pP->ue_context.e_rab[e_rab].status,
-	     ue_context_pP->ue_context.nb_of_e_rabs,
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].e_rab_id,
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].gtp_teid,
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[0],
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[1],
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[2],
-	     S1AP_E_RAB_SETUP_RESP (msg_p).e_rabs[e_rabs_done].eNB_addr.buffer[3]);
+      
+      S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
+      S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
+      // NN: add conditions for e_rabs_failed 
+      if ((e_rabs_done > 0) ){  
+
+	LOG_I(RRC,"S1AP_E_RAB_SETUP_RESP: sending the message: nb_of_erabs %d, total e_rabs %d, index %d \n",
+	      ue_context_pP->ue_context.nb_of_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
+	MSC_LOG_TX_MESSAGE(
+			   MSC_RRC_ENB,
+			   MSC_S1AP_ENB,
+			   (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
+			   sizeof(s1ap_e_rab_setup_resp_t),
+			   MSC_AS_TIME_FMT" E_RAB_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
+			   MSC_AS_TIME_ARGS(ctxt_pP),
+			   ue_context_pP->ue_id_rnti,
+			   S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
+			   e_rabs_done, e_rabs_failed);
+	
+	
+	itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
+      }
 
-      e_rabs_done++;
-    } else if ((ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_NEW)  || 
-	       (ue_context_pP->ue_context.e_rab[e_rab].status == E_RAB_STATUS_ESTABLISHED)){
-      LOG_D (RRC,"E-RAB is NEW or already ESTABLISHED\n");
-    }else {
-      ue_context_pP->ue_context.e_rab[e_rabs_failed].status = E_RAB_STATUS_FAILED;
-      S1AP_E_RAB_SETUP_RESP  (msg_p).e_rabs_failed[e_rabs_failed].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
-      e_rabs_failed++;
-      // TODO add cause when it will be integrated
+    } else {
+      /*debug info for the xid */ 
+      LOG_D (RRC,"xid does not corresponds  (context e_rab index %d, status %d, xid %d) \n ",
+	     e_rab, ue_context_pP->ue_context.e_rab[e_rab].status, xid);
     }
+    
   }
   
-  LOG_I(RRC,"S1AP_E_RAB_SETUP_RESP: nb_of_erabs %d, total e_rabs %d, index %d \n",
-	ue_context_pP->ue_context.nb_of_e_rabs, ue_context_pP->ue_context.setup_e_rabs, e_rab);
-  MSC_LOG_TX_MESSAGE(
-    MSC_RRC_ENB,
-    MSC_S1AP_ENB,
-    (const char *)&S1AP_E_RAB_SETUP_RESP (msg_p),
-    sizeof(s1ap_e_rab_setup_resp_t),
-    MSC_AS_TIME_FMT" E_RAB_SETUP_RESP UE %X eNB_ue_s1ap_id %u e_rabs:%u succ %u fail",
-    MSC_AS_TIME_ARGS(ctxt_pP),
-    ue_context_pP->ue_id_rnti,
-    S1AP_E_RAB_SETUP_RESP (msg_p).eNB_ue_s1ap_id,
-    e_rabs_done, e_rabs_failed);
-
-
-  S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs = e_rabs_done;
-  S1AP_E_RAB_SETUP_RESP (msg_p).nb_of_e_rabs_failed = e_rabs_failed;
-  if ((e_rabs_done > 0) )
-    itti_send_msg_to_task (TASK_S1AP, ctxt_pP->instance, msg_p);
-      
+  return 0;
 }
 
 # endif /* defined(ENABLE_ITTI) */
diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.h b/openair2/RRC/LITE/rrc_eNB_S1AP.h
index ea797e8c20de80664e889f94cd11a5e65b48e81c..55f501ec070edcb31262060083aa6f9f90b59589 100644
--- a/openair2/RRC/LITE/rrc_eNB_S1AP.h
+++ b/openair2/RRC/LITE/rrc_eNB_S1AP.h
@@ -164,6 +164,25 @@ int rrc_eNB_process_S1AP_DOWNLINK_NAS(MessageDef *msg_p, const char *msg_name, i
  */
 int rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance);
 
+
+/*! \fn rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance);
+ *\brief process a S1AP dedicated E_RAB setup request message received from S1AP.
+ *\param msg_p Message received by RRC.
+ *\param msg_name Message name.
+ *\param instance Message instance.
+ *\return 0 when successful, -1 if the UE index can not be retrieved.
+ */
+int rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance);
+
+/*! \fn rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP, rrc_eNB_ue_context_t*  const ue_context_pP, uint8_t xid )
+ *\brief send a S1AP dedicated E_RAB setup response
+ *\param ctxt_pP contxt infirmation
+ *\param e_contxt_pP ue specific context at the eNB
+ *\param xid transaction identifier 
+ *\return 0 when successful, -1 if the UE index can not be retrieved.
+ */
+int rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(const protocol_ctxt_t* const ctxt_pP, rrc_eNB_ue_context_t*  const ue_context_pP, uint8_t xid );  
+
 /*! \fn rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(MessageDef *msg_p, const char *msg_name, instance_t instance)
  *\brief process a S1AP_UE_CTXT_MODIFICATION_REQ message received from S1AP.
  *\param msg_p Message received by RRC.
diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c
index e4ee06d0a480ac8d86123cd6fe536745a381b360..dea02f2bba2b50c7ac421480782a1f547cccb4c9 100644
--- a/targets/ARCH/COMMON/common_lib.c
+++ b/targets/ARCH/COMMON/common_lib.c
@@ -103,14 +103,18 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
   if (flag == BBU_LOCAL_RADIO_HEAD) {
       lib_handle = dlopen(OAI_RF_LIBNAME, RTLD_LAZY);
       if (!lib_handle) {
-	printf( "Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME);
-	return 0;
+	fprintf(stderr,"Unable to locate %s: HW device set to NONE_DEV.\n", OAI_RF_LIBNAME);
+	fprintf(stderr,"%s\n",dlerror());
+	return -1;
       } 
       
       dp = dlsym(lib_handle,"device_init");
       
       if (dp != NULL ) {
-	dp(device,openair0_cfg);
+	if (dp(device,openair0_cfg)!=0) {
+	  fprintf(stderr,"Error initializing device\n");
+	  return -1;
+	}
       } else {
 	fprintf(stderr, "%s %d:oai device intializing function not found %s\n", __FILE__, __LINE__, dlerror());
 	return -1;
@@ -119,7 +123,8 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
       lib_handle = dlopen(OAI_TP_LIBNAME, RTLD_LAZY);
       if (!lib_handle) {
 	printf( "Unable to locate %s: transport protocol set to NONE_TP.\n", OAI_TP_LIBNAME);
-	return 0;
+	printf( "%s\n",dlerror());
+	return -1;
       } 
       
       tp = dlsym(lib_handle,"transport_init");
@@ -152,7 +157,7 @@ int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cf
     }   
   }
   #endif
-  return 0;
+  return rc;
 }
 
 int openair0_transport_load(openair0_device *device, openair0_config_t *openair0_cfg, eth_params_t * eth_params) {
@@ -164,7 +169,7 @@ int openair0_transport_load(openair0_device *device, openair0_config_t *openair0
       return -1;		   
       }   
   }
-  return 0;
+  return rc;
 
 }
 
diff --git a/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt b/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt
index 88a021ae001b40c2992653227425b50a70de9f0e..c331185e1738799cacd04857d5e7d34448f4022a 100644
--- a/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt
+++ b/targets/ARCH/LMSSDR/USERSPACE/LIB/Si5351C/CMakeLists.txt
@@ -2,7 +2,7 @@ set(si5351_src_files
 	Si5351C.cpp
 )
 set(CMAKE_CXX_FLAGS
-  "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 "
+  "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 -fPIC"
 )
 
 
diff --git a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt
index cea22ac8292c7cf8ca74e571df33cd774693667c..4613e9ce72b93fdf302268fdfc273de46b7cb780 100644
--- a/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt
+++ b/targets/ARCH/LMSSDR/USERSPACE/LIB/lms7002m/CMakeLists.txt
@@ -9,7 +9,7 @@ if(${CMAKE_MAJOR_VERSION} GREATER 2)
 endif()
 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
 if(CMAKE_COMPILER_IS_GNUCXX)
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -fPIC")
 endif()
 
 # set up include-directories
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.usrpb210.conf
index 1bf3c6fbf29d6e4edab9162ee392857eee526f7f..83f8af699e940b71861641babb4f1b5d661421c4 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band13.tm1.usrpb210.conf
@@ -133,7 +133,7 @@ eNBs =
 
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "172.27.8.52";
+    mme_ip_address      = ( { ipv4       = "192.168.12.170";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -143,10 +143,10 @@ eNBs =
     NETWORK_INTERFACES :
     {
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "172.27.8.51/23";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.241/24";
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "172.27.8.51/23";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.241/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
 
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
index eb3895dc6d60a82465550128a353274cfb00595e..14a9e4981210f8f5e7161bb04a6dff82bf4a0227 100644
--- 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
@@ -17,7 +17,7 @@ eNBs =
     
     mobile_country_code =  "208";
     
-    mobile_network_code =  "93";
+    mobile_network_code =  "95";
     
        ////////// Physical parameters:
   
@@ -132,7 +132,7 @@ eNBs =
     };
         
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "192.168.12.11";
+    mme_ip_address      = ( { ipv4       = "192.168.12.170";
                               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.12.215/24";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.241/24";
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.215/24";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.241/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 3043256628a092f51a9ca5b6121b029a298eb362..1ea7b647404ebe08dd75b6b91016c80afade717b 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
@@ -144,7 +144,6 @@ eNBs =
 
         ENB_INTERFACE_NAME_FOR_S1U               = "eth0:4";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.170.1.2/24";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.170.0.2/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
 
@@ -167,4 +166,4 @@ eNBs =
    };
 
   }
-);
+);
\ No newline at end of file