diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
index aacc87e5b0c49c18d2432224e849121879a48b8a..129ec39357f3e5d04c2435c95aea066662fca260 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.if4p5.50PRB.lo.conf
@@ -193,6 +193,7 @@ RUs = (
 	att_tx         = 0
 	att_rx         = 0;
 	eNB_instances  = [0];
+        is_slave       = "no";
     }
 );  
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
index 24ae36a0a4c7c671f0cc4ad4754f1d6b233397a6..49b2adf2f920421bab47a833e41aced641fe7937 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
@@ -14,6 +14,7 @@ RUs = (
 	max_pdschReferenceSignalPower    = -29;
 	max_rxgain                       = 120;
 	bands                            = [7,13];
+        is_slave                         = "no";
     }
 );  
 
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 15c6bb3a7b822559d084ab50e71d96c625b9a45c..4bc1058b9afcb7b776c94366f28bedbf2811a223 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -462,7 +462,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
   AssertFatal(proc->symbol_mask[*subframe]==0,"rx_fh_if4p5: proc->symbol_mask[%d] = %x\n",*subframe,proc->symbol_mask[*subframe]);
   do { 
     recv_IF4p5(ru, &f, &sf, &packet_type, &symbol_number);
-    if (oai_exit == 1) break;
+    if (oai_exit == 1 || ru->cmd== STOP_RU) break;
     if (packet_type == IF4p5_PULFFT) proc->symbol_mask[sf] = proc->symbol_mask[sf] | (1<<symbol_number);
     else if (packet_type == IF4p5_PULTICK) {           
       if ((proc->first_rx==0) && (f!=*frame)) LOG_E(PHY,"rx_fh_if4p5: PULTICK received frame %d != expected %d\n",f,*frame);       
@@ -511,8 +511,8 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
 
   proc->symbol_mask[sf] = 0;  
   VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff );
-  LOG_D(PHY,"RU %d: fh_if4p5_south_in sleeping ...\n",ru->idx);
-  usleep(100);
+  LOG_D(PHY,"RU %d: fh_if4p5_south_in returning ...\n",ru->idx);
+  //  usleep(100);
 }
 
 // Dummy FH from south for getting synchronization from master RU
@@ -1281,7 +1281,7 @@ void wakeup_eNBs(RU_t *ru) {
     sprintf(string,"Incoming RU %d",ru->idx);
     
     pthread_mutex_lock(&proc->mutex_RU);
-    LOG_I(PHY,"Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x\n",
+    LOG_D(PHY,"Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x\n",
           ru->proc.frame_rx,ru->proc.subframe_rx,ru->idx,ru->wait_cnt,ru->proc.subframe_rx,proc->RU_mask[ru->proc.subframe_rx]);
 
     if (proc->RU_mask[ru->proc.subframe_rx] == 0)
@@ -1306,7 +1306,7 @@ void wakeup_eNBs(RU_t *ru) {
     }
     
     pthread_mutex_unlock(&proc->mutex_RU);
-    LOG_I(PHY,"wakeup eNB top for for subframe %d\n", ru->proc.subframe_rx);
+    LOG_D(PHY,"wakeup eNB top for for subframe %d\n", ru->proc.subframe_rx);
     ru->eNB_top(eNB_list[0],ru->proc.frame_rx,ru->proc.subframe_rx,string);
   }
   else { // multiple eNB case for later
@@ -1820,7 +1820,7 @@ static void* ru_thread( void* param ) {
 	
   while (!oai_exit) {
   
-    if (ru->if_south != LOCAL_RF) ru->wait_cnt = 100;
+    if (ru->if_south != LOCAL_RF && ru->is_slave==1) ru->wait_cnt = 100;
     else                          ru->wait_cnt = 0;
 
     // wait to be woken up
@@ -1840,7 +1840,8 @@ static void* ru_thread( void* param ) {
 
     // if an asnych_rxtx thread exists
     // wakeup the thread because the devices are ready at this point
-	 
+	
+    LOG_I(PHY,"Locking asynch mutex\n"); 
     if ((ru->fh_south_asynch_in)||(ru->fh_north_asynch_in)) {
       pthread_mutex_lock(&proc->mutex_asynch_rxtx);
       proc->instance_cnt_asynch_rxtx=0;
@@ -1853,7 +1854,7 @@ static void* ru_thread( void* param ) {
     if ((ru->is_slave == 1) && (ru->if_south == LOCAL_RF)) do_ru_synch(ru);
 
   
-
+    LOG_I(PHY,"Starting steady-state operation\n");
     // This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
     while (ru->state == RU_RUN) {