diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index e4823200411244d77afd7c9498601195a95b34d2..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);
-            break;
+	    break;
 	  }
 	  else {
-            break;
+	    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..860440eca848b3174b5b4819d1ec213f239ef5d7 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -828,12 +828,21 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
 			     RC.config_file_name, i, prach_zero_correlation);
 	      
 	      RRC_CONFIGURATION_REQ (msg_p).prach_freq_offset[j] = prach_freq_offset;
-	      
+#ifndef UE_EXPANSION
 	      if ((prach_freq_offset <0) || (prach_freq_offset > 94))
 		AssertFatal (0,
 			     "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 0..94!\n",
 			     RC.config_file_name, i, prach_freq_offset);
-	      
+#else
+        if ((N_RB_DL == 25) && (prach_freq_offset != 2))
+          AssertFatal (0,
+              "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 2(N_RB_DL %d)!\n",
+              RC.config_file_name, i, prach_freq_offset,N_RB_DL);
+        if (((N_RB_DL == 50) || (N_RB_DL == 100)) && (prach_freq_offset != 3))
+          AssertFatal (0,
+              "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 3(N_RB_DL %d)!\n",
+              RC.config_file_name, i, prach_freq_offset,N_RB_DL);
+#endif
 	      
 	      RRC_CONFIGURATION_REQ (msg_p).pucch_delta_shift[j] = pucch_delta_shift-1;
 	      
@@ -856,7 +865,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 +873,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_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 0b4a6277d5edc423e4ed5a3ddc7b91cc8791a38b..401bfb334b37879bf04ba3a02a56da7eb5d8d445 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -1046,7 +1046,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++;
@@ -1610,19 +1614,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 f4f790c64324f4505f8ab7b0d3aefd56365f7c26..1fff931c74ee2d240cb835011f021d4d5c58a12b 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c
@@ -659,10 +659,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) {