diff --git a/system/gd/hci/le_advertising_manager.cc b/system/gd/hci/le_advertising_manager.cc
index fc2cbd45b5224480f1d6bc91317da3f5d721c454..b9a9ddb1f01663fc5170bc17f95d231bc675bf95 100644
--- a/system/gd/hci/le_advertising_manager.cc
+++ b/system/gd/hci/le_advertising_manager.cc
@@ -183,7 +183,9 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
 
     uint8_t advertiser_id = event_view.GetAdvertisingHandle();
 
+    bool was_rotating_address = false;
     if (advertising_sets_[advertiser_id].address_rotation_alarm != nullptr) {
+      was_rotating_address = true;
       advertising_sets_[advertiser_id].address_rotation_alarm->Cancel();
       advertising_sets_[advertiser_id].address_rotation_alarm.reset();
     }
@@ -210,6 +212,13 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
       if (advertising_sets_[advertiser_id].duration == 0 &&
           advertising_sets_[advertiser_id].max_extended_advertising_events == 0) {
         LOG_INFO("Reenable advertising");
+        if (was_rotating_address) {
+          advertising_sets_[advertiser_id].address_rotation_alarm = std::make_unique<os::Alarm>(module_handler_);
+          advertising_sets_[advertiser_id].address_rotation_alarm->Schedule(
+              common::BindOnce(
+                  &impl::set_advertising_set_random_address_on_timer, common::Unretained(this), advertiser_id),
+              le_address_manager_->GetNextPrivateAddressIntervalMs());
+        }
         enable_advertiser(advertiser_id, true, 0, 0);
       }
     }