diff --git a/openair1/PHY/NR_TRANSPORT/nr_pss.c b/openair1/PHY/NR_TRANSPORT/nr_pss.c
index 0c8984c4eda4bab2ac77ba55ddf3b8afb074e348..f686f32dcdd2c8b537cae8b79a6cf76027450436 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_pss.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_pss.c
@@ -68,12 +68,10 @@ int nr_generate_pss(  int16_t *d_pss,
 
     for (m = 0; m < NR_PSS_LENGTH; m++) {
       ((int16_t*)txdataF[aa])[2*(l*frame_parms->ofdm_symbol_size + k)] = (a * d_pss[m]) >> 15;
-      k+=1;
+      k++;
 
-      if (k >= frame_parms->ofdm_symbol_size) {
-        k++; //skip DC
+      if (k >= frame_parms->ofdm_symbol_size)
         k-=frame_parms->ofdm_symbol_size;
-      }
     }
   }
 
diff --git a/openair1/PHY/NR_TRANSPORT/nr_sss.c b/openair1/PHY/NR_TRANSPORT/nr_sss.c
index ac3d4d27433b267385e9995b4be8aae64c2a12b7..5b82e4e4c9f4e91bcdb88f9ee3a778202a2f50d1 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_sss.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_sss.c
@@ -78,12 +78,10 @@ int nr_generate_sss(  int16_t *d_sss,
 
     for (m = 0; m < NR_SSS_LENGTH; m++) {
       ((int16_t*)txdataF[aa])[2*(l*frame_parms->ofdm_symbol_size + k)] = (a * d_sss[m]) >> 15;
-      k+=1;
+      k++;
 
-      if (k >= frame_parms->ofdm_symbol_size) {
-        k++; //skip DC
+      if (k >= frame_parms->ofdm_symbol_size)
         k-=frame_parms->ofdm_symbol_size;
-      }
     }
   }
 #ifdef NR_SSS_DEBUG
diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h
index 7d9ef2962792fc5f38b343dea0d586e216570dc8..113c0a614bbde1dfe08360380addcc58b051cb2c 100644
--- a/openair1/PHY/defs.h
+++ b/openair1/PHY/defs.h
@@ -169,6 +169,14 @@ static inline void* malloc16_clear( size_t size )
 
 #define nr_subframe_t lte_subframe_t
 
+typedef enum{
+  nr_ssb_type_A = 0,
+  nr_ssb_type_B,
+  nr_ssb_type_C,
+  nr_ssb_type_D,
+  nr_ssb_type_E
+} nr_ssb_type_e;
+
 typedef struct {
   /// EUTRA Band
   uint8_t eutra_band;
@@ -204,8 +212,11 @@ typedef struct {
   uint32_t samples_per_subframe_wCP;
   /// Number of samples in a radio frame without CP
   uint32_t samples_per_frame_wCP;
+
+    //SSB related params
   /// Start in Subcarrier index of the SSB block
   uint16_t ssb_start_subcarrier;
+  nr_ssb_type_e ssb_type;
 
 } NR_DL_FRAME_PARMS;
 struct PHY_VARS_gNB_s;
diff --git a/openair1/SCHED_NR/phy_procedures_nr_common.c b/openair1/SCHED_NR/phy_procedures_nr_common.c
index 54f04eb9c782d4b982a9e0ccc66b87d71f8944b9..3699b2807c57c7a42bdff349978003d5df576c0b 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_common.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_common.c
@@ -40,42 +40,3 @@ nr_subframe_t nr_subframe_select(nfapi_config_request_t *cfg,unsigned char subfr
     return(SF_DL);
 }
 
-// First possible symbol is used with n=0
-int nr_get_ssb_start_symbol(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
-{
-  int mu = cfg->subframe_config.numerology_index_mu.value;
-  int symbol = 0;
-
-  switch(mu) {
-
-  case NR_MU_0:
-    symbol = 2;
-    break;
-
-  case NR_MU_1: // case B
-    symbol = 4;
-    break;
-
-  case NR_MU_3:
-    symbol = 4;
-    break;
-
-  case NR_MU_4:
-    symbol = 8;
-    break;
-
-  default:
-    AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
-  }
-
-  if (cfg->sch_config.half_frame_index.value)
-    symbol += (5 * fp->symbols_per_slot * fp->slots_per_subframe);
-
-  return symbol;
-}
-
-void nr_set_ssb_first_subcarrier(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
-{
-  int start_rb = cfg->sch_config.n_ssb_crb.value / pow(2,cfg->subframe_config.numerology_index_mu.value);
-  fp->ssb_start_subcarrier = 12 * start_rb + cfg->sch_config.ssb_subcarrier_offset.value;
-}
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index ece9e7a576f2759a44d8a5a6d17dae37d37a1614..8cbb3417773598cad76639addc0b9f5741021437 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -39,6 +39,79 @@
 #endif
 
 extern uint8_t nfapi_mode;
+/*
+int return_ssb_type(nfapi_config_request_t *cfg)
+{
+  int mu = cfg->subframe_config.numerology_index_mu.value;
+  nr_numerology_index_e ssb_type;
+
+  switch(mu) {
+
+  case NR_MU_0:
+    ssb_type = nr_ssb_type_A;
+    break;
+
+  case NR_MU_1:
+    ssb_type = nr_ssb_type_B;
+    break;
+
+  case NR_MU_3:
+    ssb_type = nr_ssb_type_D;
+    break;
+
+  case NR_MU_4:
+    ssb_type = nr_ssb_type_E;
+    break;
+
+  default:
+    AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
+  }
+
+  LOG_D(PHY, "SSB type %d\n", ssb_type);
+  return ssb_type;
+
+}*/
+
+// First SSB starting symbol candidate is used and type B is chosen for 30kHz SCS
+int nr_get_ssb_start_symbol(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
+{
+  int mu = cfg->subframe_config.numerology_index_mu.value;
+  int symbol = 0;
+
+  switch(mu) {
+
+  case NR_MU_0:
+    symbol = 2;
+    break;
+
+  case NR_MU_1: // case B
+    symbol = 4;
+    break;
+
+  case NR_MU_3:
+    symbol = 4;
+    break;
+
+  case NR_MU_4:
+    symbol = 8;
+    break;
+
+  default:
+    AssertFatal(0==1, "Invalid numerology index %d for the synchronization block\n", mu);
+  }
+
+  if (cfg->sch_config.half_frame_index.value)
+    symbol += (5 * fp->symbols_per_slot * fp->slots_per_subframe);
+
+  return symbol;
+}
+
+void nr_set_ssb_first_subcarrier(nfapi_config_request_t *cfg, NR_DL_FRAME_PARMS *fp)
+{
+  int start_rb = cfg->sch_config.n_ssb_crb.value / pow(2,cfg->subframe_config.numerology_index_mu.value);
+  fp->ssb_start_subcarrier = 12 * start_rb + cfg->sch_config.ssb_subcarrier_offset.value;
+  LOG_D(PHY, "SSB first subcarrier %d\n", fp->ssb_start_subcarrier);
+}
 
 void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int subframe) {