diff --git a/src/usb-dbg.cpp b/src/usb-dbg.cpp
index 70b69a0..57c3339 100644
--- a/src/usb-dbg.cpp
+++ b/src/usb-dbg.cpp
@@ -650,19 +650,25 @@
         }
 
         getMaxHostPosition(maxPosition);
+        std::string data;
         if (hostPosition == BMC_POSITION || hostInstances == "0")
         {
-            std::string data = "FRU:" + getMotherBoardFruName();
-            frame_info.append(data);
+            data = "FRU:" + getMotherBoardFruName();
         }
         else if (hostPosition != BMC_POSITION && hostPosition <= maxPosition)
         {
-            std::string data = "FRU:slot" + std::to_string(hostPosition);
-            frame_info.append(data);
+            if (getMotherBoardFruName() != "")
+            {
+                data = "FRU:" + getMotherBoardFruName();
+            }
+            else
+            {
+                data = "FRU:slot" + std::to_string(hostPosition);
+            }
         }
+        frame_info.append(data);
 
         // FRU
-        std::string data;
         frame_info.append("SN:");
         if (getFruData(data, serialName) != 0)
         {
@@ -783,6 +789,8 @@
 {
     // up to 70 codes can be displayed on 10 pages
     static constexpr size_t maxPostcodes = 70;
+    bool platform = isMultiHostPlatform();
+    size_t hostPosition = 0;
 
     if (page == 1)
     {
@@ -791,18 +799,24 @@
         snprintf(frame_postcode.title, 32, "POST CODE");
         frame_postcode.max_page = 10;
 
+        if (platform)
+            getSelectorPosition(hostPosition);
+
         // Synchronously get D-Bus connection
         auto bus = sdbusplus::bus::new_default();
+        std::string serviceName =
+            BOOT_POSTCODE_SERVICE + std::to_string(hostPosition);
+        std::string objectPath =
+            BOOT_POSTCODE_OBJECTPATH + std::to_string(hostPosition);
 
         // Build D-Bus method call
         auto method = bus.new_method_call(
-            "xyz.openbmc_project.State.Boot.PostCode0",  // Target service name
-            "/xyz/openbmc_project/State/Boot/PostCode0", // Object path
-            "xyz.openbmc_project.State.Boot.PostCode",   // Interface name
-            "GetPostCodes");                             // Method name
+            serviceName.c_str(),     // Target service name
+            objectPath.c_str(),      // Object path
+            BOOT_POSTCODE_INTERFACE, // Interface name
+            "GetPostCodes");         // Method name
 
-        method.append(uint16_t(1)); // Add method parameter, assuming it's page
-
+        method.append(uint16_t(1));  // Add method parameter, assuming it's pag
         try
         {
             auto reply = bus.call(method); // Send synchronous method call
