diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index 98303874998d72ab9c521113cd5ed96ede17508c..a7c01915da2fdb1cea879fcb3624608e64ac89e5 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -1936,15 +1936,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
     // deactivate dlsch once dlsch proc is done
     ue->dlsch_SI[gNB_id]->active = 0;
 
-    // FIXME: It was assumed that SIB1 has only one segment
-    int harq_pid = PHY_vars_UE_g[ue->Mod_id][ue->CC_id]->dlsch_SI[0]->current_harq_pid;
-    if(ue->dlsch_SI[gNB_id]->harq_processes[harq_pid]->harq_ack.ack == 1) {
-      nr_rrc_ue_decode_NR_SIB1_Message(ue->Mod_id, gNB_id, &ue->dlsch_SI[gNB_id]->harq_processes[harq_pid]->c[0][0],
-                                       ue->dlsch_SI[gNB_id]->harq_processes[harq_pid]->TBS);
-    } else {
-      LOG_D(PHY,"SIB1 CRC NOT OK");
-    }
-
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC_SI, VCD_FUNCTION_OUT);
   }
 
diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h
index 6f83b85c6a5793d17bcae24bb1ffdb54fe9623ce..59ce130c243b61cf6f0f2364bfe2ddf737f048f2 100755
--- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h
+++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h
@@ -58,6 +58,19 @@ int8_t nr_ue_decode_mib(
     void *pduP, 
     uint16_t cell_id );
 
+/**\brief decode sib1 pdu in NR_UE, from if_module dl_ind
+   \param module_id      module id
+   \param cc_id          component carrier id
+   \param gNB_index      gNB index
+   \param sibs_mask      sibs mask
+   \param pduP           pointer to pdu
+   \param pdu_length     length of pdu */
+int8_t nr_ue_decode_sib1(module_id_t module_id,
+                         int cc_id,
+                         unsigned int gNB_index,
+                         uint32_t sibs_mask,
+                         uint8_t *pduP,
+                         uint32_t pdu_len);
 
 /**\brief primitive from RRC layer to MAC layer for configuration L1/L2, now supported 4 rrc messages: MIB, cell_group_config for MAC/PHY, spcell_config(serving cell config)
    \param module_id                 module id
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
index 2a96b2b4381f00acd8e1a081e7cce9d9dd102993..b252a6660cc4c2b32a0a3122b92b3325b4167b6e 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
@@ -1009,6 +1009,16 @@ int8_t nr_ue_decode_mib(module_id_t module_id,
   return 0;
 }
 
+int8_t nr_ue_decode_sib1(module_id_t module_id,
+                         int cc_id,
+                         unsigned int gNB_index,
+                         uint32_t sibs_mask,
+                         uint8_t *pduP,
+                         uint32_t pdu_len) {
+  LOG_D(MAC, "Decode sib1\n");
+  nr_mac_rrc_data_ind_ue(module_id, cc_id, gNB_index, NR_BCCH_DL_SCH, (uint8_t *) pduP, pdu_len);
+  return 0;
+}
 
 //  TODO: change to UE parameter, scs: 15KHz, slot duration: 1ms
 uint32_t get_ssb_frame(uint32_t test){
diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
index 075c77982a8751adcff1592df32ca75543bf0e75..195c42f38759f7b84a26f85a29b588dee404852d 100644
--- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
@@ -60,9 +60,9 @@ int handle_bcch_bch(module_id_t module_id, int cc_id, unsigned int gNB_index, ui
 
 //  L2 Abstraction Layer
 int handle_bcch_dlsch(module_id_t module_id, int cc_id, unsigned int gNB_index, uint32_t sibs_mask, uint8_t *pduP, uint32_t pdu_len){
-
-  return 0;
+  return nr_ue_decode_sib1(module_id, cc_id, gNB_index, sibs_mask, pduP, pdu_len);
 }
+
 //  L2 Abstraction Layer
 int handle_dci(module_id_t module_id, int cc_id, unsigned int gNB_index, frame_t frame, int slot, fapi_nr_dci_indication_pdu_t *dci){
 
diff --git a/openair2/RRC/NR_UE/L2_interface_ue.c b/openair2/RRC/NR_UE/L2_interface_ue.c
index 44d50dd0efd6b4127e8d9900e76c1fb74eba6213..22e17f62660f09139ad3e1fc5bc82f6d8c8d14e7 100644
--- a/openair2/RRC/NR_UE/L2_interface_ue.c
+++ b/openair2/RRC/NR_UE/L2_interface_ue.c
@@ -46,16 +46,17 @@ nr_mac_rrc_data_ind_ue(
     const sdu_size_t      pdu_len){
 
     switch(channel){
-        case NR_BCCH_BCH:
-            AssertFatal( nr_rrc_ue_decode_NR_BCCH_BCH_Message( module_id, gNB_index, (uint8_t*)pduP, pdu_len) == 0, "UE decode BCCH-BCH error!\n");
-            break;
-        default:
-            break;
+      case NR_BCCH_BCH:
+        AssertFatal( nr_rrc_ue_decode_NR_BCCH_BCH_Message(module_id, gNB_index, (uint8_t*)pduP, pdu_len) == 0, "UE decode BCCH-BCH error!\n");
+        break;
+      case NR_BCCH_DL_SCH:
+        AssertFatal( nr_rrc_ue_decode_NR_SIB1_Message(module_id, gNB_index, (uint8_t*)pduP, pdu_len) == 0, "UE decode BCCH-DLSCH error!\n");
+        break;
+      default:
+        break;
     }
 
-
     return(0);
-
 }
 
 int8_t mac_rrc_nr_data_req_ue(const module_id_t Mod_idP,