diff --git a/dbus/dbushelper.cpp b/dbus/dbushelper.cpp
index 54c75ca..038e784 100644
--- a/dbus/dbushelper.cpp
+++ b/dbus/dbushelper.cpp
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include "config.h"
 
 #include "dbushelper.hpp"
 
@@ -160,7 +161,9 @@
     catch (const sdbusplus::exception_t&)
     {
         // do nothing, sensors don't have to expose critical thresholds
+#ifndef UNC_FAILSAFE
         return false;
+#endif
     }
 
     auto findCriticalLow = criticalMap.find("CriticalAlarmLow");
@@ -178,6 +181,32 @@
     {
         asserted = std::get<bool>(findCriticalHigh->second);
     }
+#ifdef UNC_FAILSAFE
+    if (!asserted)
+    {
+        auto warning = _bus.new_method_call(service.c_str(), path.c_str(),
+                                            propertiesintf, "GetAll");
+        warning.append(warningThreshInf);
+        PropertyMap warningMap;
+
+        try
+        {
+            auto msg = _bus.call(warning);
+            msg.read(warningMap);
+        }
+        catch (const sdbusplus::exception_t&)
+        {
+            // sensors don't have to expose non-critical thresholds
+            return false;
+        }
+        auto findWarningHigh = warningMap.find("WarningAlarmHigh");
+
+        if (findWarningHigh != warningMap.end())
+        {
+            asserted = std::get<bool>(findWarningHigh->second);
+        }
+    }
+#endif
     return asserted;
 }
 
diff --git a/dbus/dbushelper.hpp b/dbus/dbushelper.hpp
index 5086826..7d2be2d 100644
--- a/dbus/dbushelper.hpp
+++ b/dbus/dbushelper.hpp
@@ -18,6 +18,8 @@
     static constexpr char propertiesintf[] = "org.freedesktop.DBus.Properties";
     static constexpr char criticalThreshInf[] =
         "xyz.openbmc_project.Sensor.Threshold.Critical";
+    static constexpr char warningThreshInf[] =
+        "xyz.openbmc_project.Sensor.Threshold.Warning";
     static constexpr char availabilityIntf[] =
         "xyz.openbmc_project.State.Decorator.Availability";
 
diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index ac0d5cf..0963736 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -13,6 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include "config.h"
+
 #include "dbuspassive.hpp"
 
 #include "dbushelper_interface.hpp"
@@ -305,6 +307,23 @@
         }
         owner->setFailed(asserted);
     }
+#ifdef UNC_FAILSAFE
+    else if (msgSensor == "xyz.openbmc_project.Sensor.Threshold.Warning")
+    {
+        auto warningAlarmHigh = msgData.find("WarningAlarmHigh");
+        if (warningAlarmHigh == msgData.end())
+        {
+            return 0;
+        }
+
+        bool asserted = false;
+        if (warningAlarmHigh != msgData.end())
+        {
+            asserted = std::get<bool>(warningAlarmHigh->second);
+        }
+        owner->setFailed(asserted);
+    }
+#endif
     else if (msgSensor == "xyz.openbmc_project.State.Decorator.Availability")
     {
         auto available = msgData.find("Available");
