diff --git a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
index fcfb7e7b25c5ea6971d0adeac1550a0a30e8d51b..5ce27612562295decfac1882807933f0349bfe41 100644
--- a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
+++ b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_interface.h
@@ -75,6 +75,9 @@
 #define NFAPI_VERSION_3_0_11	0x000
 #define NFAPI_VERSION_3_0_12    0x001
 
+#define NFAPI_HALF_FRAME_INDEX_FIRST_HALF 0
+#define NFAPI_HALF_FRAME_INDEX_SECOND_HALF 1
+
 // The IANA agreed port definition of the P5 SCTP VNF enpoint 
 // http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=7701
 #define NFAPI_P5_SCTP_PORT		7701
@@ -671,16 +674,12 @@ typedef struct {
 #define NFAPI_PHICH_CONFIG_PHICH_DURATION_TAG 0x0015
 #define NFAPI_PHICH_CONFIG_PHICH_POWER_OFFSET_TAG 0x0016
 
-typedef enum {
-  NFAPI_HALF_FRAME_INDEX_FIRST_HALF = 0,
-  NFAPI_HALF_FRAME_INDEX_SECOND_HALF = 1
-} nfapi_half_frame_index_e;
 
 typedef struct {
 	nfapi_uint16_tlv_t primary_synchronization_signal_epre_eprers;
 	nfapi_uint16_tlv_t secondary_synchronization_signal_epre_eprers;
 	nfapi_uint16_tlv_t physical_cell_id;
-  nfapi_half_frame_index_e half_frame_index;
+  nfapi_uint16_tlv_t half_frame_index;
   nfapi_uint16_tlv_t ssb_subcarrier_offset;
   nfapi_uint16_tlv_t ssb_position_in_burst;
   nfapi_uint16_tlv_t ssb_periodicity;
diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c
index 811025d65e669134968ee3cc24e3cc50fb797248..9d8a70905cb7bfdb51259e4a750722dab2d3f50a 100644
--- a/openair1/PHY/INIT/nr_init.c
+++ b/openair1/PHY/INIT/nr_init.c
@@ -345,7 +345,7 @@ void nr_phy_config_request(PHY_VARS_gNB *gNB)
   gNB_config->rf_config.tx_antenna_ports.value = 1;
   gNB_config->rf_config.dl_channel_bandwidth.value = 106;
   gNB_config->rf_config.ul_channel_bandwidth.value = 106;
-  gNB_config->sch_config.half_frame_index = 0;
+  gNB_config->sch_config.half_frame_index.value = 0;
   gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
 
 
diff --git a/openair1/PHY/NR_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
new file mode 100644
index 0000000000000000000000000000000000000000..7d3d44e1bd946a1f82cc168284c0faf10a82c7a3
--- /dev/null
+++ b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file PHY/LTE_TRANSPORT/pbch.c
+* \brief Top-level routines for generating and decoding  the PBCH/BCH physical/transport channel V8.6 2009-03
+* \author R. Knopp, F. Kaltenberger
+* \date 2011
+* \version 0.1
+* \company Eurecom
+* \email: knopp@eurecom.fr,florian.kaltenberger.fr
+* \note
+* \warning
+*/
+#include "PHY/defs.h"
+#include "PHY/CODING/extern.h"
+#include "PHY/CODING/lte_interleaver_inline.h"
+#include "defs.h"
+#include "extern.h"
+#include "PHY/extern.h"
+#include "PHY/sse_intrin.h"
+
+//#define DEBUG_PBCH 1
diff --git a/openair1/SCHED_NR/nr_ru_procedures.c b/openair1/SCHED_NR/nr_ru_procedures.c
index f2854f181551cdc597e94dfc008e798e8261436a..b9fe29b4e89aa59dc962c0587431d958eea749a6 100644
--- a/openair1/SCHED_NR/nr_ru_procedures.c
+++ b/openair1/SCHED_NR/nr_ru_procedures.c
@@ -72,7 +72,7 @@ void nr_feptx0(RU_t *ru,int slot) {
 
   slot_offset = subframe*fp->samples_per_subframe + (slot*(fp->samples_per_subframe / fp->slots_per_subframe));
 
-  LOG_I(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d\n",ru->proc.frame_tx, ru->proc.subframe_tx,slot);
+  LOG_D(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d\n",ru->proc.frame_tx, ru->proc.subframe_tx,slot);
 
   for (aa=0; aa<ru->nb_tx; aa++) {
      nr_normal_prefix_mod(&ru->common.txdataF_BF[aa][slot*slot_sizeF],
diff --git a/openair1/SCHED_NR/phy_procedures_nr_common.c b/openair1/SCHED_NR/phy_procedures_nr_common.c
index 90b1662b2c33fd4b995c43be1b160d3f75c4bc8b..ef00e588e2714478a3358b92fef47dd562ff2542 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_common.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_common.c
@@ -69,7 +69,7 @@ int nr_get_ssb_start_symbol(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
     AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
   }
 
-  if (cfg->sch_config.half_frame_index)
+  if (cfg->sch_config.half_frame_index.value)
     symbol += (5 * fp->symbols_per_slot * fp->slots_per_subframe);
 
   return symbol;
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index 99625582d44b37d66e735010ba56a5f355c5d9dd..905803ef1257c4d2982c50934f9f4cc296e674e8 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -46,14 +46,16 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int subframe) {
   nfapi_config_request_t *cfg = &gNB->gNB_config;
   int **txdataF = gNB->common_vars.txdataF;
   uint8_t *pbch_pdu=&gNB->pbch_pdu[0];
+  int ss_subframe = (cfg->sch_config.half_frame_index.value)? 0:5;
 
-  LOG_D(PHY,"common_signal_procedures: frame %d, subframe %d\n",frame,subframe);
+  LOG_I(PHY,"common_signal_procedures: frame %d, subframe %d\n",frame,subframe);
 
   int ssb_start_symbol = nr_get_ssb_start_symbol(cfg, fp);
   //nr_set_ssb_first_subcarrier(cfg);
 
-  if (subframe == (cfg->sch_config.half_frame_index)? 0:5)
+  if (subframe == ss_subframe)
   {
+    LOG_I(PHY,"SS TX: frame %d, subframe %d\n",frame,subframe);
     nr_generate_pss(gNB->d_pss, txdataF, AMP, ssb_start_symbol, cfg, fp);
     nr_generate_sss(gNB->d_sss, txdataF, AMP_OVER_2, ssb_start_symbol, cfg, fp);
   }