diff --git a/functions.cpp b/functions.cpp
index f35ab9c..88c7841 100644
--- a/functions.cpp
+++ b/functions.cpp
@@ -220,16 +220,6 @@
         return;
     }
 
-    // Create a symlink from HBB to the corresponding LID file if it exists
-    static const auto hbbLid = "81e0065a.lid";
-    auto hbbLidPath = hostFirmwareDirectory / hbbLid;
-    if (std::filesystem::exists(hbbLidPath))
-    {
-        static const auto hbbName = "HBB";
-        auto hbbLinkPath = hostFirmwareDirectory / hbbName;
-        makeCallback(linkCallback, hbbLid, hbbLinkPath, errorCallback);
-    }
-
     for (; directoryIterator != std::filesystem::end(directoryIterator);
          directoryIterator.increment(ec))
     {
@@ -348,6 +338,23 @@
         // Build the bios attribute string with format:
         // "element1=lid1,element2=lid2,elementN=lidN,"
         biosAttrStr += a.first + "=" + a.second + ",";
+
+        // Create symlinks from the hostfw elements to their corresponding
+        // lid files if they don't exist
+        auto elementFilePath =
+            std::filesystem::path("/media/hostfw/running") / a.first;
+        if (!std::filesystem::exists(elementFilePath))
+        {
+            std::error_code ec;
+            auto lidName = a.second + ".lid";
+            std::filesystem::create_symlink(lidName, elementFilePath, ec);
+            if (ec)
+            {
+                log<level::ERR>("Error creating symlink",
+                                entry("TARGET=%s", lidName.c_str()),
+                                entry("LINK=%s", elementFilePath.c_str()));
+            }
+        }
     }
 
     return biosAttrStr;
