diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index a254f7b7ec14e36229f18c79996c45098c4f9ec4..b72b15fe84bd630f7f1e29cc19e013102ac8fc73 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -1725,7 +1725,7 @@ static void get_options (int argc, char **argv) {
   int c;
   //  char                          line[1000];
   //  int                           l;
-  int k;//i,j,k;
+  int k,i;//,j,k;
 #ifdef USRP
   int clock_src;
 #endif
@@ -1748,7 +1748,8 @@ static void get_options (int argc, char **argv) {
     LONG_OPTION_CALIB_UE_RX_MED,
     LONG_OPTION_CALIB_UE_RX_BYP,
     LONG_OPTION_DEBUG_UE_PRACH,
-    LONG_OPTION_NO_L2_CONNECT
+    LONG_OPTION_NO_L2_CONNECT,
+    LONG_OPTION_RXGAIN
   };
   
   static const struct option long_options[] = {
@@ -1758,6 +1759,7 @@ static void get_options (int argc, char **argv) {
     {"calib-ue-rx-byp", required_argument,  NULL, LONG_OPTION_CALIB_UE_RX_BYP},
     {"debug-ue-prach",  no_argument,        NULL, LONG_OPTION_DEBUG_UE_PRACH},
     {"no-L2-connect",   no_argument,        NULL, LONG_OPTION_NO_L2_CONNECT},
+    {"ue_rxgain",   required_argument,  NULL, LONG_OPTION_RXGAIN},
     {NULL, 0, NULL, 0}};
   
   while ((c = getopt_long (argc, argv, "C:dK:g:F:G:qO:m:SUVRM:r:P:s:t:x:",long_options,NULL)) != -1) {
@@ -1792,6 +1794,10 @@ static void get_options (int argc, char **argv) {
     case LONG_OPTION_NO_L2_CONNECT:
       mode = no_L2_connect;
       break;
+    case LONG_OPTION_RXGAIN:
+      for (i=0;i<4;i++)
+	rx_gain[0][i] = atof(optarg);
+      break;
     case 'M':
 #ifdef ETHERNET
       strcpy(rrh_eNB_ip,optarg);
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 78324502f8bdacda541a40142ecba4a2254e3c45..ac357853abfba5fcf0cf7cd59e4e7d8cad95c90a 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -305,7 +305,8 @@ static void *UE_thread_synch(void *arg) {
       break;
     case pbch:
       printf("Running initial sync\n");
-
+      // This is a hack to fix a bug when using USRP
+      memset(PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0],0,1024);
       if (initial_sync(UE,UE->mode)==0) {
 	/*
 	  lte_adjust_synch(&PHY_vars_UE_g[0]->lte_frame_parms,
@@ -760,6 +761,7 @@ void *UE_thread(void *arg) {
 
   T0 = rt_get_time_ns();
   first_rx = 1;
+  rxpos=0;
   while (!oai_exit) {
     vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_HW_SUBFRAME, hw_subframe);
     vcd_signal_dumper_dump_variable_by_name(VCD_SIGNAL_DUMPER_VARIABLES_HW_FRAME, frame);