diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index 038b1d7..182a9a5 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -48,7 +48,15 @@
 
     /* Need to get the scale and initial value */
     /* service == busname */
-    std::string path = getSensorPath(type, id);
+    std::string path;
+    if (info->readPath.empty())
+    {
+        path = getSensorPath(type, id);
+    }
+    else
+    {
+        path = info->readPath;
+    }
 
     SensorProperties settings;
     bool failed;
@@ -84,7 +92,7 @@
     const SensorProperties& settings, bool failed, const std::string& path,
     const std::shared_ptr<DbusPassiveRedundancy>& redundancy) :
     ReadInterface(),
-    _signal(bus, getMatch(type, id).c_str(), dbusHandleSignal, this), _id(id),
+    _signal(bus, getMatch(path).c_str(), dbusHandleSignal, this), _id(id),
     _helper(std::move(helper)), _failed(failed), path(path),
     redundancy(redundancy)
 
diff --git a/dbus/dbusutil.cpp b/dbus/dbusutil.cpp
index 9132a60..a1f0a95 100644
--- a/dbus/dbusutil.cpp
+++ b/dbus/dbusutil.cpp
@@ -111,13 +111,13 @@
     return std::string("/xyz/openbmc_project/sensors/" + layer + "/" + id);
 }
 
-std::string getMatch(const std::string& type, const std::string& id)
+std::string getMatch(const std::string& path)
 {
     return std::string("type='signal',"
                        "interface='org.freedesktop.DBus.Properties',"
                        "member='PropertiesChanged',"
                        "path='" +
-                       getSensorPath(type, id) + "'");
+                       path + "'");
 }
 
 bool validType(const std::string& type)
diff --git a/dbus/dbusutil.hpp b/dbus/dbusutil.hpp
index 7faf4fc..5012af0 100644
--- a/dbus/dbusutil.hpp
+++ b/dbus/dbusutil.hpp
@@ -29,7 +29,7 @@
 };
 
 std::string getSensorPath(const std::string& type, const std::string& id);
-std::string getMatch(const std::string& type, const std::string& id);
+std::string getMatch(const std::string& path);
 void scaleSensorReading(const double min, const double max, double& value);
 bool validType(const std::string& type);
 
