diff --git a/executables/nr-ru.c b/executables/nr-ru.c
index 1abcd3b7a159669598ce48ec4f165f2fd3fe1dbf..135eb39f815442416b4ffd1b6d576fb27c7cde2f 100644
--- a/executables/nr-ru.c
+++ b/executables/nr-ru.c
@@ -2252,6 +2252,9 @@ void RCconfig_RU(void)
           LOG_E(PHY, "Erroneous RU clock source in the provided configuration file: '%s'\n", *(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr));
         }
       }
+      else {
+	RC.ru[j]->openair0_cfg.clock_source = unset;
+      }
 
       if (strcmp(*(RUParamList.paramarray[j][RU_LOCAL_RF_IDX].strptr), "yes") == 0) {
         if ( !(config_isparamset(RUParamList.paramarray[j],RU_LOCAL_IF_NAME_IDX)) ) {
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index 931e2c1cd4ca05329c61decaaf3080c88242e529..027ad0f9b26a2cdcef773dcec6859b7228079ee9 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -106,7 +106,6 @@ int config_sync_var=-1;
 #endif
 volatile int             oai_exit = 0;
 
-static clock_source_t clock_source = internal;
 static int wait_for_sync = 0;
 
 unsigned int mmapped_dma=0;
diff --git a/executables/nr-softmodem.h b/executables/nr-softmodem.h
index 5d259eb251ffe311bccf38078e518759e2097806..8334c9913481155882cd36318dd85b6d666f34d7 100644
--- a/executables/nr-softmodem.h
+++ b/executables/nr-softmodem.h
@@ -23,7 +23,6 @@
     {"phy-test",              CONFIG_HLP_PHYTST,      PARAMFLAG_BOOL,   iptr:&phy_test,                     defintval:0,                   TYPE_INT,    0},        \
     {"usim-test",             CONFIG_HLP_USIM,        PARAMFLAG_BOOL,   u8ptr:&usim_test,                   defintval:0,                   TYPE_UINT8,  0},        \
     {"mmapped-dma",           CONFIG_HLP_DMAMAP,      PARAMFLAG_BOOL,   uptr:&mmapped_dma,                  defintval:0,                   TYPE_INT,    0},        \
-    {"external-clock",        CONFIG_HLP_EXCCLK,      PARAMFLAG_BOOL,   uptr:&clock_source,                 defintval:0,                   TYPE_INT,    0},        \
     {"wait-for-sync",         NULL,                   PARAMFLAG_BOOL,   iptr:&wait_for_sync,                defintval:0,                   TYPE_INT,    0},        \
     {"single-thread-disable", CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,   iptr:&single_thread_flag,           defintval:1,                   TYPE_INT,    0},        \
     {"A" ,                    CONFIG_HLP_TADV,        0,                uptr:&timing_advance,               defintval:0,                   TYPE_UINT,   0},        \
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index d8a916d13fba1c7fd61d2dc36ba0acefe8679aae..e0880c42a96b6e06fcf37b22a674a86822ef8732 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -116,7 +116,7 @@ volatile int             start_eNB = 0;
 volatile int             start_UE = 0;
 volatile int             oai_exit = 0;
 
-static clock_source_t    clock_source = internal;
+static clock_source_t    clock_source = unset;
 int                      single_thread_flag=1;
 static double            snr_dB=20;
 
diff --git a/executables/nr-uesoftmodem.h b/executables/nr-uesoftmodem.h
index 717924e19171fdf3059fdb61fe9fd2d574814a82..2434a1c23cdad3fcb99997ddc1a058d56cc0b805 100644
--- a/executables/nr-uesoftmodem.h
+++ b/executables/nr-uesoftmodem.h
@@ -65,7 +65,7 @@
   {"ulsch-max-errors",      CONFIG_HLP_ULMAXE,      0,              uptr:&ULSCH_max_consecutive_errors,    defuintval:0,          TYPE_UINT,   0}, \
   {"phy-test",              CONFIG_HLP_PHYTST,      PARAMFLAG_BOOL, iptr:&phy_test,                        defintval:0,           TYPE_INT,    0}, \
   {"usim-test",             CONFIG_HLP_USIM,        PARAMFLAG_BOOL, u8ptr:&usim_test,                      defintval:0,           TYPE_UINT8,  0}, \
-  {"external-clock",        CONFIG_HLP_EXCCLK,      PARAMFLAG_BOOL, uptr:&clock_source,                    defintval:0,           TYPE_INT,    0}, \
+  {"clock-source",          CONFIG_HLP_EXCCLK,      0,              iptr:&clock_source,                    defintval:0,           TYPE_INT,    0}, \
   {"single-thread-disable", CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL, iptr:&single_thread_flag,              defintval:1,           TYPE_INT,    0}, \
   {"nr-dlsch-demod-shift",  CONFIG_HLP_DLSHIFT,     0,              iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0,           TYPE_INT,    0}, \
   {"A" ,                    CONFIG_HLP_TADV,        0,              uptr:&timing_advance,                  defintval:0,           TYPE_UINT,   0}, \
diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index 9192020b40b23d3f14aa628b87274c3a5a55dda0..7052d6d40b960c3b0c32b9e3039281fc44fed415 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -135,6 +135,8 @@ typedef struct {
 
 /*! \brief Clock source types */
 typedef enum {
+  //! this means the paramter has not been set
+  unset=-1,
   //! This tells the underlying hardware to use the internal reference
   internal=0,
   //! This tells the underlying hardware to use the external reference
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index e0e10fd8991f99773f552619d02bc048c7997200..70652c6f62c87925cb76816ab198f35901204e50 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -1145,27 +1145,34 @@ extern "C" {
       device->priv = s;
 
       if (args.find("clock_source")==std::string::npos) {
-	LOG_I(HW, "Using clock_source == '%d'\n", openair0_cfg[0].clock_source);
-
 	if (openair0_cfg[0].clock_source == internal) {
 	  //in UHD 3.14 we could use
 	  //s->usrp->set_sync_source("clock_source=internal","time_source=internal");
 	  s->usrp->set_time_source("internal");
 	  s->usrp->set_clock_source("internal");
+	  LOG_D(HW,"Setting time and clock source to internal\n");
 	}
 	else if (openair0_cfg[0].clock_source == external ) {
 	  //s->usrp->set_sync_source("clock_source=external","time_source=external");
 	  s->usrp->set_time_source("external");
 	  s->usrp->set_clock_source("external");
+	  LOG_D(HW,"Setting time and clock source to external\n");
 	}
 	else if (openair0_cfg[0].clock_source==gpsdo) {
 	  s->usrp->set_clock_source("gpsdo");
 	  s->usrp->set_time_source("gpsdo");
+	  LOG_D(HW,"Setting time and clock source to gpsdo\n");
+	}
+	else { 
+	  LOG_W(HW,"Clock source set neither in usrp_args nor on command line, using default!\n");
 	}
-      } else {
-	LOG_W(HW, "clock_source already specified in device arguments! Ignoring command line parameter\n");
       }
-
+      else {
+	if (openair0_cfg[0].clock_source != unset) {
+	  LOG_W(HW,"Clock source set in both usrp_args and in clock_source, ingnoring the latter!\n");
+	}
+      }
+      
       if (s->usrp->get_clock_source(0) == "gpsdo") {
 	s->use_gps = 1;
         if (sync_to_gps(device)==EXIT_SUCCESS) {
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index f0cbbeceede4ffd17cd16891948a5fcbec193f2f..26a70843e64791ea71f9fb2c780fb9b93a4bf0ed 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -146,7 +146,7 @@
     {"dlsch-demod-shift", CONFIG_HLP_DLSHIFT,     0,               iptr:(int32_t *)&dlsch_demod_shift, defintval:0,          TYPE_INT,      0},   \
     {"usrp-args",         CONFIG_HLP_USRP_ARGS,   0,               strptr:(char **)&usrp_args,         defstrval:"type=b200",TYPE_STRING,   0},   \
     {"mmapped-dma",       CONFIG_HLP_DMAMAP,      PARAMFLAG_BOOL,  uptr:&mmapped_dma,                  defintval:0,          TYPE_INT,      0},   \
-    {"clock",             CONFIG_HLP_CLK,         0,               uptr:&clock_source,                 defintval:0,          TYPE_UINT,     0},   \
+    {"clock-source",      CONFIG_HLP_CLK,         0,               iptr:&clock_source,                 defintval:0,          TYPE_INT,      0},   \
     {"T" ,                CONFIG_HLP_TDD,         PARAMFLAG_BOOL,  iptr:&tddflag,                      defintval:0,          TYPE_INT,      0},   \
     {"A",                 CONFIG_HLP_TADV,        0,               iptr:&(timingadv),                  defintval:0,          TYPE_INT,      0}    \
   }