diff --git a/openair1/PHY/TOOLS/lte_phy_scope.c b/openair1/PHY/TOOLS/lte_phy_scope.c
index e5d87223f0a6ccf0236ccb593a4d8f67a999c306..e507024c86035785867ba5f7ad8984b3ff770bd2 100644
--- a/openair1/PHY/TOOLS/lte_phy_scope.c
+++ b/openair1/PHY/TOOLS/lte_phy_scope.c
@@ -160,7 +160,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
                    int UE_id)
 {
   int eNB_id = 0;
-  int i,arx,atx,ind,k;
+  int i,i2,arx,atx,ind,k;
   LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_enb->lte_frame_parms;
   int nsymb_ce = 12*frame_parms->N_RB_UL*frame_parms->symbols_per_tti;
   uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx;
@@ -181,6 +181,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
   float chest_t_abs[nb_antennas_rx][frame_parms->ofdm_symbol_size];
   float *chest_f_abs;
   float time[FRAME_LENGTH_COMPLEX_SAMPLES];
+  float time2[2048];
   float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx];
   int frame = phy_vars_enb->proc[0].frame_tx;
   uint32_t total_dlsch_bitrate = phy_vars_enb->total_dlsch_bitrate;
@@ -238,19 +239,21 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
 
     if (chest_t[0] !=NULL) {
       for (i=0; i<(frame_parms->ofdm_symbol_size); i++) {
-        chest_t_abs[0][i] = 10*log10((float) (chest_t[0][2*i]*chest_t[0][2*i]+chest_t[0][2*i+1]*chest_t[0][2*i+1]));
+	i2 = (i+(frame_parms->ofdm_symbol_size>>1))%frame_parms->ofdm_symbol_size;
+	time2[i] = (float)(i-(frame_parms->ofdm_symbol_size>>1));
+        chest_t_abs[0][i] = 10*log10((float) (1+chest_t[0][2*i2]*chest_t[0][2*i2]+chest_t[0][2*i2+1]*chest_t[0][2*i2+1]));
 
         if (chest_t_abs[0][i] > ymax)
           ymax = chest_t_abs[0][i];
       }
 
-      fl_set_xyplot_data(form->chest_t,time,chest_t_abs[0],(frame_parms->ofdm_symbol_size),"","","");
+      fl_set_xyplot_data(form->chest_t,time2,chest_t_abs[0],(frame_parms->ofdm_symbol_size),"","","");
     }
 
     for (arx=1; arx<nb_antennas_rx; arx++) {
       if (chest_t[arx] !=NULL) {
         for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) {
-          chest_t_abs[arx][i] = 10*log10((float) (chest_t[arx][2*i]*chest_t[arx][2*i]+chest_t[arx][2*i+1]*chest_t[arx][2*i+1]));
+          chest_t_abs[arx][i] = 10*log10((float) (1+chest_t[arx][2*i]*chest_t[arx][2*i]+chest_t[arx][2*i+1]*chest_t[arx][2*i+1]));
  
           if (chest_t_abs[arx][i] > ymax)
             ymax = chest_t_abs[arx][i];
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index b063fdc7a1d9c271adeaba6e4b9377d0c1d12abb..60cd0ec0f7515d23d510cdf0e81dbdba4c8ff702 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -3122,7 +3122,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
   int16_t n1_pucch0,n1_pucch1,n1_pucch2,n1_pucch3;
   uint8_t do_SR = 0;
   uint8_t pucch_sel = 0;
-  int32_t metric0=0,metric1=0;
+  int32_t metric0=0,metric1=0,metric0_SR=0;
   ANFBmode_t bundling_flag;
   PUCCH_FMT_t format;
   uint8_t nPRS;
@@ -3664,7 +3664,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
                             harq_pid,
                             &phy_vars_eNB->ulsch_eNB[i]->Msg3_flag);
 
-          // false msg3 detection by MAC: empty PDU
+          // one-shot msg3 detection by MAC: empty PDU (e.g. CRNTI)
           if (phy_vars_eNB->ulsch_eNB[i]->Msg3_flag == 0 ) {
             phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
             mac_xface->cancel_ra_proc(phy_vars_eNB->Mod_id,
@@ -3868,24 +3868,24 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
           phy_vars_eNB->eNB_UE_stats[i].sr_total++;
 
           if (abstraction_flag == 0)
-            metric0 = rx_pucch(phy_vars_eNB,
-                               pucch_format1,
-                               i,
-                               phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,
-                               0, // n2_pucch
-                               0, // shortened format, should be use_srs flag, later
-                               &SR_payload,
-                               subframe,
-                               PUCCH1_THRES);
+            metric0_SR = rx_pucch(phy_vars_eNB,
+				  pucch_format1,
+				  i,
+				  phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,
+				  0, // n2_pucch
+				  0, // shortened format, should be use_srs flag, later
+				  &SR_payload,
+				  subframe,
+				  PUCCH1_THRES);
 
 #ifdef PHY_ABSTRACTION
           else {
-            metric0 = rx_pucch_emul(phy_vars_eNB,
-                                    i,
-                                    pucch_format1,
-                                    0,
-                                    &SR_payload,
-                                    sched_subframe);
+            metric0_SR = rx_pucch_emul(phy_vars_eNB,
+				       i,
+				       pucch_format1,
+				       0,
+				       &SR_payload,
+				       sched_subframe);
             LOG_D(PHY,"[eNB %d][SR %x] Frame %d subframe %d Checking SR (UE SR %d/%d)\n",phy_vars_eNB->Mod_id,
                   phy_vars_eNB->ulsch_eNB[i]->rnti,frame,subframe,SR_payload,phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex);
           }
@@ -3921,20 +3921,35 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
         if ((n1_pucch0==-1) && (n1_pucch1==-1)) { // just check for SR
         } else if (phy_vars_eNB->lte_frame_parms.frame_type==FDD) { // FDD
           // if SR was detected, use the n1_pucch from SR, else use n1_pucch0
-          n1_pucch0 = (SR_payload==1) ? phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex:n1_pucch0;
+	  //          n1_pucch0 = (SR_payload==1) ? phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex:n1_pucch0;
 
 	  LOG_D(PHY,"Demodulating PUCCH for ACK/NAK: n1_pucch0 %d (%d), SR_payload %d\n",n1_pucch0,phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,SR_payload);
 
-          if (abstraction_flag == 0)
+          if (abstraction_flag == 0) {
+
+
+
             metric0 = rx_pucch(phy_vars_eNB,
                                pucch_format1a,
                                i,
                                (uint16_t)n1_pucch0,
                                0, //n2_pucch
-                               1, // shortened format
+                               0, // shortened format
                                pucch_payload0,
                                subframe,
                                PUCCH1a_THRES);
+
+            if (metric0 < metric0_SR)
+	      metric0=rx_pucch(phy_vars_eNB,
+			       pucch_format1a,
+			       i,
+			       phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,
+			       0, //n2_pucch
+			       0, // shortened format
+			       pucch_payload0,
+			       subframe,
+			       PUCCH1a_THRES);
+	  }
           else {
 #ifdef PHY_ABSTRACTION
             metric0 = rx_pucch_emul(phy_vars_eNB,i,
@@ -3986,15 +4001,15 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
 #endif
 
             if (abstraction_flag == 0)
-              metric0 = rx_pucch(phy_vars_eNB,
-                                 format,
-                                 i,
-                                 phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,
-                                 0, //n2_pucch
-                                 1, // shortened format
-                                 pucch_payload0,
-                                 subframe,
-                                 PUCCH1a_THRES);
+              metric0_SR = rx_pucch(phy_vars_eNB,
+				    format,
+				    i,
+				    phy_vars_eNB->scheduling_request_config[i].sr_PUCCH_ResourceIndex,
+				    0, //n2_pucch
+				    0, // shortened format
+				    pucch_payload0,
+				    subframe,
+				    PUCCH1a_THRES);
             else {
 #ifdef PHY_ABSTRACTION
               metric0 = rx_pucch_emul(phy_vars_eNB,i,
@@ -4022,7 +4037,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
                                    i,
                                    (uint16_t)n1_pucch0,
                                    0, // n2_pucch
-                                   1, // shortened format
+                                   0, // shortened format
                                    pucch_payload0,
                                    subframe,
                                    PUCCH1a_THRES);
@@ -4045,7 +4060,7 @@ void phy_procedures_eNB_RX(const unsigned char sched_subframe,PHY_VARS_eNB *phy_
                                    i,
                                    (uint16_t)n1_pucch1,
                                    0, //n2_pucch
-                                   1, // shortened format
+                                   0, // shortened format
                                    pucch_payload1,
                                    subframe,
                                    PUCCH1a_THRES);
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index fdbdf03408e2e3e3d1490d4fcf4ec3b9f6ac88ea..b3a4319b6becf0c1ae54b4cd2366237a9ba8cf3a 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -88,6 +88,7 @@ void rx_sdu(
   int ii,j;
   eNB_MAC_INST *eNB = &eNB_mac_inst[enb_mod_idP];
   UE_list_t *UE_list= &eNB->UE_list;
+  int crnti_rx=0;
 
   start_meas(&eNB->rx_ulsch_sdu);
 
@@ -128,9 +129,9 @@ void rx_sdu(
     case CRNTI:
       UE_id = find_UE_id(enb_mod_idP,(((uint16_t)payload_ptr[0])<<8) + payload_ptr[1]);
       LOG_I(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d (ce %d/%d): CRNTI %x (UE_id %d) in Msg3\n",enb_mod_idP, CC_idP, rx_ces[i], i,num_ce,(((uint16_t)payload_ptr[0])<<8) + payload_ptr[1],UE_id);
-
+      crnti_rx=1;
       payload_ptr+=2;
-      /* we don't process this CE yet */
+
       if (msg3_flagP != NULL) {
 	*msg3_flagP = 0;
       }
@@ -144,6 +145,9 @@ void rx_sdu(
       LOG_D(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d : Received short BSR LCGID = %u bsr = %d\n",
 	    enb_mod_idP, CC_idP, rx_ces[i], lcgid, payload_ptr[0] & 0x3f);
 
+      if (crnti_rx==1)
+	LOG_I(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d : Received short BSR LCGID = %u bsr = %d\n",
+	      enb_mod_idP, CC_idP, rx_ces[i], lcgid, payload_ptr[0] & 0x3f);
       if (UE_id  != -1) {
 
         UE_list->UE_template[CC_idP][UE_id].bsr_info[lcgid] = (payload_ptr[0] & 0x3f);
@@ -175,6 +179,15 @@ void rx_sdu(
               UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID1],
               UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID2],
               UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID3]);
+      if (crnti_rx==1)
+        LOG_I(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d: Received long BSR LCGID0 = %u LCGID1 = "
+              "%u LCGID2 = %u LCGID3 = %u\n",
+              enb_mod_idP, CC_idP,
+              rx_ces[i],
+              UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID0],
+              UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID1],
+              UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID2],
+              UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID3]);
 
         if (UE_list->UE_template[CC_idP][UE_id].bsr_info[LCGID0] == 0 ) {
           UE_list->UE_template[CC_idP][UE_id].ul_buffer_creation_time[LCGID0]=0;