diff --git a/src/fru_device.cpp b/src/fru_device.cpp
index 50f1e4b..d2af2a2 100644
--- a/src/fru_device.cpp
+++ b/src/fru_device.cpp
@@ -79,6 +79,7 @@
     foundDevices;
 
 static boost::container::flat_map<size_t, std::set<size_t>> failedAddresses;
+static boost::container::flat_map<size_t, std::set<size_t>> fruAddresses;
 
 boost::asio::io_service io;
 
@@ -377,6 +378,8 @@
         // Scan for i2c eeproms loaded on this bus.
         std::set<int> skipList = findI2CEeproms(bus, devices);
         std::set<size_t>& failedItems = failedAddresses[bus];
+        std::set<size_t>& foundItems = fruAddresses[bus];
+        foundItems.clear();
 
         std::set<size_t>* rootFailures = nullptr;
         int rootBus = getRootBus(bus);
@@ -384,6 +387,7 @@
         if (rootBus >= 0)
         {
             rootFailures = &(failedAddresses[rootBus]);
+            foundItems = fruAddresses[rootBus];
         }
 
         constexpr int startSkipSlaveAddr = 0;
@@ -391,6 +395,10 @@
 
         for (int ii = first; ii <= last; ii++)
         {
+            if (foundItems.find(ii) != foundItems.end())
+            {
+                continue;
+            }
             if (skipList.find(ii) != skipList.end())
             {
                 continue;
@@ -464,6 +472,7 @@
             }
 
             devices->emplace(ii, device);
+            fruAddresses[bus].insert(ii);
         }
         return 1;
     });
@@ -695,18 +704,6 @@
             std::string path = busIface.second->get_object_path();
             if (std::regex_match(path, std::regex(productName + "(_\\d+|)$")))
             {
-                if (isMuxBus(bus) && bus != busIface.first.first &&
-                    address == busIface.first.second &&
-                    (getFRUInfo(static_cast<uint8_t>(busIface.first.first),
-                                static_cast<uint8_t>(busIface.first.second)) ==
-                     getFRUInfo(static_cast<uint8_t>(bus),
-                                static_cast<uint8_t>(address))))
-                {
-                    // This device is already added to the lower numbered bus,
-                    // do not replicate it.
-                    return;
-                }
-
                 // Check if the match named has extra information.
                 found = true;
                 std::smatch baseMatch;
@@ -1108,7 +1105,8 @@
         return false;
     }
 
-    struct FruArea fruAreaParams{};
+    struct FruArea fruAreaParams
+    {};
     size_t fruDataIter = 0;
 
     if (!findFruAreaLocationAndField(fruData, propertyName, fruAreaParams,
