diff --git a/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh b/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh
index 42a85b8..401dd9d 100644
--- a/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh
+++ b/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh
@@ -12,9 +12,10 @@
     MAPPER_IFACE='xyz.openbmc_project.ObjectMapper'
     MAPPER_PATH='/xyz/openbmc_project/object_mapper'
     INVENTORY_PATH='/xyz/openbmc_project/inventory'
+
     BMC_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.Bmc'
     INV_ASSET_IFACE='xyz.openbmc_project.Inventory.Decorator.Asset'
-
+    BMC_SN=''
     BMC_ITEM_PATH=$(busctl --no-pager --verbose call \
                             ${MAPPER_IFACE} \
                             ${MAPPER_PATH} \
@@ -30,21 +31,54 @@
     BMC_ITEM_SERVICE=$(mapper get-service \
                                 ${BMC_ITEM_PATH} 2>/dev/null || true)
 
-    if [[ -z "${BMC_ITEM_SERVICE}" ]]; then
-        show_error "No BMC item found in the Inventory. Is VPD EEPROM empty?"
-        return
-    fi
-
-    BMC_SN=$(busctl get-property ${BMC_ITEM_SERVICE} \
+    if [[ -n "${BMC_ITEM_SERVICE}" ]]; then
+        BMC_SN=$(busctl get-property ${BMC_ITEM_SERVICE} \
                             ${BMC_ITEM_PATH} \
                             ${INV_ASSET_IFACE} SerialNumber)
-    # 's "002B0DH1000"'
-    BMC_SN=${BMC_SN#*\"}
-    BMC_SN=${BMC_SN%\"*}
+        # 's "002B0DH1000"'
+        BMC_SN=${BMC_SN#*\"}
+        BMC_SN=${BMC_SN%\"*}
+    else
+        show_error "No BMC item found in the Inventory. Is VPD EEPROM empty?"
+    fi
 
-    hostnamectl set-hostname {MACHINE}-${BMC_SN}
+    if [[ -z "${BMC_SN}" ]] ; then
+        show_error "BMC Serial Number empty! Setting Hostname as 'hostname + mac address' "
+
+        NETWORK_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.NetworkInterface'
+        NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \
+                           ${MAPPER_IFACE} \
+                           ${MAPPER_PATH} \
+                           ${MAPPER_IFACE} \
+                           GetSubTree sias \
+                                ${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \
+                    2>/dev/null | grep ${INVENTORY_PATH} || true)
+
+        NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH#*\"}
+        NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH%\"*}
+
+        NETWORK_ITEM_OBJ=$(mapper get-service ${NETWORK_ITEM_PATH} 2>/dev/null || true)
+
+        if [[ -z "${NETWORK_ITEM_OBJ}" ]]; then
+            show_error 'No Ethernet interface found in the Inventory. Unique hostname not set!'
+            exit 1
+        fi
+
+        MAC_ADDR=$(busctl get-property ${NETWORK_ITEM_OBJ} \
+                               ${NETWORK_ITEM_PATH} \
+                               ${NETWORK_ITEM_IFACE} MACAddress)
+
+        # 's "54:52:01:02:03:04"'
+        MAC_ADDR=${MAC_ADDR#*\"}
+        MAC_ADDR=${MAC_ADDR%\"*}
+
+        hostnamectl set-hostname $(hostname)-${MAC_ADDR}
+    else
+        hostnamectl set-hostname $(hostname)-${BMC_SN}
+    fi
+
 }
 
-[ "$(hostname)" = "{MACHINE}" ] && sync_hostname
+sync_hostname
 
 systemctl disable first-boot-set-hostname.service
