diff --git a/targets/RT/USER/eNB_transport_IQ.c b/targets/RT/USER/eNB_transport_IQ.c
index 594b075941c59a9b666cecc95a3734d14193842d..acb382386e4ef680414d69a55416498eee5ebb87 100644
--- a/targets/RT/USER/eNB_transport_IQ.c
+++ b/targets/RT/USER/eNB_transport_IQ.c
@@ -147,18 +147,22 @@ void config_BBU_mod( rrh_module_t *mod_enb, uint8_t RT_flag, uint8_t NRT_flag) {
   mod_enb->devs->openair0_cfg = mod_enb->eth_dev.openair0_cfg;
 
   /* check sanity of configuration parameters and print */
-  check_dev_config(mod_enb);    
-  
+  check_dev_config(mod_enb);  
+  if (rf_config_file[0] == '\0')  
+    mod_enb->devs->openair0_cfg->configFilename = NULL;
+  else
+    mod_enb->devs->openair0_cfg->configFilename = rf_config_file;
   /* initialize and configure the RF device */
   if (openair0_device_load(mod_enb->devs, mod_enb->devs->openair0_cfg)<0) {
     LOG_E(RRH,"Exiting, cannot initialize RF device.\n");
     exit(-1);
-  } else {
+  } else {   
     if (mod_enb->devs->type != NONE_DEV) {
       /* start RF device */
       if (mod_enb->devs->type == EXMIMO_DEV) {
 	//call start function for exmino
       } else {
+
 	if (mod_enb->devs->trx_start_func(mod_enb->devs)!=0)
 	  LOG_E(RRH,"Unable to initiate RF device.\n");
 	else
diff --git a/targets/RT/USER/rrh_gw.c b/targets/RT/USER/rrh_gw.c
index 87c4d4d77d136b99067a5e4353df7e8043ae4497..3def754e3d4fd71d71afab49f7897a3cec9453fa 100644
--- a/targets/RT/USER/rrh_gw.c
+++ b/targets/RT/USER/rrh_gw.c
@@ -111,8 +111,7 @@ rrh_module_t            *ue_array;
 
 openair0_vtimestamp 	hw_counter=0;
 
-
-
+char   rf_config_file[1024];
 
 static void debug_init(void);
 static void get_options(int argc, char *argv[]);
@@ -143,7 +142,7 @@ static int get_address(char* if_name, uint8_t flag);
 int main(int argc, char **argv) {
   
   unsigned int i;
-  
+  rf_config_file[0]='\0';
   /* parse input arguments */
   get_options(argc, argv);
   /* initialize logger and signal analyzer */
@@ -257,7 +256,7 @@ static void get_options(int argc, char *argv[]) {
 
   int 	opt;
 
-  while ((opt = getopt(argc, argv, "xvhlte:n:u:g:r:m:i:")) != -1) {
+  while ((opt = getopt(argc, argv, "xvhlte:n:u:g:r:m:i:f:")) != -1) {
     
     switch (opt) {
     case 'n':
@@ -299,6 +298,14 @@ static void get_options(int argc, char *argv[]) {
       /*In loopback mode rrh sends back to bbu what it receives*/
       loopback_flag=1; 
       break;
+    case 'f':
+      if (strlen(optarg)<=1024)
+	strcpy(rf_config_file,optarg);
+      else {
+	printf("Configuration filename is too long\n");
+	exit(-1);   
+      }
+      break;
     case 't':
       /* When measurements are enabled statistics related to TX/RX time are printed */
       measurements_flag=1; 
diff --git a/targets/RT/USER/rrh_gw_externs.h b/targets/RT/USER/rrh_gw_externs.h
index 8d2d1d7e5e8484a8bc697efc297d7404e24355a0..df59b9b1af323e4786a1280bc129dd582241318f 100644
--- a/targets/RT/USER/rrh_gw_externs.h
+++ b/targets/RT/USER/rrh_gw_externs.h
@@ -39,6 +39,7 @@
 
 #ifndef RRH_GW_EXTERNS_H_
 #define RRH_GW_EXTERNS_H_
+extern char   rf_config_file[1024];
 
 extern openair0_timestamp 	timestamp_UE_tx[4] ,timestamp_UE_rx[4] ,timestamp_eNB_rx[4],timestamp_eNB_tx[4];
 extern openair0_vtimestamp 	hw_counter;