diff --git a/libpldmresponder/fru_parser.cpp b/libpldmresponder/fru_parser.cpp
index a2e2e92..84d3898 100644
--- a/libpldmresponder/fru_parser.cpp
+++ b/libpldmresponder/fru_parser.cpp
@@ -30,8 +30,8 @@
     fs::path dir(dirPath);
     if (!fs::exists(dir) || fs::is_empty(dir))
     {
-        std::cerr << "FRU config directory does not exist or empty, DIR="
-                  << dirPath << "\n";
+        setupDefaultDBusLookup();
+        setupDefaultFruRecordMap();
         return;
     }
 
@@ -47,6 +47,34 @@
     setupFruRecordMap(dirPath);
 }
 
+void FruParser::setupDefaultDBusLookup()
+{
+    constexpr auto service = "xyz.openbmc_project.Inventory.Manager";
+    constexpr auto rootPath = "/xyz/openbmc_project/inventory";
+
+    // DSP0249 1.0.0    Table 15 Entity ID Codes
+    const std::map<Interface, EntityType> defIntfToEntityType = {
+        {"xyz.openbmc_project.Inventory.Item.Chassis", 45},
+        {"xyz.openbmc_project.Inventory.Item.Board", 60},
+        {"xyz.openbmc_project.Inventory.Item.Board.Motherboard", 64},
+        {"xyz.openbmc_project.Inventory.Item.Panel", 69},
+        {"xyz.openbmc_project.Inventory.Item.PowerSupply", 120},
+        {"xyz.openbmc_project.Inventory.Item.Vrm", 123},
+        {"xyz.openbmc_project.Inventory.Item.Cpu", 135},
+        {"xyz.openbmc_project.Inventory.Item.Bmc", 137},
+        {"xyz.openbmc_project.Inventory.Item.Dimm", 142},
+    };
+
+    Interfaces interfaces{};
+    for (auto [intf, entityType] : defIntfToEntityType)
+    {
+        intfToEntityType[intf] = entityType;
+        interfaces.emplace(intf);
+    }
+
+    lookupInfo.emplace(service, rootPath, std::move(interfaces));
+}
+
 void FruParser::setupDBusLookup(const fs::path& filePath)
 {
     std::ifstream jsonFile(filePath);
@@ -74,6 +102,34 @@
                                        std::move(interfaces)));
 }
 
+void FruParser::setupDefaultFruRecordMap()
+{
+    const FruRecordInfo generalRecordInfo = {
+        1, // generalRecordType
+        1, // encodingTypeASCII
+        {
+            // DSP0257 Table 5 General FRU Record Field Type Definitions
+            {"xyz.openbmc_project.Inventory.Decorator.Asset", "Model", "string",
+             2},
+            {"xyz.openbmc_project.Inventory.Decorator.Asset", "PartNumber",
+             "string", 3},
+            {"xyz.openbmc_project.Inventory.Decorator.Asset", "SerialNumber",
+             "string", 4},
+            {"xyz.openbmc_project.Inventory.Decorator.Asset", "Manufacturer",
+             "string", 5},
+            {"xyz.openbmc_project.Inventory.Item", "PrettyName", "string", 8},
+            {"xyz.openbmc_project.Inventory.Decorator.AssetTag", "AssetTag",
+             "string", 11},
+            {"xyz.openbmc_project.Inventory.Decorator.Revision", "Version",
+             "string", 10},
+        }};
+
+    for (auto [intf, entityType] : intfToEntityType)
+    {
+        recordMap[intf] = {generalRecordInfo};
+    }
+}
+
 void FruParser::setupFruRecordMap(const std::string& dirPath)
 {
     for (auto& file : fs::directory_iterator(dirPath))
