diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 41710a4ab9e81296a24baa52e01744c88ac95d09..3debfee997d832b903548dab3949529cde258394 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -838,10 +838,10 @@ void uci_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
 	if (uci->type == SR) {
 	  if (SR_payload == 1) {
 	    fill_sr_indication(eNB,uci->rnti,frame,subframe,metric_SR);
-	    continue;
+	    break;
 	  }
 	  else {
-	    continue;
+	    break;
 	  }
 	}
       case HARQ:
diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h
index 20e638bf2a3a3302beafb96b9866f9db9fc4b40e..576972f4bb4fa8decd99e07a407ca78d3a74ac2e 100644
--- a/openair2/COMMON/rrc_messages_types.h
+++ b/openair2/COMMON/rrc_messages_types.h
@@ -115,9 +115,9 @@ typedef struct RrcConfigurationReq_s {
   long                    pucch_delta_shift[MAX_NUM_CCs];
   long                    pucch_nRB_CQI[MAX_NUM_CCs];
   long                    pucch_nCS_AN[MAX_NUM_CCs];
-#if !defined(Rel10) && !defined(Rel14)
+//#if !defined(Rel10) && !defined(Rel14)
   long                    pucch_n1_AN[MAX_NUM_CCs];
-#endif
+//#endif
   long                    pdsch_referenceSignalPower[MAX_NUM_CCs];
   long                    pdsch_p_b[MAX_NUM_CCs];
   long                    pusch_n_SB[MAX_NUM_CCs];
diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index 956536644edfaa75cb6ea6d2b18cb736430a7e9a..e7fe0452b0faac7f2a6d3819d8a53439162460ac 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -856,7 +856,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_nCS_AN choice: 0..7!\n",
 			       RC.config_file_name, i, pucch_nCS_AN);
 
-#if !defined(Rel10) && !defined(Rel14)
+//#if !defined(Rel10) && !defined(Rel14)
 		RRC_CONFIGURATION_REQ (msg_p).pucch_n1_AN[j] = pucch_n1_AN;
 
 		if ((pucch_n1_AN <0) || (pucch_n1_AN > 2047))
@@ -864,7 +864,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 			       "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pucch_n1_AN choice: 0..2047!\n",
 			       RC.config_file_name, i, pucch_n1_AN);
 
-#endif
+//#endif
 		RRC_CONFIGURATION_REQ (msg_p).pdsch_referenceSignalPower[j] = pdsch_referenceSignalPower;
 
 		if ((pdsch_referenceSignalPower <-60) || (pdsch_referenceSignalPower > 50))
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 3aa2ede87ad07675591b94025aedbf011285d11e..c0e8ee61f406315ca7b505703d345107306c9f92 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -3380,7 +3380,8 @@ allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t subframeP,
                 if(((ul_req->ul_config_pdu_list[ack_int].pdu_type == NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE) ||
                     (ul_req->ul_config_pdu_list[ack_int].pdu_type == NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE)) &&
                    (ul_req->ul_config_pdu_list[ack_int].uci_harq_pdu.ue_information.ue_information_rel8.rnti == dl_config_pdu[i].dci_dl_pdu.dci_dl_pdu_rel8.rnti)){
-                  ul_req->ul_config_pdu_list[ack_int].uci_harq_pdu.harq_information.harq_information_rel9_fdd.n_pucch_1_0 = fCCE;
+                  ul_req->ul_config_pdu_list[ack_int].uci_harq_pdu.harq_information.harq_information_rel9_fdd.n_pucch_1_0 =
+                      cc->radioResourceConfigCommon->pucch_ConfigCommon.n1PUCCH_AN+fCCE;
                 }
               }
             }
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 87b5f9b8375ef36f73d0433a57bb64cc3362507b..8af581742e1c7f6c64181a1119cafc2c8103271a 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -1044,7 +1044,11 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
     for (i=0; i<NB_RA_PROC_MAX; i++) {
       if ((cc->ra[i].state == WAITMSG3) &&(cc->ra[i].Msg3_subframe == sched_subframe)) {  
         ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].ue_priority = SCH_UL_MSG3;
-        ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 1;
+        if(frame_parms->N_RB_UL == 25){
+          ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 1;
+        }else{
+          ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 2;
+        }
         ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].nb_rb = 1;
         ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].UE_id = -1;
         ulsch_ue_select[CC_id].ue_num++;
@@ -1608,19 +1612,31 @@ void schedule_ulsch_rnti(module_id_t   module_idP,
 
   // loop over all active UEs
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
-    //leave out first RB for PUCCH
-    first_rb[CC_id] = 1;
     ULSCH_first_end = 0;
     cc  = &eNB->common_channels[CC_id];
+    // This is the actual CC_id in the list
+    N_RB_UL      = to_prb(cc->mib->message.dl_Bandwidth);
+    //leave out first RB for PUCCH
+    if(N_RB_UL == 25){
+      first_rb[CC_id] = 1;
+    }else{
+      first_rb[CC_id] = 2;
+    }
     for ( ulsch_ue_num = 0; ulsch_ue_num < ulsch_ue_select[CC_id].ue_num; ulsch_ue_num++ ) {
-      // This is the actual CC_id in the list
-      N_RB_UL      = to_prb(cc->ul_Bandwidth);
       UE_id = ulsch_ue_select[CC_id].list[ulsch_ue_num].UE_id;
       /* be sure that there are some free RBs */
-      if (first_rb[CC_id] >= N_RB_UL-1) {
-        LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
-               module_idP,frameP,subframeP,UE_id,rnti,CC_id);
-        break;
+      if(N_RB_UL == 25){
+        if (first_rb[CC_id] >= N_RB_UL-1) {
+          LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
+                 module_idP,frameP,subframeP,UE_id,rnti,CC_id);
+          break;
+        }
+      }else{
+          if (first_rb[CC_id] >= N_RB_UL-2) {
+            LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
+                   module_idP,frameP,subframeP,UE_id,rnti,CC_id);
+            break;
+          }
       }
       //MSG3
       if (ulsch_ue_select[CC_id].list[ulsch_ue_num].ue_priority == SCH_UL_MSG3) {
diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c
index c0413c3411d9e753d9267ce951406898b20a859e..3650601144f93d897e3a82a20d81423d6120f703 100644
--- a/openair2/LAYER2/MAC/pre_processor.c
+++ b/openair2/LAYER2/MAC/pre_processor.c
@@ -2620,7 +2620,11 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
   // MCS and RB assgin
   for ( CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++ ) {
     frame_parms = &(RC.eNB[module_idP][CC_id]->frame_parms);
-    first_rb[CC_id] = 1;
+    if(frame_parms->N_RB_UL == 25){
+      first_rb[CC_id] = 1;
+    }else{
+      first_rb[CC_id] = 2;
+    } 
     ue_num_temp       = ulsch_ue_select[CC_id].ue_num;
     for ( ulsch_ue_num = 0; ulsch_ue_num < ulsch_ue_select[CC_id].ue_num; ulsch_ue_num++ ) {
 
@@ -2639,13 +2643,23 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
       }
 
       rnti = UE_RNTI(CC_id,UE_id);
-      if ( first_rb[CC_id] >= frame_parms->N_RB_UL-1 ) {
-          LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
-                 module_idP,frameP,subframeP,UE_id,rnti,CC_id);
-        break;
+      if(frame_parms->N_RB_UL == 25){
+        if ( first_rb[CC_id] >= frame_parms->N_RB_UL-1 ){
+            LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
+                   module_idP,frameP,subframeP,UE_id,rnti,CC_id);
+          break;
+        }
+        // calculate the average rb ( remain UE)
+        total_rbs = frame_parms->N_RB_UL-1-first_rb[CC_id];
+      }else{
+        if ( first_rb[CC_id] >= frame_parms->N_RB_UL-2 ){
+            LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
+                   module_idP,frameP,subframeP,UE_id,rnti,CC_id);
+          break;
+        }
+        // calculate the average rb ( remain UE)
+        total_rbs = frame_parms->N_RB_UL-2-first_rb[CC_id];
       }
-      // calculate the average rb ( remain UE)
-      total_rbs = frame_parms->N_RB_UL-1-first_rb[CC_id];
       average_rbs = (int)round((double)total_rbs/(double)ue_num_temp);
       if ( average_rbs < 3 ) {
         ue_num_temp--;
@@ -2667,8 +2681,12 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
           } else {
               // assigne RBS(remain rbs)
               ulsch_ue_select[CC_id].list[ulsch_ue_num].start_rb = first_rb[CC_id];
-              first_rb[CC_id] = first_rb[CC_id] + total_rbs;
-              ulsch_ue_select[CC_id].list[ulsch_ue_num].nb_rb = first_rb[CC_id]-ulsch_ue_select[CC_id].list[ulsch_ue_num].start_rb;
+              rb_table_index = 2;
+              while(rb_table[rb_table_index] <= total_rbs){
+                rb_table_index++;
+              }
+              ulsch_ue_select[CC_id].list[ulsch_ue_num].nb_rb = rb_table[rb_table_index-1];
+              first_rb[CC_id] = first_rb[CC_id] + rb_table[rb_table_index-1];
           }
         }
       }else{
@@ -2683,16 +2701,27 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
             rb_table_index = 2;
             tbs = get_TBS_UL(mcs,rb_table[rb_table_index])<<3;
             tx_power= estimate_ue_tx_power(tbs,rb_table[rb_table_index],0,frame_parms->Ncp,0);
+
             while ( (((UE_template->phr_info - tx_power) < 0 ) || (tbs > UE_template->ul_total_buffer)) && (mcs > 3) ) {
               mcs--;
               tbs = get_TBS_UL(mcs,rb_table[rb_table_index])<<3;
               tx_power= estimate_ue_tx_power(tbs,rb_table[rb_table_index],0,frame_parms->Ncp,0);
             }
-            while ( (tbs < UE_template->ul_total_buffer) && (rb_table[rb_table_index]<(frame_parms->N_RB_UL-first_rb[CC_id])) &&
-                   ((UE_template->phr_info - tx_power) > 0) && (rb_table_index < 32 )) {
-              rb_table_index++;
-              tbs = get_TBS_UL(mcs,rb_table[rb_table_index])<<3;
-              tx_power= estimate_ue_tx_power(tbs,rb_table[rb_table_index],0,frame_parms->Ncp,0);
+
+            if(frame_parms->N_RB_UL == 25){
+              while ( (tbs < UE_template->ul_total_buffer) && (rb_table[rb_table_index]<(frame_parms->N_RB_UL-1-first_rb[CC_id])) &&
+                     ((UE_template->phr_info - tx_power) > 0) && (rb_table_index < 32 )) {
+                rb_table_index++;
+                tbs = get_TBS_UL(mcs,rb_table[rb_table_index])<<3;
+                tx_power= estimate_ue_tx_power(tbs,rb_table[rb_table_index],0,frame_parms->Ncp,0);
+              }
+            }else{
+                while ( (tbs < UE_template->ul_total_buffer) && (rb_table[rb_table_index]<(frame_parms->N_RB_UL-2-first_rb[CC_id])) &&
+                       ((UE_template->phr_info - tx_power) > 0) && (rb_table_index < 32 )) {
+                  rb_table_index++;
+                  tbs = get_TBS_UL(mcs,rb_table[rb_table_index])<<3;
+                  tx_power= estimate_ue_tx_power(tbs,rb_table[rb_table_index],0,frame_parms->Ncp,0);
+                }
             }
             if ( rb_table[rb_table_index]<3 ) {
               rb_table_index=2;
diff --git a/openair2/LAYER2/MAC/rar_tools.c b/openair2/LAYER2/MAC/rar_tools.c
index 2fa979b8b769c803e9d4c5ba876b302f62108d8d..f48a53636f8e00e85bebf07133ffa6ed8f82ae1b 100644
--- a/openair2/LAYER2/MAC/rar_tools.c
+++ b/openair2/LAYER2/MAC/rar_tools.c
@@ -71,7 +71,11 @@ fill_rar(const module_id_t module_idP,
     ra->timing_offset /= 16;	//T_A = N_TA/16, where N_TA should be on a 30.72Msps
     rar[0] = (uint8_t) (ra->timing_offset >> (2 + 4));	// 7 MSBs of timing advance + divide by 4
     rar[1] = (uint8_t) (ra->timing_offset << (4 - 2)) & 0xf0;	// 4 LSBs of timing advance + divide by 4
-    ra->msg3_first_rb = 1;
+    if(N_RB_UL == 25){
+      ra->msg3_first_rb = 1;
+    }else{
+      ra->msg3_first_rb = 2;
+    }
     ra->msg3_nb_rb = 1;
     uint16_t rballoc = mac_computeRIV(N_RB_UL, ra->msg3_first_rb, ra->msg3_nb_rb);	// first PRB only for UL Grant
     rar[1] |= (rballoc >> 7) & 7;	// Hopping = 0 (bit 3), 3 MSBs of rballoc
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
index 0d208d30ccb98ffface7fde28e958fde64350ddb..95b159b0d7245c84e03a59c78570c712a42393b6 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -656,10 +656,10 @@ uint8_t do_SIB23(uint8_t Mod_id,
     = configuration->pucch_nRB_CQI[CC_id];
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.nCS_AN
     = configuration->pucch_nCS_AN[CC_id];
-#if !defined(Rel10) && !defined(Rel14)
+//#if !defined(Rel10) && !defined(Rel14)
   (*sib2)->radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN
     = configuration->pucch_n1_AN[CC_id];
-#endif
+//#endif
 
   // SRS Config
   if (configuration->srs_enable[CC_id]==1) {