diff --git a/subprojects/metrics-ipmi-blobs/util.cpp b/subprojects/metrics-ipmi-blobs/util.cpp
index 5bfc9c8..0e14698 100644
--- a/subprojects/metrics-ipmi-blobs/util.cpp
+++ b/subprojects/metrics-ipmi-blobs/util.cpp
@@ -348,4 +348,52 @@
     return true;
 }
 
+bool getECCErrorCounts(EccCounts& eccCounts)
+{
+    std::vector<
+        std::pair<std::string, std::variant<uint64_t, uint8_t, std::string>>>
+        values;
+    try
+    {
+        auto bus = sdbusplus::bus::new_default_system();
+        auto m =
+            bus.new_method_call("xyz.openbmc_project.memory.ECC",
+                                "/xyz/openbmc_project/metrics/memory/BmcECC",
+                                "org.freedesktop.DBus.Properties", "GetAll");
+        m.append("xyz.openbmc_project.Memory.MemoryECC");
+        auto reply = bus.call(m);
+        reply.read(values);
+    }
+    catch (const sdbusplus::exception::SdBusError& ex)
+    {
+        return false;
+    }
+    bool hasCorrectable = false;
+    bool hasUncorrectable = false;
+    for (const auto& [key, value] : values)
+    {
+        if (key == "ceCount")
+        {
+            eccCounts.correctableErrCount =
+                static_cast<int32_t>(std::get<uint64_t>(value));
+            hasCorrectable = true;
+            if (hasUncorrectable)
+            {
+                return true;
+            }
+        }
+        if (key == "ueCount")
+        {
+            eccCounts.uncorrectableErrCount =
+                static_cast<int32_t>(std::get<uint64_t>(value));
+            hasUncorrectable = true;
+            if (hasCorrectable)
+            {
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
 } // namespace metric_blob
