diff --git a/fw-update/device_updater.cpp b/fw-update/device_updater.cpp
index 14d507b..f61428b 100644
--- a/fw-update/device_updater.cpp
+++ b/fw-update/device_updater.cpp
@@ -377,6 +377,15 @@
     }
 }
 
+void DeviceUpdater::createRequestFwDataTimer()
+{
+    reqFwDataTimer = std::make_unique<sdbusplus::Timer>([this]() -> void {
+        componentUpdateStatus[componentIndex] = false;
+        sendCancelUpdateComponentRequest();
+        updateManager->updateDeviceCompletion(eid, false);
+    });
+}
+
 Response DeviceUpdater::requestFwData(const pldm_msg* request,
                                       size_t payloadLength)
 {
@@ -463,6 +472,27 @@
         return response;
     }
 
+    if (!reqFwDataTimer)
+    {
+        if (offset != 0)
+        {
+            warning("First data request is not at offset 0");
+        }
+        createRequestFwDataTimer();
+    }
+
+    if (reqFwDataTimer)
+    {
+        reqFwDataTimer->start(std::chrono::seconds(updateTimeoutSeconds),
+                              false);
+    }
+    else
+    {
+        error(
+            "Failed to start timer for handling request firmware data for endpoint ID {EID}",
+            "EID", eid, "RC", rc);
+    }
+
     return response;
 }
 
@@ -473,6 +503,12 @@
     Response response(sizeof(pldm_msg_hdr) + sizeof(completionCode), 0);
     auto responseMsg = new (response.data()) pldm_msg;
 
+    if (reqFwDataTimer)
+    {
+        reqFwDataTimer->stop();
+        reqFwDataTimer.reset();
+    }
+
     uint8_t transferResult = 0;
     auto rc =
         decode_transfer_complete_req(request, payloadLength, &transferResult);
diff --git a/fw-update/device_updater.hpp b/fw-update/device_updater.hpp
index 11570a1..8b15dfd 100644
--- a/fw-update/device_updater.hpp
+++ b/fw-update/device_updater.hpp
@@ -4,6 +4,7 @@
 #include "requester/handler.hpp"
 #include "requester/request.hpp"
 
+#include <sdbusplus/timer.hpp>
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/source/event.hpp>
 
@@ -189,6 +190,11 @@
      */
     void sendCancelUpdateComponentRequest();
 
+    /**
+     * @brief Create a timer to handle RequestFirmwareData timeout (UA_T2)
+     */
+    void createRequestFwDataTimer();
+
     /** @brief Endpoint ID of the firmware device */
     mctp_eid_t eid;
 
@@ -233,6 +239,19 @@
      *        cancelled
      */
     ComponentUpdateStatusMap componentUpdateStatus;
+
+    /**
+     * @brief Timeout in seconds for the UA to cancel the component update if no
+     * command is received from the FD during component image transfer stage
+     *
+     */
+    static constexpr int updateTimeoutSeconds = UPDATE_TIMEOUT_SECONDS;
+
+    /**
+     * @brief Timer to handle RequestFirmwareData timeout(UA_T2)
+     *
+     */
+    std::unique_ptr<sdbusplus::Timer> reqFwDataTimer;
 };
 
 } // namespace fw_update
