diff --git a/src/FruDevice.cpp b/src/FruDevice.cpp
index 8159f84..1bb68b7 100644
--- a/src/FruDevice.cpp
+++ b/src/FruDevice.cpp
@@ -78,8 +78,6 @@
 
 static BusMap busMap;
 
-static bool powerIsOn = false;
-
 static boost::container::flat_map<
     std::pair<size_t, size_t>, std::shared_ptr<sdbusplus::asio::dbus_interface>>
     foundDevices;
@@ -98,7 +96,7 @@
     boost::container::flat_map<
         std::pair<size_t, size_t>,
         std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
-    size_t& unknownBusObjectCount);
+    size_t& unknownBusObjectCount, bool powerIsOn);
 
 // Given a bus/address, produce the path in sysfs for an eeprom.
 static std::string getEepromPath(size_t bus, size_t address)
@@ -353,7 +351,7 @@
 }
 
 int getBusFRUs(int file, int first, int last, int bus,
-               std::shared_ptr<DeviceMap> devices)
+               std::shared_ptr<DeviceMap> devices, bool powerIsOn)
 {
 
     std::future<int> future = std::async(std::launch::async, [&]() {
@@ -531,7 +529,7 @@
 }
 
 static void findI2CDevices(const std::vector<fs::path>& i2cBuses,
-                           BusMap& busmap)
+                           BusMap& busmap, bool powerIsOn)
 {
     for (auto& i2cBus : i2cBuses)
     {
@@ -589,7 +587,7 @@
         }
 
         // fd is closed in this function in case the bus locks up
-        getBusFRUs(file, 0x03, 0x77, bus, device);
+        getBusFRUs(file, 0x03, 0x77, bus, device, powerIsOn);
 
         if (debug)
         {
@@ -603,10 +601,10 @@
     std::enable_shared_from_this<FindDevicesWithCallback>
 {
     FindDevicesWithCallback(const std::vector<fs::path>& i2cBuses,
-                            BusMap& busmap,
+                            BusMap& busmap, bool powerIsOn,
                             std::function<void(void)>&& callback) :
         _i2cBuses(i2cBuses),
-        _busMap(busmap), _callback(std::move(callback))
+        _busMap(busmap), _powerIsOn(powerIsOn), _callback(std::move(callback))
     {}
     ~FindDevicesWithCallback()
     {
@@ -614,11 +612,12 @@
     }
     void run()
     {
-        findI2CDevices(_i2cBuses, _busMap);
+        findI2CDevices(_i2cBuses, _busMap, _powerIsOn);
     }
 
     const std::vector<fs::path>& _i2cBuses;
     BusMap& _busMap;
+    bool _powerIsOn;
     std::function<void(void)> _callback;
 };
 
@@ -644,7 +643,8 @@
     boost::container::flat_map<
         std::pair<size_t, size_t>,
         std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
-    uint32_t bus, uint32_t address, size_t& unknownBusObjectCount)
+    uint32_t bus, uint32_t address, size_t& unknownBusObjectCount,
+    bool powerIsOn)
 {
     boost::container::flat_map<std::string, std::string> formattedFRU;
     resCodes res = formatFRU(device, formattedFRU);
@@ -756,14 +756,14 @@
             iface->register_property(
                 key, property.second + '\0',
                 [bus, address, propertyName, &dbusInterfaceMap,
-                 &unknownBusObjectCount](const std::string& req,
-                                         std::string& resp) {
+                 &unknownBusObjectCount,
+                 &powerIsOn](const std::string& req, std::string& resp) {
                     if (strcmp(req.c_str(), resp.c_str()) != 0)
                     {
                         // call the method which will update
                         if (updateFRUProperty(req, bus, address, propertyName,
                                               dbusInterfaceMap,
-                                              unknownBusObjectCount))
+                                              unknownBusObjectCount, powerIsOn))
                         {
                             resp = req;
                         }
@@ -929,7 +929,7 @@
     boost::container::flat_map<
         std::pair<size_t, size_t>,
         std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
-    bool dbusCall, size_t& unknownBusObjectCount)
+    bool dbusCall, size_t& unknownBusObjectCount, bool powerIsOn)
 {
     for (auto& [pair, interface] : foundDevices)
     {
@@ -956,8 +956,9 @@
     i2cBuses.emplace_back(busPath);
 
     auto scan = std::make_shared<FindDevicesWithCallback>(
-        i2cBuses, busmap,
-        [busNum, &busmap, &dbusInterfaceMap, &unknownBusObjectCount]() {
+        i2cBuses, busmap, powerIsOn,
+        [busNum, &busmap, &dbusInterfaceMap, &unknownBusObjectCount,
+         &powerIsOn]() {
             for (auto& busIface : dbusInterfaceMap)
             {
                 if (busIface.first.first == static_cast<size_t>(busNum))
@@ -974,7 +975,7 @@
             {
                 addFruObjectToDbus(device.second, dbusInterfaceMap,
                                    static_cast<uint32_t>(busNum), device.first,
-                                   unknownBusObjectCount);
+                                   unknownBusObjectCount, powerIsOn);
             }
         });
     scan->run();
@@ -985,7 +986,7 @@
     boost::container::flat_map<
         std::pair<size_t, size_t>,
         std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
-    size_t& unknownBusObjectCount)
+    size_t& unknownBusObjectCount, bool powerIsOn)
 {
     static boost::asio::deadline_timer timer(io);
     timer.expires_from_now(boost::posix_time::seconds(1));
@@ -1014,8 +1015,8 @@
         }
         foundDevices.clear();
 
-        auto scan =
-            std::make_shared<FindDevicesWithCallback>(i2cBuses, busmap, [&]() {
+        auto scan = std::make_shared<FindDevicesWithCallback>(
+            i2cBuses, busmap, powerIsOn, [&]() {
                 for (auto& busIface : dbusInterfaceMap)
                 {
                     objServer.remove_interface(busIface.second);
@@ -1039,7 +1040,7 @@
                     {
                         addFruObjectToDbus(device.second, dbusInterfaceMap,
                                            devicemap.first, device.first,
-                                           unknownBusObjectCount);
+                                           unknownBusObjectCount, powerIsOn);
                     }
                 }
             });
@@ -1064,7 +1065,7 @@
     boost::container::flat_map<
         std::pair<size_t, size_t>,
         std::shared_ptr<sdbusplus::asio::dbus_interface>>& dbusInterfaceMap,
-    size_t& unknownBusObjectCount)
+    size_t& unknownBusObjectCount, bool powerIsOn)
 {
     size_t updatePropertyReqLen = updatePropertyReq.length();
     if (updatePropertyReqLen == 1 || updatePropertyReqLen > 63)
@@ -1325,13 +1326,14 @@
     }
 
     // Rescan the bus so that GetRawFru dbus-call fetches updated values
-    rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount);
+    rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount, powerIsOn);
     return true;
 }
 
 int main()
 {
     static size_t unknownBusObjectCount = 0;
+    static bool powerIsOn = false;
     auto devDir = fs::path("/dev/");
     auto matchString = std::string(R"(i2c-\d+$)");
     std::vector<fs::path> i2cBuses;
@@ -1358,12 +1360,13 @@
                                 "xyz.openbmc_project.FruDeviceManager");
 
     iface->register_method("ReScan", [&]() {
-        rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount);
+        rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount,
+                     powerIsOn);
     });
 
     iface->register_method("ReScanBus", [&](uint8_t bus) {
-        rescanOneBus(busMap, bus, dbusInterfaceMap, true,
-                     unknownBusObjectCount);
+        rescanOneBus(busMap, bus, dbusInterfaceMap, true, unknownBusObjectCount,
+                     powerIsOn);
     });
 
     iface->register_method("GetRawFru", getFRUInfo);
@@ -1377,7 +1380,8 @@
             return;
         }
         // schedule rescan on success
-        rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount);
+        rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount,
+                     powerIsOn);
     });
     iface->initialize();
 
@@ -1398,7 +1402,8 @@
 
             if (powerIsOn)
             {
-                rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount);
+                rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount,
+                             powerIsOn);
             }
         };
 
@@ -1446,7 +1451,7 @@
                             }
                             rescanOneBus(busMap, static_cast<uint8_t>(bus),
                                          dbusInterfaceMap, false,
-                                         unknownBusObjectCount);
+                                         unknownBusObjectCount, powerIsOn);
                         }
                 }
 
@@ -1459,7 +1464,7 @@
 
     dirWatch.async_read_some(boost::asio::buffer(readBuffer), watchI2cBusses);
     // run the initial scan
-    rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount);
+    rescanBusses(busMap, dbusInterfaceMap, unknownBusObjectCount, powerIsOn);
 
     io.run();
     return 0;
