diff --git a/rust/daemon/src/bluetooth/facade.rs b/rust/daemon/src/bluetooth/facade.rs
index c236a7b..5921924 100644
--- a/rust/daemon/src/bluetooth/facade.rs
+++ b/rust/daemon/src/bluetooth/facade.rs
@@ -54,9 +54,13 @@
 }
 
 /// Starts the Bluetooth service.
-pub fn bluetooth_start(config: &MessageField<BluetoothConfig>, instance_num: u16) {
+pub fn bluetooth_start(
+    config: &MessageField<BluetoothConfig>,
+    instance_num: u16,
+    disable_address_reuse: bool,
+) {
     let proto_bytes = config.as_ref().unwrap_or_default().write_to_bytes().unwrap();
-    ffi_bluetooth::bluetooth_start(&proto_bytes, instance_num);
+    ffi_bluetooth::bluetooth_start(&proto_bytes, instance_num, disable_address_reuse);
 }
 
 /// Stops the Bluetooth service.
diff --git a/rust/daemon/src/bluetooth/mocked.rs b/rust/daemon/src/bluetooth/mocked.rs
index fa8cbe5..2ae0ea1 100644
--- a/rust/daemon/src/bluetooth/mocked.rs
+++ b/rust/daemon/src/bluetooth/mocked.rs
@@ -76,7 +76,11 @@
 }
 
 /// Starts the Bluetooth service.
-pub fn bluetooth_start(_config: &MessageField<BluetoothConfig>, _instance_num: u16) {
+pub fn bluetooth_start(
+    _config: &MessageField<BluetoothConfig>,
+    _instance_num: u16,
+    _disable_address_reuse: bool,
+) {
     info!("bluetooth service started");
 }
 
diff --git a/rust/daemon/src/config.rs b/rust/daemon/src/config.rs
index 2b118e0..ba1d36b 100644
--- a/rust/daemon/src/config.rs
+++ b/rust/daemon/src/config.rs
@@ -18,7 +18,6 @@
 
 static SET_DEV_CALLED: Once = Once::new();
 static SET_PCAP_CALLED: Once = Once::new();
-static SET_DISABLE_ADDRESS_REUSE_CALLED: Once = Once::new();
 
 lazy_static! {
     static ref CONFIG: RwLock<Config> = RwLock::new(Config::new());
@@ -27,12 +26,11 @@
 struct Config {
     pub dev: Option<bool>,
     pub pcap: Option<bool>,
-    pub disable_address_reuse: Option<bool>,
 }
 
 impl Config {
     pub fn new() -> Self {
-        Self { dev: None, pcap: None, disable_address_reuse: None }
+        Self { dev: None, pcap: None }
     }
 }
 
@@ -64,20 +62,6 @@
     });
 }
 
-/// Get the flag of disable_address_reuse
-pub fn get_disable_address_reuse() -> bool {
-    let config = CONFIG.read().unwrap();
-    config.disable_address_reuse.unwrap_or(false)
-}
-
-/// Set the flag of disable_address_reuse
-pub fn set_disable_address_reuse(flag: bool) {
-    SET_DISABLE_ADDRESS_REUSE_CALLED.call_once(|| {
-        let mut config = CONFIG.write().unwrap();
-        config.disable_address_reuse = Some(flag);
-    });
-}
-
 #[cfg(test)]
 mod tests {
     use super::*;
@@ -109,18 +93,4 @@
         set_pcap(false);
         assert!(get_pcap());
     }
-
-    #[test]
-    fn test_disable_address_reuse() {
-        // Check if default disable_address_reuse boolean is false
-        assert!(!get_disable_address_reuse());
-
-        // Check if set_disable_address_reuse changes the flag to true
-        set_disable_address_reuse(true);
-        assert!(get_disable_address_reuse());
-
-        // Check if set_disable_address_reuse can only be called once
-        set_disable_address_reuse(false);
-        assert!(get_disable_address_reuse());
-    }
 }
diff --git a/rust/daemon/src/ffi.rs b/rust/daemon/src/ffi.rs
index 468ec6a..57adcd5 100644
--- a/rust/daemon/src/ffi.rs
+++ b/rust/daemon/src/ffi.rs
@@ -26,8 +26,6 @@
 use crate::transport::dispatcher::{handle_request_cxx, handle_response};
 use crate::transport::grpc::{register_grpc_transport, unregister_grpc_transport};
 
-use crate::config::get_disable_address_reuse;
-
 use crate::captures::captures_handler::handle_capture_cxx;
 use crate::devices::devices_handler::{
     add_chip_cxx, get_distance_cxx, handle_device_cxx, remove_chip_cxx, AddChipResultCxx,
@@ -215,7 +213,7 @@
 
         #[rust_name = bluetooth_start]
         #[namespace = "netsim::hci::facade"]
-        pub fn Start(proto_bytes: &[u8], instance_num: u16);
+        pub fn Start(proto_bytes: &[u8], instance_num: u16, disable_address_reuse: bool);
 
         #[rust_name = bluetooth_stop]
         #[namespace = "netsim::hci::facade"]
@@ -354,12 +352,6 @@
 
         #[cxx_name = "GetVersion"]
         fn get_version() -> String;
-
-        // Disable Address Reuse Flag
-
-        #[cxx_name = "GetDisableAddressReuse"]
-        fn get_disable_address_reuse() -> bool;
-
     }
 
     #[allow(dead_code)]
diff --git a/rust/daemon/src/rust_main.rs b/rust/daemon/src/rust_main.rs
index d7521c3..a0fe60f 100644
--- a/rust/daemon/src/rust_main.rs
+++ b/rust/daemon/src/rust_main.rs
@@ -15,6 +15,7 @@
 use clap::Parser;
 use log::warn;
 use log::{error, info};
+#[cfg(feature = "cuttlefish")]
 use netsim_common::system::netsimd_temp_dir;
 use netsim_common::util::os_utils::{get_hci_port, get_instance, remove_netsim_ini};
 use netsim_common::util::zip_artifact::zip_artifacts;
@@ -180,7 +181,6 @@
         args.no_cli_ui,
         args.no_web_ui,
         args.pcap,
-        args.disable_address_reuse,
         hci_port,
         instance_num,
         args.dev,
@@ -202,7 +202,7 @@
     wait_devices(device_events_rx);
 
     // Start radio facades
-    bluetooth_facade::bluetooth_start(&config.bluetooth, instance_num);
+    bluetooth_facade::bluetooth_start(&config.bluetooth, instance_num, args.disable_address_reuse);
     wifi_facade::wifi_start(&config.wifi);
 
     // Run all netsimd services (grpc, socket, web)
diff --git a/rust/daemon/src/service.rs b/rust/daemon/src/service.rs
index fefd8b5..14ac3c8 100644
--- a/rust/daemon/src/service.rs
+++ b/rust/daemon/src/service.rs
@@ -14,7 +14,7 @@
 
 use crate::bluetooth::advertise_settings as ble_advertise_settings;
 use crate::captures::captures_handler::clear_pcap_files;
-use crate::config::{get_dev, set_dev, set_disable_address_reuse, set_pcap};
+use crate::config::{get_dev, set_dev, set_pcap};
 use crate::ffi::ffi_transport::{run_grpc_server_cxx, GrpcServer};
 use crate::http_server::server::run_http_server;
 use crate::transport::socket::run_socket_transport;
@@ -32,7 +32,6 @@
     no_cli_ui: bool,
     no_web_ui: bool,
     pcap: bool,
-    disable_address_reuse: bool,
     hci_port: u16,
     instance_num: u16,
     dev: bool,
@@ -46,7 +45,6 @@
         no_cli_ui: bool,
         no_web_ui: bool,
         pcap: bool,
-        disable_address_reuse: bool,
         hci_port: u16,
         instance_num: u16,
         dev: bool,
@@ -57,7 +55,6 @@
             no_cli_ui,
             no_web_ui,
             pcap,
-            disable_address_reuse,
             hci_port,
             instance_num,
             dev,
@@ -89,7 +86,6 @@
         }
         set_pcap(self.service_params.pcap);
         set_dev(self.service_params.dev);
-        set_disable_address_reuse(self.service_params.disable_address_reuse);
     }
 
     /// Runs netsim gRPC server
diff --git a/src/hci/bluetooth_facade.cc b/src/hci/bluetooth_facade.cc
index eae705a..f706cfd 100644
--- a/src/hci/bluetooth_facade.cc
+++ b/src/hci/bluetooth_facade.cc
@@ -188,7 +188,7 @@
 
 // Initialize the rootcanal library.
 void Start(const rust::Slice<::std::uint8_t const> proto_bytes,
-           uint16_t instance_num) {
+           uint16_t instance_num, bool disable_address_reuse) {
   if (gStarted) return;
 
   // output is to a file, so no color wanted
@@ -229,7 +229,7 @@
 
   // Disable Address Reuse if '--disable_address_reuse' flag is true
   // TODO: once config files are active, use the value from config proto
-  gTestModel->SetReuseDeviceAddresses(!netsim::GetDisableAddressReuse());
+  gTestModel->SetReuseDeviceAddresses(!disable_address_reuse);
 
   // NOTE: 0:BR_EDR, 1:LOW_ENERGY. The order is used by bluetooth CTS.
   phy_classic_index_ = gTestModel->AddPhy(rootcanal::Phy::Type::BR_EDR);
diff --git a/src/hci/bluetooth_facade.h b/src/hci/bluetooth_facade.h
index fb82383..8a05755 100644
--- a/src/hci/bluetooth_facade.h
+++ b/src/hci/bluetooth_facade.h
@@ -52,7 +52,7 @@
 void RemoveRustDevice(uint32_t facade_id);
 
 void Start(const rust::Slice<::std::uint8_t const> proto_bytes,
-           uint16_t instance_num);
+           uint16_t instance_num, bool disable_address_reuse);
 void Stop();
 
 // Cxx functions for rust ffi.
