diff --git a/openair-cn/S1AP/MESSAGES/ASN1/README b/openair-cn/S1AP/MESSAGES/ASN1/README
index 7a4220be6784a49897e3b0329923598430d467f7..6767f706f6c27a7ecc1bcdded97cbbdcec2dfb9f 100644
--- a/openair-cn/S1AP/MESSAGES/ASN1/README
+++ b/openair-cn/S1AP/MESSAGES/ASN1/README
@@ -2,7 +2,8 @@ ASN1 message from S1AP TS 36.413-8a0
 
 To successfully parse messages, the asn1c util should be patched with the patch provided (asn1cpatch.p0).
 To do so: 
-1) Get the last revision of asn1c: svn co https://github.com/vlm/asn1c/trunk -r 1516
+0) create asn1c directory
+1) Get the last revision of asn1c: svn co https://github.com/vlm/asn1c/trunk  asn1c -r 1516
 
 2) Go to asn1c directory
 3) patch -p0 < ../asn1cpatch.p0
diff --git a/openair2/RRC/LITE/MESSAGES/README.txt b/openair2/RRC/LITE/MESSAGES/README.txt
index 2d2829b6293fc97c3955ed590ba703ce91a19084..78a0bdc74126cd48a3b6289a249dd64cadcda96f 100644
--- a/openair2/RRC/LITE/MESSAGES/README.txt
+++ b/openair2/RRC/LITE/MESSAGES/README.txt
@@ -25,7 +25,10 @@ http://lionet.info/asn1c/blog/
 
 or via svn from sourceforge (version 0.9.22)
 
+For version 0.9.2:
 svn co https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk asn1c
+For the latest version:
+svn co https://github.com/vlm/asn1c/trunk asn1c
 
 and put it in the asn1c directory (you should have a second asn1c directory now). Compile it and install it locally 
 (or make sure your $PATH can find the asn1c executable) according to the instructions given (see INSTALL file)
diff --git a/targets/README.txt b/targets/README.txt
index 07136376005505b27e677398e080ec58448dc49a..b9ac2645e316a0357fbc7963520f2af4572ba369 100644
--- a/targets/README.txt
+++ b/targets/README.txt
@@ -52,7 +52,7 @@ The 3 folders have the following structures
      follow the README.txt in OPENAIR2_DIR/RRC/LITE/MESSAGES to checkou the ASN.1 RRC messages
      follow the OPENAIR2_DIR/RRC/LITE/MESSAGE/asn1c/asn1c/INSTALL to install the asn1c
      go back to $OPENAIR_TARGET and "make install" if you have not used the shell script to install asn1c 
-   - cd $OPENAIR_TARGET, and make a sanity check by doing make check   
+   - cd $OPENAIR_TARGET/SIMU/USER, and make a sanity check by doing make pre-ci (require 15 minutes)
    - Check out simple examples in $OPENAIR_TARGET/SIMU/EXAMPLES 
 
 4. to automatically bring up the oai interfaces and configure the default radio beares (usefull when sending data traffic):
diff --git a/targets/SIMU/USER/Makefile b/targets/SIMU/USER/Makefile
index c30c1cdcb5dfde05e5771ed2076aa6d6ff9765b6..dc2037af2369010459b0eeea2ff06a9655303f16 100644
--- a/targets/SIMU/USER/Makefile
+++ b/targets/SIMU/USER/Makefile
@@ -202,8 +202,8 @@ include $(OPENAIR2_DIR)/LAYER2/Makefile.inc
 include $(OPENAIR1_DIR)/SIMULATION/ETH_TRANSPORT/Makefile.inc
 include $(OPENAIR2_DIR)/RRC/NAS/Makefile.inc
 include $(OPENAIR2_DIR)/UTIL/Makefile.inc
-include $(OPENAIR2_DIR)/S1AP/Makefile.inc
-include $(OPENAIR2_DIR)/S1AP/MESSAGES/Makefile.inc
+#include $(OPENAIR2_DIR)/S1AP/Makefile.inc
+#include $(OPENAIR2_DIR)/S1AP/MESSAGES/Makefile.inc
 
 ITTI_MESSAGES_H = messages_xml.h
 
diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c
index c7f49c78a04008d53a3e5835292286df9d1e8c2e..5efa0492ba644a945ce4268d3907d022b01baa1e 100644
--- a/targets/SIMU/USER/oaisim.c
+++ b/targets/SIMU/USER/oaisim.c
@@ -372,6 +372,123 @@ static s32 UE_id = 0, eNB_id = 0;
 static s32 RN_id=0;
 #endif
 
+int itti_create_task_successful(void){
+
+#if defined(ENABLE_ITTI)
+# if defined(ENABLE_USE_MME)
+  if (itti_create_task(TASK_SCTP, sctp_eNB_task, NULL) < 0) {
+      LOG_E(EMU, "Create task failed");
+      LOG_D(EMU, "Initializing SCTP task interface: FAILED\n");
+      return -1;
+  }
+  if (itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL) < 0) {
+      LOG_E(EMU, "Create task failed");
+      LOG_D(EMU, "Initializing S1AP task interface: FAILED\n");
+      return -1;
+  }
+# endif
+
+  if (itti_create_task(TASK_ENB_APP, eNB_app_task, NULL) < 0) {
+    LOG_E(EMU, "Create task failed");
+    LOG_D(EMU, "Initializing eNB APP task interface: FAILED\n");
+    return -1;
+  }
+
+  if (itti_create_task(TASK_L2L1, l2l1_task, NULL) < 0) {
+    LOG_E(EMU, "Create task failed");
+    LOG_D(EMU, "Initializing L2L1 task interface: FAILED\n");
+    return -1;
+  }
+
+#endif  
+  return 1;
+}
+/*
+ * later, the enb task will be moved from here
+ */
+void *eNB_app_task(void *args_p) {
+#if defined(ENABLE_ITTI)
+  MessageDef *message_p;
+
+# if defined(ENABLE_USE_MME)
+    /* Trying to register each eNB */
+
+  for (eNB_id = oai_emulation.info.first_enb_local;
+       (eNB_id < (oai_emulation.info.first_enb_local + oai_emulation.info.nb_enb_local)) && (oai_emulation.info.cli_start_enb[eNB_id] == 1);
+       eNB_id++) {
+      char *mme_address_v4;
+      
+      if (EPC_MODE_ENABLED){
+	  mme_address_v4 = EPC_MODE_MME_ADDRESS;
+      }else {
+	mme_address_v4 = "192.168.12.87";
+      }
+      char *mme_address_v6 = "2001:660:5502:12:30da:829a:2343:b6cf";
+      s1ap_register_eNB_t *s1ap_register_eNB;
+      uint32_t hash;
+      
+      //note:  there is an implicit relationship between the data struct and the message name
+      message_p = itti_alloc_new_message(TASK_ENB_APP, S1AP_REGISTER_ENB);
+      
+      s1ap_register_eNB = &message_p->msg.s1ap_register_eNB;
+      
+      hash = s1ap_generate_eNB_id();
+
+      /* Some default/random parameters */
+      s1ap_register_eNB->eNB_id      = eNB_id + (hash & 0xFFFF8);
+      s1ap_register_eNB->cell_type   = CELL_MACRO_ENB;
+      s1ap_register_eNB->tac         = 0;
+      s1ap_register_eNB->mcc         = 208;
+      s1ap_register_eNB->mnc         = 34;
+      s1ap_register_eNB->default_drx = PAGING_DRX_256;
+      s1ap_register_eNB->nb_mme      = 1;
+      s1ap_register_eNB->mme_ip_address[0].ipv4 = 1;
+      s1ap_register_eNB->mme_ip_address[0].ipv6 = 0;
+      memcpy(s1ap_register_eNB->mme_ip_address[0].ipv4_address, mme_address_v4,
+	     strlen(mme_address_v4));
+      memcpy(s1ap_register_eNB->mme_ip_address[0].ipv6_address, mme_address_v6,
+	     strlen(mme_address_v6));
+      
+      itti_send_msg_to_task(TASK_S1AP, eNB_id, message_p);
+    }
+# endif
+
+    itti_mark_task_ready (TASK_ENB_APP); // at the end of init for the current task 
+
+  do {
+    // Checks if a message has been sent to L2L1 task
+    itti_receive_msg (TASK_ENB_APP, &message_p);
+    
+    if (message_p != NULL) {
+      switch (ITTI_MSG_ID(message_p)) {
+      case TERMINATE_MESSAGE:
+	itti_exit_task ();
+	break;
+	
+      case MESSAGE_TEST:
+	LOG_D(EMU, "Received %s\n", ITTI_MSG_NAME(message_p));
+	break;
+
+	/*      case MME_REGISTERED:
+	LOG_D(EMU, "Received %s\n", ITTI_MSG_NAME(message_p));
+	itti_mark_task_ready (TASK_L2L1);
+	break;
+	*/
+      default:
+	LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
+	break;
+      }
+      
+      free (message_p);
+    }
+  } while(1);
+
+  itti_terminate_tasks(TASK_ENB_APP);
+
+  return NULL;
+#endif
+
+}
 void *l2l1_task(void *args_p) {
   // Framing variables
   s32 slot, last_slot, next_slot;
@@ -388,13 +505,6 @@ void *l2l1_task(void *args_p) {
   MessageDef *message_p;
 
   itti_mark_task_ready (TASK_L2L1);
-# if defined(ENABLE_USE_MME)
-    /* Trying to register each eNB */
-    for (eNB_id = oai_emulation.info.first_enb_local;
-         (eNB_id < (oai_emulation.info.first_enb_local + oai_emulation.info.nb_enb_local)) && (oai_emulation.info.cli_start_enb[eNB_id] == 1);
-         eNB_id++)
-    {
-        char *mme_address_v4;
 
         if (EPC_MODE_ENABLED)
         {
@@ -433,7 +543,6 @@ void *l2l1_task(void *args_p) {
 
         itti_send_msg_to_task(TASK_S1AP, eNB_id, message_p);
     }
-# endif
 #endif
 
   for (frame = 0; frame < oai_emulation.info.n_frames; frame++) {
@@ -928,7 +1037,7 @@ int main(int argc, char **argv) {
 
   // get command-line options
   get_simulation_options (argc, argv); //Command-line options
-
+  
 #if defined(ENABLE_ITTI)
   itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, oai_emulation.info.itti_dump_file);
 #endif
@@ -1044,40 +1153,25 @@ int main(int argc, char **argv) {
   init_slot_isr ();
 
   t = clock ();
-
-  LOG_N(EMU, "\n\n>>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU initialization done <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
+  
+  LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU initialization done <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
 
 #if defined(ENABLE_ITTI)
-# if defined(ENABLE_USE_MME)
-  if (itti_create_task(TASK_SCTP, sctp_eNB_task, NULL) < 0) {
-      LOG_E(EMU, "Create task failed");
-      LOG_D(EMU, "Initializing SCTP task interface: FAILED\n");
-      return -1;
-  }
-  if (itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL) < 0) {
-      LOG_E(EMU, "Create task failed");
-      LOG_D(EMU, "Initializing S1AP task interface: FAILED\n");
-      return -1;
-  }
-# endif
-
-  if (itti_create_task(TASK_L2L1, l2l1_task, NULL) < 0) {
-    LOG_E(EMU, "Create task failed");
-    LOG_D(EMU, "Initializing L2L1 task interface: FAILED\n");
-    return -1;
-  }
-
   // Handle signals until all tasks are terminated
-  itti_wait_tasks_end();
+  if (itti_create_task_successful())
+    itti_wait_tasks_end();
+  else 
+    exit(-1);
 #else
+  eNB_app_task(NULL); // do nothing for the moment
   l2l1_task (NULL);
 #endif
 
   t = clock () - t;
-  printf ("rrc Duration of the simulation: %f seconds\n", ((float) t) / CLOCKS_PER_SEC);
+  LOG_I (EMU,"Duration of the simulation: %f seconds\n", ((float) t) / CLOCKS_PER_SEC);
 
   //  fclose(SINRpost);
-  LOG_I(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU Ending <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
+  LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU Ending <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
 
   free (otg_pdcp_buffer);
 
diff --git a/targets/SIMU/USER/oaisim.h b/targets/SIMU/USER/oaisim.h
index 63f734a36c06f76ab8ac2a24e9d9ea67aacfa58a..2fe5cf8d9093517ff91429eb66e46c74ffb54c68 100644
--- a/targets/SIMU/USER/oaisim.h
+++ b/targets/SIMU/USER/oaisim.h
@@ -41,6 +41,12 @@ int ulsch_abstraction(double* sinr_dB,u8 TM, u8 mcs,u16 nb_rb, u16 first_rb);
 void calc_path_loss(node_desc_t* node_tx, node_desc_t* node_rx, channel_desc_t *ch_desc, Environment_System_Config env_desc, double **SF);
 
 void do_OFDM_mod(mod_sym_t **txdataF, s32 **txdata, uint32_t frame, u16 next_slot, LTE_DL_FRAME_PARMS *frame_parms);
+
+#ifdef ENABLE_ITTI
+int itti_create_task_successful(void);
+void *eNB_app_task(void *args_p);
+void *l2l1_task(void *args_p); 
+#endif 
 #ifdef OPENAIR2
 int omv_write (int pfd,  Node_list enb_node_list, Node_list ue_node_list, Data_Flow_Unit omv_data);
 void omv_end (int pfd, Data_Flow_Unit omv_data);
diff --git a/targets/SIMU/USER/oaisim_config.c b/targets/SIMU/USER/oaisim_config.c
index 2ee2247a3f6db64251f2491559afc5661fee4719..005f9ef1e48f4b00b7adb961e8f98e7eab04a96a 100644
--- a/targets/SIMU/USER/oaisim_config.c
+++ b/targets/SIMU/USER/oaisim_config.c
@@ -418,6 +418,7 @@ int olg_config() {
   int ocg_log_level = map_str_to_int(log_level_names, oai_emulation.emulation_config.log_emu.level);
   int ocg_log_verbosity= map_str_to_int(log_verbosity_names, oai_emulation.emulation_config.log_emu.verbosity);
   LOG_I(EMU, "ocg log level %d, oai log level%d \n ",ocg_log_level, oai_emulation.info.g_log_level);
+  // fix me: 
   oai_emulation.info.g_log_level = ((oai_emulation.info.ocg_enabled == 1) && (ocg_log_level != -1)) ? ocg_log_level : oai_emulation.info.g_log_level;
   oai_emulation.info.g_log_verbosity = (((oai_emulation.info.ocg_enabled == 1) && (ocg_log_verbosity != -1)) ? ocg_log_verbosity : 
 					map_str_to_int(log_verbosity_names, oai_emulation.info.g_log_verbosity));
diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c
index 07fa71b1c9a0c6b25de4acc1b1f9e5b99bff8535..60d4af8fa46ad564bc6c5700806aba3f5a570c95 100644
--- a/targets/SIMU/USER/oaisim_functions.c
+++ b/targets/SIMU/USER/oaisim_functions.c
@@ -375,7 +375,7 @@ void get_simulation_options(int argc, char *argv[]) {
                ip_length > 16 ? 16 : ip_length);
       }
 #else
-      printf("You enabled MME mode without MME support...\n");
+      printf("You enabled MME mode without compiling using ENABLE_USE_MME=1 ...\n");
 #endif
       break;
     case 'o':
diff --git a/targets/TEST/OAI/case01.py b/targets/TEST/OAI/case01.py
index f6dc874f3bcf26725d08120ad3823b7068b70ab9..e2ab307ef3f41390e3698295102ffc71ef28930b 100644
--- a/targets/TEST/OAI/case01.py
+++ b/targets/TEST/OAI/case01.py
@@ -41,10 +41,9 @@ import core
 makerr1 = '***'
 makerr2 = 'Error 1'
 
-def execute(oai, user, pw, logfile):
+def execute(oai, user, pw, logfile,logdir):
     
     case = '01'
-    logs_dir = 'pre-ci-logs';
     oai.send('cd $OPENAIR_TARGETS;')   
  
     try:
@@ -65,13 +64,14 @@ def execute(oai, user, pw, logfile):
         log.ok(case, test, name, conf, '', logfile)
     
     oai.send('cd SIMU/USER;')   
-    oai.send('mkdir ' + logs_dir + ';')
+    oai.send('mkdir ' + logdir + ';')
     
     try:
         test = '01'
         name = 'Compile oai.rel8.make'
         conf = 'make'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = "check the compilation errors for oai"
         oai.send('make cleanall;')
         oai.send('make cleanasn1;')
@@ -79,7 +79,7 @@ def execute(oai, user, pw, logfile):
         oai.send_expect_false('make -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel8;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
@@ -92,14 +92,16 @@ def execute(oai, user, pw, logfile):
         oai.send('rm -f ./oaisim.rel8.nas;')
         oai.send('rm -f ./nasmesh;')
         oai.send('make nasmesh_clean;')
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_1.txt;'
+        trace = logdir + '/log_' + case + test + '_1.txt;'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('make nasmesh_fix' + tee, makerr1,  60)
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_2.txt;'
+        trace = logdir + '/log_' + case + test + '_2.txt;'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('make NAS=1 -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel8.nas;')
         
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
     
@@ -110,14 +112,15 @@ def execute(oai, user, pw, logfile):
         test = '03'
         name = 'Compile oai.rel8.rf.make' 
         conf = 'make RTAI=0 Rel8=1'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for Rel8'
         oai.send('make cleanall;')
         oai.send('rm -f ./oaisim.rel8.rf;')
         oai.send_expect_false('make RTAI=0 -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel8.rf;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
@@ -128,14 +131,15 @@ def execute(oai, user, pw, logfile):
         test = '04'
         name = 'Compile oai.rel8.phy.dlsim.make' 
         conf = 'make dlsim'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for dlsim in $OPENAIR1_DIR/SIMULATION/LTE_PHY'
         oai.send('make clean;')
         oai.send('rm -f ./dlsim.rel8;')
         oai.send_expect_false('make dlsim -j4' + tee, makerr1,  1500)
         oai.send('cp ./dlsim ./dlsim.rel8;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -143,14 +147,15 @@ def execute(oai, user, pw, logfile):
         test = '05'
         name = 'Compile oai.rel8.phy.ulsim.make' 
         conf = 'make ulsim'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for dlsim in $OPENAIR1_DIR/SIMULATION/LTE_PHY'
         oai.send('make clean;')
         oai.send('rm -f ./ulsim.rel8;')
         oai.send_expect_false('make ulsim -j4' + tee, makerr1,  1500)
         oai.send('cp ./ulsim ./ulsim.rel8;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
     
@@ -161,7 +166,8 @@ def execute(oai, user, pw, logfile):
         test = '06'
         name = 'Compile oai.rel10.make' 
         conf = 'make Rel10=1'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for Rel10'
         oai.send('make clean;')
         oai.send('make cleanall;')
@@ -170,7 +176,7 @@ def execute(oai, user, pw, logfile):
         oai.send_expect_false('make Rel10=1 -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel10;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -178,7 +184,7 @@ def execute(oai, user, pw, logfile):
         #test = '07'
         #name = 'Compile oai.rel8.cellular.eNB.make'
         #conf = 'make rrc_cellular=1 eNB_flag=1'
-        #tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        #tee = ' | tee ' + logdir + '/log_' + case + test + '.txt;'
         #diag = 'check the compilation errors for eNB/RG RRC Cellular'
         #oai.send('make clean;')
         #oai.send('make cleanall;')
@@ -197,7 +203,7 @@ def execute(oai, user, pw, logfile):
         #test = '08'
         #name = 'Compile oai.rel8.cellular.UE.make'
         #conf = 'make rrc_cellular=1 UE_flag=1'
-        #tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        #tee = ' | tee ' + logdir + '/log_' + case + test + '.txt;'
         #diag = 'check the compilation errors for UE/MT RRC Cellular'
         #oai.send('make clean;')
         #oai.send('make cleanall;')
@@ -216,7 +222,7 @@ def execute(oai, user, pw, logfile):
         #test = '09'
         #name = 'Compile oai.rel8.cellular.nas.eNB'
         #conf = 'make nas_sim_rg_cellular'
-        #tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        #tee = ' | tee ' + logdir + '/log_' + case + test + '.txt;'
         #diag = 'check the compilation errors for NAS SIM RRC Cellular (node RG)'
         #oai.send('make clean;')
         #oai.send('make cleanall;')
@@ -235,7 +241,7 @@ def execute(oai, user, pw, logfile):
         #test = '10'
         #name = 'Compile oai.rel8.cellular.nas.UE'
         #conf = 'make nas_sim_mt_cellular'
-        #tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        #tee = ' | tee ' + logdir + '/log_' + case + test + '.txt;'
         #diag = 'check the compilation errors for NAS SIM RRC Cellular (node MT)'
         #oai.send('make clean;')
         #oai.send('make cleanall;')
@@ -254,7 +260,8 @@ def execute(oai, user, pw, logfile):
         test = '11'
         name = 'Compile oai.rel8.itti.make' 
         conf = 'make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel8=1'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for ITTI Rel8'
         oai.send('make clean;')
         oai.send('make cleanall;')
@@ -263,14 +270,15 @@ def execute(oai, user, pw, logfile):
         oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel8=1 -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel8.itti;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
     try:
         test = '12'
         name = 'Compile oai.rel10.itti.make' 
         conf = 'make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel10=1'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt;'
+        trace = logdir + '/log_' + case + test + '.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'check the compilation errors for ITTI Rel10'
         oai.send('make clean;')
         oai.send('make cleanall;')
@@ -279,7 +287,7 @@ def execute(oai, user, pw, logfile):
         oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel10=1 -j4' + tee, makerr1,  1500)
         oai.send('cp ./oaisim ./oaisim.rel10.itti;')
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
diff --git a/targets/TEST/OAI/case02.py b/targets/TEST/OAI/case02.py
index 7cf7d7c83d0656d40008ef183b92b702c5036c47..c4ca1100bc8389b9193f4935e2948495f2ca762f 100644
--- a/targets/TEST/OAI/case02.py
+++ b/targets/TEST/OAI/case02.py
@@ -44,28 +44,29 @@ NUM_UE=2
 NUM_eNB=1
 NUM_TRIALS=3
 
-def execute(oai, user, pw, logfile):
+def execute(oai, user, pw, logfile,logdir):
     
     case = '02'
-    logs_dir = 'pre-ci-logs';
     oai.send('cd $OPENAIR_TARGETS;')
     oai.send('cd SIMU/USER;')
-    oai.send('mkdir ' + logs_dir + ';')
     
     try:
         test = '00'
         name = 'Run oai.rel8.sf'
         conf = '-a -A AWGN -n 100'
         diag = 'OAI is not running normally (Segmentation fault / Exiting / FATAL), debugging might be needed'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_1.txt'
+        trace = logdir + '/log_' + case + test + '_1.txt;'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'Segmentation fault', 30)
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_2.txt'
+        trace = logdir + '/log_' + case + test + '_2.txt;'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'Exiting', 30)
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_3.txt'
+        trace = logdir + '/log_' + case + test + '_3.txt;'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel8 ' + conf + tee, 'FATAL', 30)
 
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -73,7 +74,8 @@ def execute(oai, user, pw, logfile):
         test = '01'
         name = 'Run oai.rel8.err'
         conf = '-a -A AWGN -n 100'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt'
+        trace = logdir + '/log_' + case + test + '_3.txt;'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'Error(s) found in the execution, check the execution logs'
         oai.send_expect_false('./oaisim.rel8 ' + conf, '[E]', 30)
         
@@ -89,10 +91,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-a -A AWGN -n' + str((i+1+j) * 40) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
@@ -104,7 +107,8 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-a -A AWGN -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 if user == 'root' :
                     oai.send_nowait('./oaisim.rel8.nas ' + conf + ' > /dev/null &')
                 else :    
@@ -124,7 +128,7 @@ def execute(oai, user, pw, logfile):
         oai.rm_driver(oai,user,pw)
 
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
@@ -135,10 +139,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -s15 -x1'
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -149,10 +154,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -F -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -s15 -x1'
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel8 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -163,10 +169,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-a -A AWGN -n' + str((i+1+j) * 40) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel8.itti ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
diff --git a/targets/TEST/OAI/case03.py b/targets/TEST/OAI/case03.py
index 2bc0b4c42937a227d66eb42c7934585fc013dd07..eb5c86a9da11f877e8755c15fdf86149fb9ba897 100644
--- a/targets/TEST/OAI/case03.py
+++ b/targets/TEST/OAI/case03.py
@@ -44,28 +44,29 @@ NUM_UE=2
 NUM_eNB=1
 NUM_TRIALS=3
 
-def execute(oai, user, pw, logfile):
+def execute(oai, user, pw, logfile,logdir):
     
     case = '03'
-    logs_dir = 'pre-ci-logs';
     oai.send('cd $OPENAIR_TARGETS;')
     oai.send('cd SIMU/USER;')
-    oai.send('mkdir ' + logs_dir + ';')
     
     try:
         test = '00'
         name = 'Run oai.rel10.sf'
         conf = '-a -A AWGN -n 100'
         diag = 'OAI is not running normally (Segmentation fault / Exiting / FATAL), debugging might be needed'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_1.txt'
+        trace = logdir + '/log_' + case + test + '_1.txt'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel10 ' + conf + tee, 'Segmentation fault', 30)
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_2.txt'
+        trace = logdir + '/log_' + case + test + '_2.txt'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel10 ' + conf + tee, 'Exiting', 30)
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '_3.txt'
+        trace = logdir + '/log_' + case + test + '_3.txt'
+        tee = ' 2>&1 | tee ' + trace
         oai.send_expect_false('./oaisim.rel10 ' + conf + tee, 'FATAL', 30)
 
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, di69ag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
 
@@ -73,12 +74,13 @@ def execute(oai, user, pw, logfile):
         test = '01'
         name = 'Run oai.rel10.err'
         conf = '-a -A AWGN -n 100'
-        tee = ' | tee ' + logs_dir + '/log_' + case + test + '.txt'
+        trace = logdir + '/log_' + case + test + '.txt'
+        tee = ' 2>&1 | tee ' + trace
         diag = 'Error(s) found in the execution, check the execution logs'
         oai.send_expect_false('./oaisim.rel10 ' + conf + tee, '[E]', 30)
         
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
@@ -89,10 +91,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-a -A AWGN -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)    
 
@@ -103,10 +106,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -s 15 -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)  
 
@@ -117,10 +121,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -F -s 15 -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)  
 
@@ -131,10 +136,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -s 15 -x 1 -Q3 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Found MBSFNAreaConfiguration from eNB ' + str(j),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)  
         
@@ -145,10 +151,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -s 15 -x 1 -T mscbr -Q3 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Received a multicast packet',  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, 'Note: check the packet loss from the OTG stats', logfile)   
 
@@ -159,10 +166,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -F -s 15 -x 1 -T mscbr -Q3 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10 ' + conf + tee, ' Received a multicast packet',  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, 'Note: check the packet loss from the OTG stats', logfile)   
 
@@ -185,10 +193,11 @@ def execute(oai, user, pw, logfile):
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
                 conf = '-A AWGN -s 15 -x 1 -Q3 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
-                tee = ' | tee ' + logs_dir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                trace = logdir + '/log_' + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 | tee ' + trace
                 oai.send_expect('./oaisim.rel10.itti ' + conf + tee, ' Found MBSFNAreaConfiguration from eNB ' + str(j),  (i+1) * 100)
     except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile)
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)  
         
diff --git a/targets/TEST/OAI/core.py b/targets/TEST/OAI/core.py
index d8d8f54d791729306fbcfc6db2638395861e4758..d416ba93f8d610cd4b9f0377bbd31e1bb614b073 100644
--- a/targets/TEST/OAI/core.py
+++ b/targets/TEST/OAI/core.py
@@ -79,17 +79,18 @@ class core:
                "---> " + self.clean(got) + "\n" +\
                "=============================================================================\n"
 
-    def failed(self, command, expect):
+    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" 
-        ret +="________________________________ Received _________________________________\n"
-        ret +="---> " + self.clean(self.oai.before) + "\n" 
-        ret +="_______________________________ Remaining _________________________________\n"
-        ret +="---> " + self.clean(self.oai.after) + "\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
 
@@ -129,7 +130,7 @@ class core:
     # 2) wait for a return prompt. Don't capture the response.
     # 3) Check for error or timeout.
     # ************************************************************
-    def send(self, command, timeout = 50, rsp1=None, rsp2=None):
+    def send(self, command, timeout = 50, rsp1=None, rsp2=None,debug=0):
         if not rsp1:
             rsp1 = self.prompt1
         if not rsp2:
@@ -144,7 +145,7 @@ class core:
         if self.expect_echo:
             cmd = self.oai.expect([re.escape(command), pexpect.TIMEOUT], timeout=timeout);
             if cmd != 0:
-                raise log.err(self.failed(command, command))
+                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)
@@ -158,14 +159,14 @@ class core:
                 else:
                     return 'OK'
             else:
-                raise log.err(self.failed(command, rsp1 + ' or ' + rsp2))
+                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, timeout=50, rsp1=None, rsp2=None):
+    def send_recv(self, command, timeout=50, rsp1=None, rsp2=None,debug=0):
         if not rsp1:
             rsp1 = self.prompt1
         if not rsp2:
@@ -180,7 +181,7 @@ class core:
         if index == 0 or index == 1:
             return self.oai.before
         else:
-            raise log.err(self.failed(command, rsp1 + ' or ' + rsp2))
+            raise log.err(self.failed(command, rsp1 + ' or ' + rsp2,debug))
 
            
     # **************************send_expect*************************    
@@ -188,13 +189,13 @@ class core:
     # 2) search for an expected pattern in the response
     # 3) return a error if not found
     # **************************************************************
-    def send_expect(self, command, expect, delay = 50, rsp1=None, rsp2=None):
+    def send_expect(self, command, expect, delay = 50, rsp1=None, rsp2=None,debug=0):
         rsp = self.send_recv(command, delay, rsp1, rsp2)
     #   print rsp
         if  (rsp.find(expect) != -1):
             return 'Ok'
 
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
 
            
     # **************************send_expect_re*************************    
@@ -202,27 +203,27 @@ class core:
     # 2) search for an expected pattern defined by a regular expression in the response
     # 3) return a error if not found
     # *****************************************************************
-    def send_expect_re(self, command, expect, delay = 5, rsp1=None, rsp2=None):
+    def send_expect_re(self, command, expect, delay = 5, rsp1=None, rsp2=None,debug=0):
         rsp = self.send_recv(command, delay, rsp1, rsp2)
 #        print rsp
         match = re.compile(expect).search(rsp)
         if match:
             return match
 
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
 
     # **************************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, delay = 5, rsp1=None, rsp2=None):
+    def send_expect_false(self, command, expect, delay = 5, rsp1=None, rsp2=None,debug=0):
         rsp = self.send_recv(command, delay, rsp1, rsp2)
     #    print rsp
         if  (rsp.find(expect) == -1):
             return 'OK'
 
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
 
     
     # **************************send_wait*************************    
@@ -232,7 +233,7 @@ class core:
     # 4) return an error if not found after the numtries
     # 3) return the response if found
     # **************************************************************
-    def send_wait(self, command, expect, numretries=3, rsp1=None, rsp2=None):
+    def send_wait(self, command, expect, numretries=3, rsp1=None, rsp2=None,debug=0):
         timer = 0
         for i in range(numretries):
             rsp = self.send_recv(command, 10, rsp1, rsp2)
@@ -240,7 +241,7 @@ class core:
                 return rsp;
             time.sleep(2)
             timer = timer+2
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
     
     # **************************send_wait_re*************************    
     # 1) send a command, and optionally specify a the time to wait
@@ -249,7 +250,7 @@ class core:
     # 4) return an error if not found after the numtries
     # 3) return the response if found
     # **************************************************************
-    def send_wait_re(self, command, expect, numretries=3, rsp1=None, rsp2=None):
+    def send_wait_re(self, command, expect, numretries=3, rsp1=None, rsp2=None,debug=0):
         timer = 0
         for i in range(numretries):
             rsp = self.send_recv(command)
@@ -258,7 +259,7 @@ class core:
                 return rsp;
             time.sleep(2)
             timer = timer+2
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
     
     # **************************send_wait_false*************************    
     # 1) send a command, and optionally specify a the time to wait
@@ -266,7 +267,7 @@ class core:
     # 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, numretries=3, rsp1=None, rsp2=None):
+    def send_wait_false(self, command, expect, numretries=3, rsp1=None, rsp2=None,debug=0):
         timer = 1
         for i in range(numretries):
             rsp = self.send_recv(command)
@@ -274,7 +275,7 @@ class core:
                 return rsp;
             time.sleep(2)
             timer = timer+2
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
     
     # **************************send_wait_false*************************    
     # 1) send a command, and optionally specify a the time to wait
@@ -282,7 +283,7 @@ class core:
     # 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, numretries=3, rsp1=None, rsp2=None):
+    def send_wait_false_re(self, command, expect, numretries=3, rsp1=None, rsp2=None,debug=0):
         timer = 0
         for i in range(numretries):
             rsp = self.send_recv(command)
@@ -290,7 +291,7 @@ class core:
                 return rsp;
             time.sleep(2)
             timer = timer+2
-        raise log.err(self.failed(command, expect))
+        raise log.err(self.failed(command, expect,debug))
     
     # **************************find*************************    
     # 1) find an exact pattern in a given string 
diff --git a/targets/TEST/OAI/log.py b/targets/TEST/OAI/log.py
index 20b01fd2fa57fbfb72b285d5d3d002452aa52471..ef562506379e6685ab16763e5be6b416311a0f9a 100644
--- a/targets/TEST/OAI/log.py
+++ b/targets/TEST/OAI/log.py
@@ -128,12 +128,14 @@ def log_record(level, message):
     else : 
         print message
 
-def fail(case, testnum, testname, conf,  message, diag, output):
+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):
diff --git a/targets/TEST/OAI/test01.py b/targets/TEST/OAI/test01.py
index 23441ddc6d704138480170536264125ebf920459..5b437b1064053749a5d995b92eee25b1c8dbeaf3 100644
--- a/targets/TEST/OAI/test01.py
+++ b/targets/TEST/OAI/test01.py
@@ -97,6 +97,9 @@ except :
 test = 'test01'
 ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d.%Hh%M")
 logfile = user+'.'+test+'.'+ctime+'.txt'  
+logdir = 'pre-ci-logs';
+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')
@@ -106,9 +109,9 @@ oai.kill(user, pw)
 oai.rm_driver(oai,user,pw)
 
 # start te test cases 
-case01.execute(oai, user, pw, logfile)
-case02.execute(oai, user, pw, logfile)
-case03.execute(oai, user, pw, logfile)
+case01.execute(oai, user, pw, logfile,logdir)
+case02.execute(oai, user, pw, logfile,logdir)
+case03.execute(oai, user, pw, logfile,logdir)
 
 oai.kill(user, pw) 
 oai.rm_driver(oai,user,pw)