diff --git a/src/mdrv2.cpp b/src/mdrv2.cpp
index 2aaf4be..070541c 100644
--- a/src/mdrv2.cpp
+++ b/src/mdrv2.cpp
@@ -527,8 +527,8 @@
 
     for (unsigned int index = 0; index < *num; index++)
     {
-        std::string path =
-            smbiosInventoryPath + cpuSuffix + std::to_string(index);
+        std::string path = getObjectPath(smbiosInventoryPath, motherboardPath,
+                                         cpuSuffix, index);
         if (index + 1 > cpus.size())
         {
             cpus.emplace_back(std::make_unique<phosphor::smbios::Cpu>(
@@ -559,8 +559,8 @@
 
     for (unsigned int index = 0; index < *num; index++)
     {
-        std::string path =
-            smbiosInventoryPath + dimmSuffix + std::to_string(index);
+        std::string path = getObjectPath(smbiosInventoryPath, motherboardPath,
+                                         dimmSuffix, index);
         if (index + 1 > dimms.size())
         {
             dimms.emplace_back(std::make_unique<phosphor::smbios::Dimm>(
@@ -591,8 +591,8 @@
 
     for (unsigned int index = 0; index < *num; index++)
     {
-        std::string path =
-            smbiosInventoryPath + pcieSuffix + std::to_string(index);
+        std::string path = getObjectPath(smbiosInventoryPath, motherboardPath,
+                                         pcieSuffix, index);
         if (index + 1 > pcies.size())
         {
             pcies.emplace_back(std::make_unique<phosphor::smbios::Pcie>(
@@ -622,8 +622,8 @@
 
     for (unsigned int index = 0; index < *num; index++)
     {
-        std::string path =
-            smbiosInventoryPath + tpmSuffix + std::to_string(index);
+        std::string path = getObjectPath(smbiosInventoryPath, motherboardPath,
+                                         tpmSuffix, index);
         if (index + 1 > tpms.size())
         {
             tpms.emplace_back(std::make_unique<phosphor::smbios::Tpm>(
diff --git a/src/meson.build b/src/meson.build
index d94397e..1094835 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -27,6 +27,10 @@
     cpp_args_smbios += ['-DEXPOSE_FW_COMPONENT_NAME']
 endif
 
+if get_option('custom-dbus-path').allowed()
+    cpp_args_smbios += ['-DCUSTOM_DBUS_PATH']
+endif
+
 executable(
     'smbiosmdrv2app',
     'mdrv2.cpp',
