diff --git a/openair1/SCHED/defs.h b/openair1/SCHED/defs.h
index 8f287ea2bee91034920d571b5be4e520e488b4a6..41507a5151bccf83b0b7d50fc7df4c6fe288fb70 100644
--- a/openair1/SCHED/defs.h
+++ b/openair1/SCHED/defs.h
@@ -531,6 +531,8 @@ int16_t get_hundred_times_delta_IF_eNB(PHY_VARS_eNB *phy_vars_eNB,uint8_t UE_id,
 
 int16_t get_hundred_times_delta_IF_mac(module_id_t module_idP, uint8_t CC_id, rnti_t rnti, uint8_t harq_pid);
 
+int16_t get_target_ul_rx_power(module_id_t module_idP, uint8_t CC_id);
+
 int get_ue_active_harq_pid(uint8_t Mod_id,uint8_t CC_id,uint16_t rnti,int frame, uint8_t subframe,uint8_t *harq_pid,uint8_t *round,uint8_t ul_flag);
 
 void ulsch_decoding_procedures(unsigned char last_slot, unsigned int i, PHY_VARS_eNB *phy_vars_eNB, unsigned char abstraction_flag);
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index ed4cc1dcad6fe8df9caba96968d6cc02d29d9d4d..6ddde6d7f93ec89dcdfe50705516843d009fcf1f 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -367,6 +367,10 @@ int get_nCCE_offset(unsigned char L, int nCCE, int common_dci, unsigned short rn
   }
 }
 
+int16_t get_target_ul_rx_power(module_id_t module_idP, uint8_t CC_id) {
+  return PHY_vars_eNB_g[module_idP][CC_id]->PHY_measurements_eNB[0].n0_power_tot_dBm;
+}
+
 #ifdef EMOS
 void phy_procedures_emos_eNB_TX(unsigned char next_slot, PHY_VARS_eNB *phy_vars_eNB) {
 
@@ -2914,15 +2918,6 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
       stop_meas(&phy_vars_eNB->ulsch_demodulation_stats);	      	      	  
 
 
-      for (j=0;j<phy_vars_eNB->lte_frame_parms.nb_antennas_rx;j++)
-	//this is the RSSI per RB
-	phy_vars_eNB->eNB_UE_stats[i].UL_rssi[j] = 
-	  dB_fixed(phy_vars_eNB->lte_eNB_pusch_vars[i]->ulsch_power[j]*
-		   (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb*12)/
-		   phy_vars_eNB->lte_frame_parms.ofdm_symbol_size) -
-	  phy_vars_eNB->rx_total_gain_eNB_dB -
-	  hundred_times_log10_NPRB[phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb-1]/100;
-
       start_meas(&phy_vars_eNB->ulsch_decoding_stats);
       if (abstraction_flag == 0) {
 	ret = ulsch_decoding(phy_vars_eNB,
@@ -3000,14 +2995,20 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
       }
     
       if (ret == (1+MAX_TURBO_ITERATIONS)) {
+
+	/*
+	if (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round>0) {
+	  dump_ulsch(phy_vars_eNB, sched_subframe, i);
+	  mac_xface->macphy_exit("retransmission in error");
+	}
+	*/
+
 	phy_vars_eNB->eNB_UE_stats[i].ulsch_round_errors[harq_pid][phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round]++;
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active = 1;
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_ACK = 0;
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round++;
 
 	LOG_D(PHY,"[eNB][PUSCH %d] Increasing to round %d\n",harq_pid,phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round);
-	//	dump_ulsch(phy_vars_eNB, sched_subframe, i);
-	//	exit(-1);
 
 	if (phy_vars_eNB->ulsch_eNB[i]->Msg3_flag == 1) {
 	  LOG_I(PHY,"[eNB %d][RAPROC] frame %d, subframe %d, UE %d: Error receiving ULSCH (Msg3), round %d/%d\n",
@@ -3096,6 +3097,9 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
 	  if (phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors == ULSCH_max_consecutive_errors) {
 	    LOG_I(PHY,"[eNB %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, removing UE\n",
 		  phy_vars_eNB->Mod_id,frame,subframe, i, phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors);
+
+	    mac_xface->macphy_exit("Consecutive error count reached");
+
 	    phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
 #ifdef OPENAIR2
 	    /*	    mac_xface->cancel_ra_proc(phy_vars_eNB->Mod_id,
@@ -3113,6 +3117,16 @@ void phy_procedures_eNB_RX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
 	      phy_vars_eNB->Mod_id,harq_pid,
 	      frame,subframe);	    
 
+	for (j=0;j<phy_vars_eNB->lte_frame_parms.nb_antennas_rx;j++)
+	  //this is the RSSI per RB
+	  phy_vars_eNB->eNB_UE_stats[i].UL_rssi[j] = 
+	    dB_fixed(phy_vars_eNB->lte_eNB_pusch_vars[i]->ulsch_power[j]*
+		     (phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb*12)/
+		     phy_vars_eNB->lte_frame_parms.ofdm_symbol_size) -
+	    phy_vars_eNB->rx_total_gain_eNB_dB -
+	    hundred_times_log10_NPRB[phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb-1]/100 -
+	    get_hundred_times_delta_IF_eNB(phy_vars_eNB,i,harq_pid)/100;
+
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active = 1;
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_ACK = 1;
 	phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->round = 0;
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index f526ecf78c33fb1683e620fecc2f1b8dbe1b9b15..483c1b87f58504d90beab35303dbddd268ddc997 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -571,6 +571,7 @@ void schedule_ulsch_rnti(module_id_t   module_idP,
   int32_t                buffer_occupancy=0;
   uint32_t                cqi_req,cshift,ndi,mcs,rballoc,tpc;
   int32_t                 normalized_rx_power, target_rx_power=-85;
+  static int32_t          tpc_accumulated=0;
 
   int n,CC_id;
   eNB_MAC_INST      *eNB=&eNB_mac_inst[module_idP];
@@ -654,23 +655,27 @@ void schedule_ulsch_rnti(module_id_t   module_idP,
 	      //compute the expected ULSCH RX power (for the stats)
 
 	      // this is the normalized RX power and this should be constant (regardless of mcs
-	      //todo: put this function into mac_xface
-	      normalized_rx_power = eNB_UE_stats->UL_rssi[0] -  
-		mac_xface->get_hundred_times_delta_TF(module_idP,CC_id,rnti,harq_pid)/100; 
+	      normalized_rx_power = eNB_UE_stats->UL_rssi[0];   
+	      //-mac_xface->get_hundred_times_delta_TF(module_idP,CC_id,rnti,harq_pid)/100; 
+	      //target_rx_power = mac_xface->get_target_ul_rx_power(module_idP,CC_id)+5;
 	      // this assumes accumulated tpc
 	      if (subframeP==0) {
-		if (normalized_rx_power>(target_rx_power+1))
+		if (normalized_rx_power>(target_rx_power+1)) {
 		  tpc = 0; //-1
-		else if (normalized_rx_power<(target_rx_power-1))
+		  tpc_accumulated--;
+		}
+		else if (normalized_rx_power<(target_rx_power-1)) {
 		  tpc = 2; //+1
+		  tpc_accumulated++;
+		}
 		else 
 		  tpc = 1; //0
 	      }
 	      else 
 		tpc = 1; //0
 
-	      //	      LOG_I(MAC,"[eNB %d] ULSCH scheduler: harq_pid %d, Ndi %d, mcs %d, tpc %d, normalized/target rx power %d/%d\n",module_idP,harq_pid,ndi,mcs,tpc,normalized_rx_power,target_rx_power);
-
+	      LOG_D(MAC,"[eNB %d] ULSCH scheduler: subframe %d, harq_pid %d, tpc %d, accumulated %d, normalized/target rx power %d/%d\n",module_idP,subframeP,harq_pid,tpc,tpc_accumulated,normalized_rx_power,target_rx_power);
+ 
 	      	      
 	      // new transmission 
 	      if (round==0) {
diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c
index cf9d134edef4f440eba1231cdb2681664fd9eacc..f1812e072962e2f67567d4a62f1af2ef35fccd39 100644
--- a/openair2/LAYER2/MAC/main.c
+++ b/openair2/LAYER2/MAC/main.c
@@ -498,6 +498,7 @@ int l2_init(LTE_DL_FRAME_PARMS *frame_parms,int eMBMS_active, uint8_t cba_group_
   mac_xface->get_mu_mimo_mode           = get_mu_mimo_mode;
 
   mac_xface->get_hundred_times_delta_TF = get_hundred_times_delta_IF_mac;
+  mac_xface->get_target_ul_rx_power     = get_target_ul_rx_power;
 
 #ifdef Rel10
   mac_xface->get_mch_sdu                 = get_mch_sdu;
diff --git a/openair2/PHY_INTERFACE/defs.h b/openair2/PHY_INTERFACE/defs.h
index 0ef6fc5fd3dc6bc227556d5316dec75cda5aff33..c1b301c0d7c9494c1430e55c9b17501df24daafc 100755
--- a/openair2/PHY_INTERFACE/defs.h
+++ b/openair2/PHY_INTERFACE/defs.h
@@ -310,6 +310,8 @@ typedef struct
 
     int16_t (*get_hundred_times_delta_TF) (module_id_t module_idP, uint8_t CC_id, rnti_t rnti, uint8_t harq_pid);
 
+    int16_t (*get_target_ul_rx_power) (module_id_t module_idP, uint8_t CC_id);
+
     unsigned char is_cluster_head;
     unsigned char is_primary_cluster_head;
     unsigned char is_secondary_cluster_head;
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
index 074ca48ec6b5dfe36431642c25e6876608a6a9d3..90e0c4b8a029266f31b3edd0bd67b4c49e2648fd 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -106,6 +106,8 @@ int errno;
 # endif
 #endif
 
+//#define XER_PRINT
+
 typedef struct xer_sprint_string_s
 {
     char *string;
@@ -1448,7 +1450,7 @@ uint8_t do_RRCConnectionSetup(uint8_t Mod_id,
   //assign_enum(&physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled,
   // UplinkPowerControlDedicated__deltaMCS_Enabled_en1);
   physicalConfigDedicated2->uplinkPowerControlDedicated->deltaMCS_Enabled= UplinkPowerControlDedicated__deltaMCS_Enabled_en1;
-  physicalConfigDedicated2->uplinkPowerControlDedicated->accumulationEnabled = 1;  // FALSE
+  physicalConfigDedicated2->uplinkPowerControlDedicated->accumulationEnabled = 1;  // TRUE
   physicalConfigDedicated2->uplinkPowerControlDedicated->p0_UE_PUCCH = 0; // 0 dB
   physicalConfigDedicated2->uplinkPowerControlDedicated->pSRS_Offset = 0; // 0 dB
   physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated->filterCoefficient));
@@ -1590,6 +1592,9 @@ uint8_t do_RRCConnectionSetup(uint8_t Mod_id,
 #endif
 
 
+#ifdef XER_PRINT
+  xer_fprint(stdout, &asn_DEF_DL_CCCH_Message, (void*)&dl_ccch_msg);
+#endif
   enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message,
                                    (void*)&dl_ccch_msg,
                                    buffer,
diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c
index dacd0a85a16ff5985cd835e13477ed2986f6ec7a..05355002a84c06300aba32beccd83292ddc3c75c 100644
--- a/openair2/RRC/LITE/rrc_eNB.c
+++ b/openair2/RRC/LITE/rrc_eNB.c
@@ -2843,7 +2843,7 @@ int rrc_eNB_decode_ccch(
 		rrcConnectionReestablishmentRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
 
                 LOG_I(RRC, "[eNB %d] Frame %d UE %d: RRCConnectionReestablishmentRequest cause %s\n", enb_mod_idP,
-                      frameP, 
+                      frameP, ue_mod_id,
 		      ((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ?    "Other Failure" :
 		       (rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" : 
 		                                                                                                            "reconfigurationFailure"));
@@ -2862,8 +2862,8 @@ int rrc_eNB_decode_ccch(
 		}else {
 		  rrc_eNB_generate_RRCConnectionReestablishementReject(enb_mod_idP, frameP, ue_mod_id);
 		}
-                break;
 		*/
+                break;
             case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
 #ifdef RRC_MSG_PRINT
 	      LOG_F(RRC,"[MSG] RRC Connection Request\n");
diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.c b/openair2/RRC/LITE/rrc_eNB_S1AP.c
index dcd525b014db6163d28d376499558940abf6cddc..44900bd57fea18fb4cf62206122328ed890bde8f 100644
--- a/openair2/RRC/LITE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LITE/rrc_eNB_S1AP.c
@@ -832,7 +832,7 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
     return (-1);
   }
   else {
-      rrc_eNB_generate_RRCConnectionRelease(instance, 0 /*frame*/, ue_index);
+    //rrc_eNB_generate_RRCConnectionRelease(instance, 0 /*frame*/, ue_index);
       LOG_W(RRC,
               "[eNB %d] In S1AP_UE_CONTEXT_RELEASE_COMMAND: TODO call rrc_eNB_connection_release for eNB %d\n",
               instance,
diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.c b/openair2/UTIL/LOG/vcd_signal_dumper.c
index e6b5367b9cdc6797c3271ce1d229dbe758a5650b..3e28aeafeba60ff1d390d1f0b16107d0482c4a38 100644
--- a/openair2/UTIL/LOG/vcd_signal_dumper.c
+++ b/openair2/UTIL/LOG/vcd_signal_dumper.c
@@ -245,7 +245,7 @@ RTIME start;
 
 # define VCD_POLL_DELAY         (500)           // Poll delay in micro-seconds
 # define VCD_MAX_WAIT_DELAY     (200 * 1000)    // Maximum data ready wait delay in micro-seconds
-# define VCD_FIFO_NB_ELEMENTS   (1 << 20)       // Must be a power of 2
+# define VCD_FIFO_NB_ELEMENTS   (1 << 24)       // Must be a power of 2
 # define VCD_FIFO_MASK          (VCD_FIFO_NB_ELEMENTS - 1)
 
 typedef struct vcd_queue_user_data_s {
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
index 1a922a166bfff975d19d72af364ef066047b67a9..26b6f31ef308ef31b81eb9408c51bfb1dfd4332a 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
@@ -30,7 +30,7 @@ eNBs =
                            tdd_config_s            			      = 0;
  			   prefix_type             			      = "NORMAL";
   			   eutra_band              			      = 7;
-                           downlink_frequency      			      = 2660000000L;
+                           downlink_frequency      			      = 2680000000L;
                            uplink_frequency_offset 			      = -120000000;
   			   Nid_cell					      = 0;
                            N_RB_DL                 			      = 25;
@@ -39,7 +39,7 @@ eNBs =
                            nb_antennas_rx          			      = 1; 
 			   tx_gain                                            = 20;
 			   rx_gain                                            = 20;
-                           prach_root              			      = 22;
+                           prach_root              			      = 0;
                            prach_config_index      			      = 0;
                            prach_high_speed        			      = "DISABLE";
   	                   prach_zero_correlation  			      = 1;
@@ -57,7 +57,7 @@ eNBs =
      	                   pusch_groupHoppingEnabled  			      = "ENABLE";
 	                   pusch_groupAssignment      			      = 0;
 	                   pusch_sequenceHoppingEnabled		   	      = "DISABLE";
-	                   pusch_nDMRS1                                       = 1;
+	                   pusch_nDMRS1                                       = 0;
 	                   phich_duration                                     = "NORMAL";
 	                   phich_resource                                     = "ONESIXTH";
 	                   srs_enable                                         = "DISABLE";
@@ -123,19 +123,19 @@ eNBs =
     
     log_config : 
     {
-	global_log_level                      ="info"; 
+	global_log_level                      ="debug"; 
     	global_log_verbosity                  ="medium";
 	hw_log_level                          ="debug"; 
     	hw_log_verbosity                      ="medium";
-	phy_log_level                         ="info"; 
+	phy_log_level                         ="debug"; 
     	phy_log_verbosity                     ="medium";
-	mac_log_level                         ="info"; 
+	mac_log_level                         ="debug"; 
     	mac_log_verbosity                     ="high";
 	rlc_log_level                         ="info"; 
     	rlc_log_verbosity                     ="medium";
 	pdcp_log_level                        ="info"; 
     	pdcp_log_verbosity                    ="medium";
-	rrc_log_level                         ="info"; 
+	rrc_log_level                         ="debug"; 
     	rrc_log_verbosity                     ="medium";
    };	
    
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
index 2b9a3c5219442e6361d6253aa2a77aa4b4b5b8cc..019d895350a697ab8b3a33d3c8e5c0e46123f4db 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.usrpb210.conf
@@ -30,31 +30,31 @@ eNBs =
                            tdd_config_s            			      = 0;
  			   prefix_type             			      = "NORMAL";
   			   eutra_band              			      = 7;
-                           downlink_frequency      			      = 2660000000L;
+                           downlink_frequency      			      = 2680000000L;
                            uplink_frequency_offset 			      = -120000000;
   			   Nid_cell					      = 0;
                            N_RB_DL                 			      = 25;
                            Nid_cell_mbsfn          			      = 0;
                            nb_antennas_tx          			      = 1;
                            nb_antennas_rx          			      = 1; 
-			   tx_gain                                            = 120;
+			   tx_gain                                            = 90;
 			   rx_gain                                            = 135;
-                           prach_root              			      = 22;
-                           prach_config_index      			      = 3;
+                           prach_root              			      = 0;
+                           prach_config_index      			      = 0;
                            prach_high_speed        			      = "DISABLE";
-  	                   prach_zero_correlation  			      = 0;
-                           prach_freq_offset       			      = 0;
+  	                   prach_zero_correlation  			      = 1;
+                           prach_freq_offset       			      = 2;
 			   pucch_delta_shift       			      = 1;
                            pucch_nRB_CQI           			      = 1;
                            pucch_nCS_AN            			      = 0;
                            pucch_n1_AN             			      = 32;
-                           pdsch_referenceSignalPower 			      = -24;
+                           pdsch_referenceSignalPower 			      = -26;
                            pdsch_p_b                  			      = 0;
                            pusch_n_SB                 			      = 1; 
                            pusch_enable64QAM          			      = "DISABLE";
 			   pusch_hoppingMode                                  = "interSubFrame";
-			   pusch_hoppingOffset                                = 4;
-     	                   pusch_groupHoppingEnabled  			      = "DISABLE";
+			   pusch_hoppingOffset                                = 0;
+     	                   pusch_groupHoppingEnabled  			      = "ENABLE";
 	                   pusch_groupAssignment      			      = 0;
 	                   pusch_sequenceHoppingEnabled		   	      = "DISABLE";
 	                   pusch_nDMRS1                                       = 1;
@@ -66,9 +66,9 @@ eNBs =
 	                   srs_ackNackST                                      =;
 	                   srs_MaxUpPts                                       =;*/  
 
-	                   pusch_p0_Nominal                                   = -95; 
-	                   pusch_alpha                                        = "AL08";
-	                   pucch_p0_Nominal                                   = -117;
+	                   pusch_p0_Nominal                                   = -108; 
+	                   pusch_alpha                                        = "AL1";
+	                   pucch_p0_Nominal                                   = -108;
 	                   msg3_delta_Preamble                                = 6;
 	                   pucch_deltaF_Format1                               = "deltaF2";
 	                   pucch_deltaF_Format1b                              = "deltaF3";
@@ -76,16 +76,16 @@ eNBs =
 	                   pucch_deltaF_Format2a                              = "deltaF0";
   	                   pucch_deltaF_Format2b		    	      = "deltaF0";
 	
-                           rach_numberOfRA_Preambles                          = 52;
+                           rach_numberOfRA_Preambles                          = 64;
                            rach_preamblesGroupAConfig                         = "DISABLE";
 /*
                            rach_sizeOfRA_PreamblesGroupA                      = ;
                            rach_messageSizeGroupA                             = ;
                            rach_messagePowerOffsetGroupB                      = ; 
 */
-                           rach_powerRampingStep                              = 2;
-	                   rach_preambleInitialReceivedTargetPower            = -104;
-                           rach_preambleTransMax                              = 6;
+                           rach_powerRampingStep                              = 4;
+	                   rach_preambleInitialReceivedTargetPower            = -108;
+                           rach_preambleTransMax                              = 10;
 	                   rach_raResponseWindowSize                          = 10;
 	                   rach_macContentionResolutionTimer                  = 48;
 	                   rach_maxHARQ_Msg3Tx                                = 4;
@@ -125,7 +125,7 @@ eNBs =
     {
 	global_log_level                      ="info"; 
     	global_log_verbosity                  ="medium";
-	hw_log_level                          ="debug"; 
+	hw_log_level                          ="info"; 
     	hw_log_verbosity                      ="medium";
 	phy_log_level                         ="info"; 
     	phy_log_verbosity                     ="medium";
diff --git a/targets/RT/USER/Makefile b/targets/RT/USER/Makefile
index adcb9715a6af1e1609b102eeb0c4567b9b890c30..d2963de1b54c8f3f2029b7536cb235501d1afdf9 100644
--- a/targets/RT/USER/Makefile
+++ b/targets/RT/USER/Makefile
@@ -37,8 +37,8 @@ endif
 
 ifeq ($(DEBUG),1)	
 CFLAGS += -g -ggdb
-CFLAGS += -DRRC_MSG_PRINT
-CFLAGS += -DPDCP_MSG_PRINT
+#CFLAGS += -DRRC_MSG_PRINT
+#CFLAGS += -DPDCP_MSG_PRINT
 endif
 
 ifdef ($(MSG_PRINT),1)
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 8a4b07dcafd91f731e3d6bc8c8187e9de03ad0fe..cde85f16a2a2df5ec9fcf897e019713246a6a17e 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -171,9 +171,8 @@ static SEM                     *mutex;
 
 static long                      main_eNB_thread;
 static long                      main_ue_thread;
-#ifdef USRP
 static SEM *sync_sem; // to sync rx & tx streaming
-#endif
+
 //static int sync_thread;
 #else
 pthread_t                       main_eNB_thread;
@@ -181,12 +180,11 @@ pthread_t                       main_ue_thread;
 pthread_attr_t                  attr_dlsch_threads;
 struct sched_param              sched_param_dlsch;
 
-#ifndef EXMIMO
 pthread_cond_t sync_cond;
 pthread_mutex_t sync_mutex;
-
-#endif
+int sync_var=-1;
 #endif
+
 RTIME T0;
 
 pthread_attr_t                  attr_UE_init_synch;
@@ -1258,9 +1256,9 @@ static void *eNB_thread(void *arg)
   RT_TASK *task;
 #endif
 #ifdef EXMIMO
-  unsigned char slot=1;
-#else
   unsigned char slot=0;
+#else
+  unsigned char slot=1;
 #endif
   int frame=0;
   int CC_id;
@@ -1283,10 +1281,12 @@ static void *eNB_thread(void *arg)
   hw_subframe = 0;
 #endif
 
+  /*
 #if defined(ENABLE_ITTI)
-  /* Wait for eNB application initialization to be complete (eNB registration to MME) */
+  // Wait for eNB application initialization to be complete (eNB registration to MME) 
   wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB);
 #endif
+  */
 
 #ifdef RTAI
   task = rt_task_init_schmod(nam2num("TASK0"), 0, 0, 0, SCHED_FIFO, 0xF);
@@ -1313,17 +1313,16 @@ static void *eNB_thread(void *arg)
     timing_info.time_avg = 0;
     timing_info.n_samples = 0;
 
-#ifndef EXMIMO
-    printf("waiting for USRP sync (eNB_thread)\n");
+    printf("waiting for sync (eNB_thread)\n");
 #ifdef RTAI
     rt_sem_wait(sync_sem);
 #else
     pthread_mutex_lock(&sync_mutex);
-    pthread_cond_wait(&sync_cond, &sync_mutex);
+    while (sync_var<0)
+      pthread_cond_wait(&sync_cond, &sync_mutex);
     pthread_mutex_unlock(&sync_mutex);
 #endif
     //    printf("starting eNB thread @ %llu\n",get_usrp_time(&openair0));
-#endif
 
     while (!oai_exit) {
 
@@ -1634,7 +1633,8 @@ static void *UE_thread_synch(void *arg) {
 
   pthread_mutex_lock(&sync_mutex);
   printf("Locked sync_mutex, waiting (UE_sync_thread)\n");
-  pthread_cond_wait(&sync_cond, &sync_mutex);
+  while (sync_var<0)
+    pthread_cond_wait(&sync_cond, &sync_mutex);
   pthread_mutex_unlock(&sync_mutex);
   printf("unlocked sync_mutex (UE_sync_thread)\n");
 #endif
@@ -1814,7 +1814,8 @@ static void *UE_thread_rx(void *arg) {
 #else
   pthread_mutex_lock(&sync_mutex);
   printf("Locked sync_mutex, waiting (UE_thread_rx)\n");
-  pthread_cond_wait(&sync_cond, &sync_mutex);
+  while (sync_var<0)
+    pthread_cond_wait(&sync_cond, &sync_mutex);
   pthread_mutex_unlock(&sync_mutex);
   printf("unlocked sync_mutex, waiting (UE_thread_rx)\n");
 #endif
@@ -1906,7 +1907,8 @@ static void *UE_thread(void *arg) {
 #else
   pthread_mutex_lock(&sync_mutex);
   printf("Locked sync_mutex, waiting (UE_thread)\n");
-  pthread_cond_wait(&sync_cond, &sync_mutex);
+  while (sync_var<0)
+    pthread_cond_wait(&sync_cond, &sync_mutex);
   pthread_mutex_unlock(&sync_mutex);
   printf("unlocked sync_mutex, waiting (UE_thread)\n");
 #endif
@@ -3176,25 +3178,23 @@ int main(int argc, char **argv) {
     }
   else
     printf("mutex=%p\n",mutex);
-#ifndef EXMIMO
+
   sync_sem = rt_typed_sem_init(nam2num("syncsem"), 0, BIN_SEM|FIFO_Q);
   if(sync_sem == 0)
     printf("error init sync semphore\n");
-#endif
+
 #else
-#ifndef EXMIMO
   pthread_cond_init(&sync_cond,NULL);
   pthread_mutex_init(&sync_mutex, NULL);
-#endif
 #endif
 
-  /*#if defined(ENABLE_ITTI)
+#if defined(ENABLE_ITTI)
   // Wait for eNB application initialization to be complete (eNB registration to MME)
   if (UE_flag==0) {
     printf("Waiting for eNB application to be ready\n");
     wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB);
   }
-  #endif*/
+#endif
 
 
   // this starts the DMA transfers
@@ -3207,24 +3207,16 @@ int main(int argc, char **argv) {
 #ifdef XFORMS
   if (do_forms==1) {
     fl_initialize (&argc, argv, NULL, 0, 0);
-    form_stats = create_form_stats_form();
-    if (UE_flag==1) {
-      form_ue[UE_id] = create_lte_phy_scope_ue();
-      sprintf (title, "LTE DL SCOPE UE");
-      fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-    } else {
+
+    if (UE_flag==0) {
       form_stats_l2 = create_form_stats_form();
+      fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats");
+      form_stats = create_form_stats_form();
+      fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
       for(UE_id=0;UE_id<scope_enb_num_ue;UE_id++) {
 	form_enb[UE_id] = create_lte_phy_scope_enb();
 	sprintf (title, "UE%d LTE UL SCOPE eNB",UE_id+1);
 	fl_show_form (form_enb[UE_id]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-      }
-    }
-    fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
-    if (UE_flag==0) {
-      fl_show_form (form_stats_l2->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "l2 stats");
-
-      for (UE_id=0;UE_id<scope_enb_num_ue;UE_id++) {
 	if (otg_enabled) {
 	  fl_set_button(form_enb[UE_id]->button_0,1);
 	  fl_set_object_label(form_enb[UE_id]->button_0,"DL Traffic ON");
@@ -3236,6 +3228,13 @@ int main(int argc, char **argv) {
       }
     }
     else {
+      form_stats = create_form_stats_form();
+      fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
+      UE_id = 0;
+      form_ue[UE_id] = create_lte_phy_scope_ue();
+      sprintf (title, "LTE DL SCOPE UE");
+      fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
+
       if (openair_daq_vars.use_ia_receiver) {
 	fl_set_button(form_ue[UE_id]->button_0,1);
 	fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver ON");
@@ -3326,21 +3325,23 @@ int main(int argc, char **argv) {
   // Sleep to allow all threads to setup
   //sleep(1);
 
-
 #ifndef EXMIMO
 #ifndef USRP_DEBUG
   openair0.trx_start_func(&openair0);
   //  printf("returning from usrp start streaming: %llu\n",get_usrp_time(&openair0));
 #endif
+#endif
+
 #ifdef RTAI
   rt_sem_signal(sync_sem);
 #else
   pthread_mutex_lock(&sync_mutex);
   printf("Sending sync ...\n");
+  sync_var=0;
   pthread_cond_broadcast(&sync_cond);
   pthread_mutex_unlock(&sync_mutex);
 #endif
-#endif
+
   // wait for end of program
   printf("TYPE <CTRL-C> TO TERMINATE\n");
   //getchar();
@@ -3415,7 +3416,6 @@ int main(int argc, char **argv) {
   //cleanup_pdcp_thread();
 #endif
 
-#ifndef EXMIMO
 #ifdef RTAI
   rt_sem_delete(sync_sem);
   stop_rt_timer();
@@ -3423,7 +3423,6 @@ int main(int argc, char **argv) {
   pthread_cond_destroy(&sync_cond);
   pthread_mutex_destroy(&sync_mutex);
 #endif
-#endif
 
 #ifdef EXMIMO
   printf("stopping card\n");