diff --git a/meson.build b/meson.build
index a1e05d3..b575366 100644
--- a/meson.build
+++ b/meson.build
@@ -43,6 +43,8 @@
 cdata.set_quoted('IMG_DIR_PERSIST', get_option('IMG_DIR_PERSIST'))
 cdata.set_quoted('IMG_DIR_BUILTIN', get_option('IMG_DIR_BUILTIN'))
 
+cdata.set10('ALWAYS_USE_BUILTIN_IMG_DIR', get_option('ALWAYS_USE_BUILTIN_IMG_DIR'))
+
 phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
 phosphor_logging = dependency('phosphor-logging')
 sdbusplus = dependency('sdbusplus')
diff --git a/meson.options b/meson.options
index f37d08d..b5877c9 100644
--- a/meson.options
+++ b/meson.options
@@ -58,3 +58,8 @@
        type: 'string',
        value: '/usr/share/obmc/psu',
        description: 'The read-only directory where the built-in PSU images are stored')
+
+option('ALWAYS_USE_BUILTIN_IMG_DIR',
+    type: 'boolean',
+    value: false,
+    description: 'Only scan for PSU images in IMG_BUILTIN_DIR')
diff --git a/src/item_updater.cpp b/src/item_updater.cpp
index 4213f78..8e664b8 100644
--- a/src/item_updater.cpp
+++ b/src/item_updater.cpp
@@ -420,7 +420,10 @@
 {
     scanDirectory(IMG_DIR_BUILTIN);
 
-    scanDirectory(IMG_DIR_PERSIST);
+    if (!ALWAYS_USE_BUILTIN_IMG_DIR)
+    {
+        scanDirectory(IMG_DIR_PERSIST);
+    }
 }
 
 void ItemUpdater::scanDirectory(const fs::path& dir)
@@ -519,7 +522,15 @@
 
 std::optional<std::string> ItemUpdater::getLatestVersionId()
 {
-    auto latestVersion = utils::getLatestVersion(versionStrings);
+    std::string latestVersion;
+    if (ALWAYS_USE_BUILTIN_IMG_DIR)
+    {
+        latestVersion = getFWVersionFromBuiltinDir();
+    }
+    else
+    {
+        latestVersion = utils::getLatestVersion(versionStrings);
+    }
     if (latestVersion.empty())
     {
         return {};
@@ -646,6 +657,26 @@
     syncToLatestImage();
 }
 
+std::string ItemUpdater::getFWVersionFromBuiltinDir()
+{
+    std::string version;
+    for (const auto& activation : activations)
+    {
+        if (activation.second->path().starts_with(IMG_DIR_BUILTIN))
+        {
+            std::string versionId = activation.second->getVersionId();
+            auto it = versions.find(versionId);
+            if (it != versions.end())
+            {
+                const auto& versionPtr = it->second;
+                version = versionPtr->version();
+                break;
+            }
+        }
+    }
+    return version;
+}
+
 } // namespace updater
 } // namespace software
 } // namespace phosphor
diff --git a/src/item_updater.hpp b/src/item_updater.hpp
index bc8930e..e07aca8 100644
--- a/src/item_updater.hpp
+++ b/src/item_updater.hpp
@@ -201,6 +201,16 @@
      */
     void processPSUImageAndSyncToLatest();
 
+    /** @brief Retrieve FW version from IMG_DIR_BUILTIN
+     *
+     * This function retrieves the firmware version from the PSU model directory
+     * that is in the IMG_DIR_BUILTIN. It loops through the activations map to
+     * find matching path starts with IMG_DIR_BUILTIN, then gets the
+     * corresponding version ID, and then looks it up in the versions map to
+     * retrieve the associated version string.
+     */
+    std::string getFWVersionFromBuiltinDir();
+
     /** @brief Persistent sdbusplus D-Bus bus connection. */
     sdbusplus::bus_t& bus;
 
