diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
index 35b2c4b1674f5cb4f2f8c102a8eceaed6c480766..18b723ccc00befaa620a9650ca63f5fc4c3dbd94 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
@@ -41,15 +41,16 @@ void nr_configure_srs(nfapi_nr_srs_pdu_t *srs_pdu, int module_id, int CC_id, int
   NR_UE_info_t *UE_info = &nrmac->UE_info;
   NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
 
-  NR_BWP_t ubwp = sched_ctrl->active_ubwp ?
-                  sched_ctrl->active_ubwp->bwp_Common->genericParameters :
-                  scc->uplinkConfigCommon->initialUplinkBWP->genericParameters;
+  const NR_SIB1_t *sib1 = nrmac->common_channels[0].sib1 ? nrmac->common_channels[0].sib1->message.choice.c1->choice.systemInformationBlockType1 : NULL;
+  NR_BWP_t *genericParameters = get_ul_bwp_genericParameters(sched_ctrl->active_ubwp,
+                                                             scc,
+                                                             sib1);
 
   srs_pdu->rnti = UE_info->rnti[UE_id];
   srs_pdu->handle = 0;
-  srs_pdu->bwp_size = NRRIV2BW(ubwp.locationAndBandwidth, MAX_BWP_SIZE);;
-  srs_pdu->bwp_start = NRRIV2PRBOFFSET(ubwp.locationAndBandwidth, MAX_BWP_SIZE);;
-  srs_pdu->subcarrier_spacing = ubwp.subcarrierSpacing;
+  srs_pdu->bwp_size = NRRIV2BW(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);;
+  srs_pdu->bwp_start = NRRIV2PRBOFFSET(genericParameters->locationAndBandwidth, MAX_BWP_SIZE);;
+  srs_pdu->subcarrier_spacing = genericParameters->subcarrierSpacing;
   srs_pdu->cyclic_prefix = 0;
   srs_pdu->num_ant_ports = srs_resource->nrofSRS_Ports;
   srs_pdu->num_symbols = srs_resource->resourceMapping.nrofSymbols;
@@ -131,13 +132,20 @@ void nr_schedule_srs(int module_id, frame_t frame) {
     }
 
     NR_SRS_Config_t *srs_config = NULL;
-    if (cg &&
-        cg->spCellConfig &&
-        cg->spCellConfig->spCellConfigDedicated &&
-        cg->spCellConfig->spCellConfigDedicated->uplinkConfig &&
-        cg->spCellConfig->spCellConfigDedicated->uplinkConfig->initialUplinkBWP) {
+    if (sched_ctrl->active_ubwp) {
+      if (sched_ctrl->active_ubwp->bwp_Dedicated &&
+          sched_ctrl->active_ubwp->bwp_Dedicated->srs_Config) {
+        srs_config = sched_ctrl->active_ubwp->bwp_Dedicated->srs_Config->choice.setup;
+      }
+    } else if (cg &&
+               cg->spCellConfig &&
+               cg->spCellConfig->spCellConfigDedicated &&
+               cg->spCellConfig->spCellConfigDedicated->uplinkConfig &&
+               cg->spCellConfig->spCellConfigDedicated->uplinkConfig->initialUplinkBWP) {
       srs_config = cg->spCellConfig->spCellConfigDedicated->uplinkConfig->initialUplinkBWP->srs_Config->choice.setup;
-    } else {
+    }
+
+    if (!srs_config) {
       continue;
     }
 
@@ -167,14 +175,15 @@ void nr_schedule_srs(int module_id, frame_t frame) {
         continue;
       }
 
-      NR_BWP_t ubwp = sched_ctrl->active_ubwp ?
-                        sched_ctrl->active_ubwp->bwp_Common->genericParameters :
-                        scc->uplinkConfigCommon->initialUplinkBWP->genericParameters;
+      const NR_SIB1_t *sib1 = nrmac->common_channels[0].sib1 ? nrmac->common_channels[0].sib1->message.choice.c1->choice.systemInformationBlockType1 : NULL;
+      NR_BWP_t *genericParameters = get_ul_bwp_genericParameters(sched_ctrl->active_ubwp,
+                                                                 scc,
+                                                                 sib1);
 
       uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
       uint16_t offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p);
 
-      int n_slots_frame = nr_slots_per_frame[ubwp.subcarrierSpacing];
+      int n_slots_frame = nr_slots_per_frame[genericParameters->subcarrierSpacing];
 
       // Check if UE will transmit the SRS in this frame
       if ( ((frame - offset/n_slots_frame)*n_slots_frame)%period == 0) {