diff --git a/ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf b/ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
index 9b19536ba0ea52b82d07b9c728487888b9f8c1d2..b3899fdb6af99cac329720914e293cdbefc6e786 100644
--- a/ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
+++ b/ci-scripts/conf_files/rcc.band38.tm1.50PRB.multi.rru.conf
@@ -193,6 +193,7 @@ RUs = (
 	att_rx         = 20;
 	eNB_instances  = [0];
 	is_slave       = "no";
+	ota_sync_enabled = "yes";
     },
     {		  
       	local_if_name  = "enp129s0f0";			  
@@ -210,6 +211,7 @@ RUs = (
 	att_rx         = 20;
 	eNB_instances  = [0];
 	is_slave       = "yes";
+	ota_sync_enabled = "yes";
     }
 );  
 
diff --git a/ci-scripts/conf_files/rru.band38.tm1.master.conf b/ci-scripts/conf_files/rru.band38.tm1.master.conf
index 2e4124c421506156aee8e4c9f460c7d0300d9c79..101ce83892e66d3d52ef1a70b55be9c24ca384e4 100644
--- a/ci-scripts/conf_files/rru.band38.tm1.master.conf
+++ b/ci-scripts/conf_files/rru.band38.tm1.master.conf
@@ -15,6 +15,7 @@ RUs = (
 	max_rxgain                       = 100;
 	bands                            = [38];
         is_slave			 = "no";
+        ota_sync_enabled		 = "yes";
     }
 );  
 
diff --git a/ci-scripts/conf_files/rru.band38.tm1.slave.conf b/ci-scripts/conf_files/rru.band38.tm1.slave.conf
index e4c65e148e537f7f7e017871f117ff186da6ce9d..d5efe6bd61ae925e9c08cf12350a6635abbcec27 100644
--- a/ci-scripts/conf_files/rru.band38.tm1.slave.conf
+++ b/ci-scripts/conf_files/rru.band38.tm1.slave.conf
@@ -15,6 +15,7 @@ RUs = (
 	max_rxgain                       = 100;
 	bands                            = [38];
 	is_slave			 = "yes";
+	ota_sync_enabled		 = "yes";
     }
 );  
 
diff --git a/openair1/PHY/defs_eNB.h b/openair1/PHY/defs_eNB.h
index f7123d6b43b72b06ce88fbd317a70174a0691162..e5ed607ea2f338582624fc9c3ac260ec8b5ee886 100644
--- a/openair1/PHY/defs_eNB.h
+++ b/openair1/PHY/defs_eNB.h
@@ -339,6 +339,8 @@ typedef struct RU_t_s{
   int north_out_cnt;
   /// flag to indicate the RU is a slave to another source
   int is_slave;
+  /// flag to indicate if the RU has to perform OTA sync
+  int ota_sync_enable;
   /// flag to indicate that the RU should generate the DMRS sequence in slot 2 (subframe 1) for OTA synchronization and calibration
   int generate_dmrs_sync;
   /// flag to indicate if the RU has a control channel
diff --git a/openair2/ENB_APP/enb_paramdef.h b/openair2/ENB_APP/enb_paramdef.h
index 63aeee09e45afa8a0b00a4b58204d4ad1a6c734c..2caba47e2b6d77592e8ffe8cc7b79ff36fae647f 100644
--- a/openair2/ENB_APP/enb_paramdef.h
+++ b/openair2/ENB_APP/enb_paramdef.h
@@ -104,6 +104,7 @@ typedef enum {
 #define CONFIG_STRING_RU_SDR_CLK_SRC              "clock_src"
 #define CONFIG_STRING_RU_SF_EXTENSION             "sf_extension"
 #define CONFIG_STRING_RU_END_OF_BURST_DELAY       "end_of_burst_delay"
+#define CONFIG_STRING_RU_OTA_SYNC_ENABLE          "ota_sync_enabled"
 
 #define RU_LOCAL_IF_NAME_IDX          0
 #define RU_LOCAL_ADDRESS_IDX          1
@@ -128,6 +129,7 @@ typedef enum {
 #define RU_SDR_CLK_SRC                20
 #define RU_SF_EXTENSION_IDX           21
 #define RU_END_OF_BURST_DELAY_IDX     22
+#define RU_OTA_SYNC_ENABLE_IDX        23
 
 
 
@@ -153,12 +155,13 @@ typedef enum {
 {CONFIG_STRING_RU_ENB_LIST,                 	 NULL,       0,       uptr:NULL,       defintarrayval:DEFENBS,  TYPE_INTARRAY,    1}, \
 {CONFIG_STRING_RU_ATT_TX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
 {CONFIG_STRING_RU_ATT_RX,                   	 NULL,       0,       uptr:NULL,       defintval:0,		TYPE_UINT,	  0}, \
-{CONFIG_STRING_RU_IS_SLAVE,                      NULL,       0,       strptr:NULL,     defstrval:"no",         TYPE_STRING,      0}, \
+{CONFIG_STRING_RU_IS_SLAVE,                      NULL,       0,       strptr:NULL,     defstrval:"no",          TYPE_STRING,      0}, \
 {CONFIG_STRING_RU_NBIOTRRC_LIST,                 NULL,       0,       uptr:NULL,       defintarrayval:DEFENBS,  TYPE_INTARRAY,    1}, \
 {CONFIG_STRING_RU_SDR_ADDRS,                 	 NULL,       0,       strptr:NULL,     defstrval:"type=b200",   TYPE_STRING,      0}, \
 {CONFIG_STRING_RU_SDR_CLK_SRC,               	 NULL,       0,       strptr:NULL,     defstrval:"internal",    TYPE_STRING,      0}, \
 {CONFIG_STRING_RU_SF_EXTENSION,                  NULL,       0,       uptr:NULL,       defuintval:312,          TYPE_UINT,        0}, \
 {CONFIG_STRING_RU_END_OF_BURST_DELAY,            NULL,       0,       uptr:NULL,       defuintval:400,          TYPE_UINT,        0}, \
+{CONFIG_STRING_RU_OTA_SYNC_ENABLE,               NULL,       0,       strptr:NULL,     defstrval:"no",          TYPE_STRING,      0}, \
 }
 
 /*---------------------------------------------------------------------------------------------------------------------------------------*/
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 3ec08ac7b44e30e72b61039d43cdfaa815602a01..89abd124999abc6d964670340d9f57997e7c96ff 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -2633,7 +2633,11 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti
     // NOTE: multiple CC_id are not handled here yet!
     ru->openair0_cfg.clock_source  = clock_source;
     ru->openair0_cfg.time_source = time_source;
-    ru->generate_dmrs_sync = (ru->is_slave == 0) ? 1 : 0;
+    //ru->generate_dmrs_sync = (ru->is_slave == 0) ? 1 : 0;
+    if ((ru->is_slave == 0) && (ru->ota_sync_enable == 1))
+      ru->generate_dmrs_sync = 1;
+    else
+      ru->generate_dmrs_sync = 0;
     if (ru->generate_dmrs_sync == 1) {
       generate_ul_ref_sigs();
       ru->dmrssync = (int16_t*)malloc16_clear(ru->frame_parms.ofdm_symbol_size*2*sizeof(int16_t)); 	
@@ -2920,6 +2924,9 @@ void RCconfig_RU(void) {
           printf("RU %d is_slave=%s\n",j,*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr));
           if (strcmp(*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr), "yes") == 0) RC.ru[j]->is_slave=1;
           else RC.ru[j]->is_slave=0;
+          printf("RU %d ota_sync_enabled=%s\n",j,*(RUParamList.paramarray[j][RU_OTA_SYNC_ENABLE_IDX].strptr));
+          if (strcmp(*(RUParamList.paramarray[j][RU_OTA_SYNC_ENABLE_IDX].strptr), "yes") == 0) RC.ru[j]->ota_sync_enable=1;
+          else RC.ru[j]->ota_sync_enable=0;
 	}
 	RC.ru[j]->max_pdschReferenceSignalPower     = *(RUParamList.paramarray[j][RU_MAX_RS_EPRE_IDX].uptr);;
 	RC.ru[j]->max_rxgain                        = *(RUParamList.paramarray[j][RU_MAX_RXGAIN_IDX].uptr);