diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index ccd1ce6a9ccbb2585f854fca2f2ec069a3d156aa..c6ab458dc8577359687acabcbfaf4d1a493bfdf6 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -44,7 +44,7 @@ typedef struct openair0_device_t openair0_device;
 #define MAX_CARDS 1
 #endif
 
-#define USRP_GAIN_OFFSET (82.0)  // 82 calibrated for USRP B210 @ 2.6 GHz
+#define USRP_GAIN_OFFSET (65.0)  // 82 calibrated for USRP B210 @ 2.6 GHz
 
 typedef enum {
   max_gain=0,med_gain,byp_gain
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index 42ab4b8dabc53e82e992a58d45e60a0969525745..d81e83164bbedf6b24e85504831a56294dd134af 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -93,11 +93,11 @@ static int trx_usrp_start(openair0_device *device)
 
   // init recv and send streaming
   uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
-  cmd.time_spec = s->usrp->get_time_now() + uhd::time_spec_t(0.01);
+  cmd.time_spec = s->usrp->get_time_now() + uhd::time_spec_t(0.05);
   cmd.stream_now = false; // start at constant delay
   s->rx_stream->issue_stream_cmd(cmd);
 
-  s->tx_md.time_spec = s->usrp->get_time_now() + uhd::time_spec_t(1-(double)s->tx_forward_nsamps/s->sample_rate);
+  s->tx_md.time_spec = cmd.time_spec + uhd::time_spec_t(1-(double)s->tx_forward_nsamps/s->sample_rate);
   s->tx_md.has_time_spec = true;
   s->tx_md.start_of_burst = true;
   s->tx_md.end_of_burst = false;
@@ -144,7 +144,7 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
 
   usrp_state_t *s = (usrp_state_t*)device->priv;
 
-  int samples_received,i;
+  int samples_received=0,i;
   
   if (cc>1) {
     std::vector<void *> buff_ptrs;
@@ -154,6 +154,10 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
   else
     samples_received = s->rx_stream->recv(buff[0], nsamps, s->rx_md);
 
+  if (samples_received < nsamps) {
+    printf("[recv] received %d samples out of %d\n",samples_received,nsamps);
+    
+  }
   //handle the error code
   switch(s->rx_md.error_code){
   case uhd::rx_metadata_t::ERROR_CODE_NONE:
@@ -232,12 +236,9 @@ int openair0_device_init(openair0_device* device, openair0_config_t *openair0_cf
   memset(s, 0, sizeof(usrp_state_t));
 
   // Initialize USRP device
-/* thomas 26.01.205*/
-//  std::string args = "type=b200";
+
   std::string args = "type=b200";
 
-  /*  std::string rx_subdev = "A:A A:B";
-      std::string tx_subdev = "A:A A:B";*/
 
   uhd::device_addrs_t device_adds = uhd::device::find(args);
   size_t i;
@@ -309,25 +310,31 @@ int openair0_device_init(openair0_device* device, openair0_config_t *openair0_cf
   }
 
 
+  // display USRP settings
+  std::cout << boost::format("Actual master clock: %fMHz...") % (s->usrp->get_master_clock_rate()/1e6) << std::endl;
 
   // create tx & rx streamer
   uhd::stream_args_t stream_args_rx("sc16", "sc16");
-  //stream_args_rx.args["spp"] = str(boost::format("%d") % (openair0_cfg[0].samples_per_packet));
-  
-  uhd::stream_args_t stream_args_tx("sc16", "sc16");
-  //stream_args_tx.args["spp"] = str(boost::format("%d") % (openair0_cfg[0].samples_per_packet));
+  //stream_args_rx.args["spp"] = str(boost::format("%d") % 2048);//(openair0_cfg[0].rx_num_channels*openair0_cfg[0].samples_per_packet));
   for (i = 0; i<openair0_cfg[0].rx_num_channels; i++)
-      stream_args_rx.channels.push_back(i);
+    stream_args_rx.channels.push_back(i);
+  s->rx_stream = s->usrp->get_rx_stream(stream_args_rx);
+  std::cout << boost::format("rx_max_num_samps %u") % (s->rx_stream->get_max_num_samps()) << std::endl;
+  //openair0_cfg[0].samples_per_packet = s->rx_stream->get_max_num_samps();
+
+  uhd::stream_args_t stream_args_tx("sc16", "sc16");
+  //stream_args_tx.args["spp"] = str(boost::format("%d") % 2048);//(openair0_cfg[0].tx_num_channels*openair0_cfg[0].samples_per_packet));
   for (i = 0; i<openair0_cfg[0].tx_num_channels; i++)
       stream_args_tx.channels.push_back(i);
-
   s->tx_stream = s->usrp->get_tx_stream(stream_args_tx);
-  s->rx_stream = s->usrp->get_rx_stream(stream_args_rx);
+  std::cout << boost::format("tx_max_num_samps %u") % (s->tx_stream->get_max_num_samps()) << std::endl;
+
 
   s->usrp->set_time_now(uhd::time_spec_t(0.0));
 
-  // display USRP settings
-  std::cout << boost::format("Actual master clock: %fMHz...") % (s->usrp->get_master_clock_rate()/1e6) << std::endl << std::endl;
+
+
+  
 
   for (i=0;i<openair0_cfg[0].rx_num_channels;i++) {
     if (i<openair0_cfg[0].rx_num_channels) {
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band39.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band39.tm1.usrpb210.conf
index 52cae1023ff281ef30162bc0298e9fd18892459d..5f3af031ca05f59a207e98b0469bd46853a85740 100755
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band39.tm1.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band39.tm1.usrpb210.conf
@@ -43,7 +43,7 @@ eNBs =
                            uplink_frequency_offset 			      = 0;
   
   			   Nid_cell					      = 0;
-                           N_RB_DL                 			      = 50;
+                           N_RB_DL                 			      = 25;
                            Nid_cell_mbsfn          			      = 0;
                            nb_antennas_tx          			      = 1;
                            nb_antennas_rx          			      = 1;
@@ -132,12 +132,12 @@ eNBs =
     
     log_config : 
     {
-	global_log_level                      ="info"; 
-    	global_log_verbosity                  ="medium";
+	global_log_level                      ="debug"; 
+    	global_log_verbosity                  ="high";
 	hw_log_level                          ="info"; 
     	hw_log_verbosity                      ="medium";
-	phy_log_level                         ="info"; 
-    	phy_log_verbosity                     ="medium";
+	phy_log_level                         ="debug"; 
+    	phy_log_verbosity                     ="high";
 	mac_log_level                         ="info"; 
     	mac_log_verbosity                     ="high";
 	rlc_log_level                         ="info"; 
diff --git a/targets/RT/USER/Makefile b/targets/RT/USER/Makefile
index 17aff695468165feb62f205552a7bde5e5a2474c..174c48a324768fee25e6cfd33604d51e59ea1ffa 100644
--- a/targets/RT/USER/Makefile
+++ b/targets/RT/USER/Makefile
@@ -24,7 +24,7 @@ ifndef USRP
 USRP=0
 endif
 
-CFLAGS += -DDRIVER2013 -I$(OPENAIR_TARGETS)/ARCH/COMMON  -I.
+CFLAGS += -DDRIVER2013 -I$(OPENAIR_TARGETS)/ARCH/COMMON  -I. 
 
 ifndef OPENAIR2
 OPENAIR2=1
@@ -35,6 +35,10 @@ DISABLE_XER_PRINT=0
 MSG_PRINT=1
 endif
 
+ifdef Rel10
+CFLAGS += -DRel10
+endif
+
 ifeq ($(EXMIMO),1)
   CFLAGS += -I$(OPENAIR_TARGETS)/ARCH/EXMIMO/USERSPACE/LIB/ -I$(OPENAIR_TARGETS)/ARCH/EXMIMO/DEFS -DENABLE_VCD_FIFO
 endif
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index b72b15fe84bd630f7f1e29cc19e013102ac8fc73..bac451acd502016d07177bba53167f2bec4fbe6a 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -328,7 +328,7 @@ int16_t           rlc_log_level      = LOG_INFO;
 int16_t           rlc_log_verbosity  = LOG_MED;
 int16_t           pdcp_log_level     = LOG_INFO;
 int16_t           pdcp_log_verbosity = LOG_MED;
-int16_t           rrc_log_level      = LOG_INFO;
+int16_t           rrc_log_level      = LOG_DEBUG;
 int16_t           rrc_log_verbosity  = LOG_MED;
 # if defined(ENABLE_USE_MME)
 int16_t           gtpu_log_level     = LOG_DEBUG;
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 1e99f791a80c895be55807892466e705401d989a..335527e870369f7e31804d52d5c7ecdb57d985de 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -186,7 +186,7 @@ static const eutra_band_t eutra_bands[] =
     {14,  788    * MHz,  798    * MHz,  758    * MHz,  768    * MHz, FDD},
 
     {17,  704    * MHz,  716    * MHz,  734    * MHz,  746    * MHz, FDD},
-
+    {20,  832    * MHz,  862    * MHz,  791    * MHz,  821    * MHz, FDD},
     {33, 1900    * MHz, 1920    * MHz, 1900    * MHz, 1920    * MHz, TDD},
     {34, 2010    * MHz, 2025    * MHz, 2010    * MHz, 2025    * MHz, TDD},
     {35, 1850    * MHz, 1910    * MHz, 1850    * MHz, 1910    * MHz, TDD},
@@ -231,6 +231,7 @@ static void *UE_thread_synch(void *arg) {
   found = 0;
   current_band = eutra_bands[ind].band; 
   do  {
+    printf("Scanning band %d, dl_min %u\n",current_band,eutra_bands[ind].dl_min);
     if ((eutra_bands[ind].dl_min <= downlink_frequency[0][0]) && (eutra_bands[ind].dl_max>= downlink_frequency[0][0])) {
       for (card=0;card<MAX_NUM_CCs;card++)
 	for (i=0; i<4; i++) 
@@ -239,7 +240,7 @@ static void *UE_thread_synch(void *arg) {
       break;
     }
     ind++;
-    current_band = eutra_bands[++ind].band; 
+    current_band = eutra_bands[ind].band; 
   } while (current_band < 44);
     
   if (found == 0) {
@@ -374,8 +375,10 @@ static void *UE_thread_synch(void *arg) {
 	  mac_xface->macphy_exit("No cell synchronization found, abandoning");
 	}
 	else {
-	  LOG_I(PHY,"[initial_sync] trying carrier off %d Hz, rxgain %d\n",openair_daq_vars.freq_offset,
-		UE->rx_total_gain_dB);
+	  LOG_I(PHY,"[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n",openair_daq_vars.freq_offset,
+		UE->rx_total_gain_dB,
+		downlink_frequency[0][0]+openair_daq_vars.freq_offset,
+		downlink_frequency[0][0]+uplink_frequency_offset[0][0]+openair_daq_vars.freq_offset);
 	  for (card=0;card<MAX_CARDS;card++) {
 	    for (i=0; i<openair0_cfg[card].rx_num_channels; i++) {
 	      openair0_cfg[card].rx_freq[i] = downlink_frequency[card][i]+openair_daq_vars.freq_offset;
@@ -802,7 +805,6 @@ void *UE_thread(void *arg) {
 
       for (i=0;i<UE->lte_frame_parms.nb_antennas_rx;i++)
 	rxp[i] = (dummy_dump==0) ? (void*)&rxdata[i][rxpos] : (void*)dummy[i];
-      //      printf("rxpos %d, hw_subframe %d, dummy_dump %d (asking %d)\n",rxpos,hw_subframe,dummy_dump,spp - ((first_rx==1) ? rx_off_diff : 0));
       rxs = openair0.trx_read_func(&openair0,
 				   &timestamp,
 				   rxp,
@@ -945,8 +947,9 @@ void *UE_thread(void *arg) {
 #endif
 	    UE->rx_offset=0;
 	  }
-	  else if ((UE->rx_offset < RX_OFF_MIN)&&(start_rx_stream==1)) {
-	    //	    rx_off_diff = -UE->rx_offset + RX_OFF_MIN;
+	  else if ((UE->rx_offset < RX_OFF_MIN)&&(start_rx_stream==1) && (rx_correction_timer == 0)) {
+	    rx_off_diff = -UE->rx_offset + RX_OFF_MIN;
+	    rx_correction_timer = 5;
 	  }
 	  else if ((UE->rx_offset > (FRAME_LENGTH_COMPLEX_SAMPLES-RX_OFF_MAX)) &&(start_rx_stream==1) && (rx_correction_timer == 0)) {
 	    rx_off_diff = FRAME_LENGTH_COMPLEX_SAMPLES-UE->rx_offset;
@@ -954,7 +957,7 @@ void *UE_thread(void *arg) {
 	  }
 	  if (rx_correction_timer>0)
 	    rx_correction_timer--;
-	  //	  LOG_D(PHY,"HW RESYNC: hw_frame %d: Correction: rx_off_diff %d (timer %d)\n",frame,rx_off_diff,rx_correction_timer);
+	  //	  LOG_D(PHY,"HW RESYNC: hw_frame %d: (rx_offset %d) Correction: rx_off_diff %d (timer %d)\n",frame,UE->rx_offset,rx_off_diff,rx_correction_timer);
 	}
 	dummy_dump=0;
       }