diff --git a/lib/bios_attr_utils.robot b/lib/bios_attr_utils.robot
index b16ce7c..3520a1f 100644
--- a/lib/bios_attr_utils.robot
+++ b/lib/bios_attr_utils.robot
@@ -8,6 +8,10 @@
 Library          tftp_update_utils.py
 
 
+*** Variables ***
+${OS_RUNNING_TIMEOUT}            30
+
+
 *** Keywords ***
 
 Set BIOS Attribute Value And Verify
@@ -20,14 +24,30 @@
     # @{attr_val}       Attribute value for the given attribute handle.
     # ${verify}         Verify the new value.
 
+    # Check if the BIOS attribute value type is string.
+    ${type_str}=    Evaluate  isinstance($attr_val, str)
 
-    ${type_int}=    Evaluate  isinstance($attr_val, int)
-    ${value}=  Set Variable If  '${type_int}' == '${True}'  ${attr_val}  '${attr_val}'
+    IF  ${type_str}
+        # Handling the case when the BIOS attribute value is an empty string.
+        ${attr_value_length}=  Evaluate  len($attr_val.replace('"', ''))
+        IF  ${attr_value_length} 
+            ${value}=  Set Variable  "${attr_val}"
+        ELSE
+            ${value}=  Set Variable  ${attr_val}
+        END
+   ELSE
+       ${value}=  Set Variable  ${attr_val}
+   END
 
-    Redfish.Patch  ${BIOS_ATTR_SETTINGS_URI}  body={"Attributes":{"${attr_handle}": ${value}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    # BIOS attribute with _current are ReadOnly can not be updated.
+    IF  'current' in '${attr_handle}'
+        Log To Console  BIOS attribute with _current are ReadOnly can not be updated !!
+    ELSE
+        Redfish.Patch  ${BIOS_ATTR_SETTINGS_URI}  body={"Attributes":{"${attr_handle}": ${value}}}
+        ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
 
-    Run Keyword If  '${verify}' == '${True}'  Verify BIOS Attribute  ${attr_handle}  ${attr_val}
+        Run Keyword If  '${verify}' == '${True}'  Verify BIOS Attribute  ${attr_handle}  ${attr_val}
+    END
 
 
 Set Optional BIOS Attribute Values And Verify
@@ -57,7 +77,10 @@
     # ${attr_val}       The expected value for the given attribute handle.
 
     ${output}=  Redfish.Get Attribute  ${BIOS_ATTR_URI}  Attributes
-    Should Be Equal  ${output['${attr_handle}']}  ${attr_val}
+    ${cmd_rsp_status}=  Run Keyword And Return Status  Should Not Be Empty  ${output['${attr_handle}']}
+    IF  ${cmd_rsp_status}
+        Should Be Equal  ${output['${attr_handle}']}  ${attr_val}
+    END
 
 
 Switch And Verify BIOS Attribute Firmware Boot Side
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index f2541f9..1d70b36 100755
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -45,7 +45,7 @@
     bsu_options = fa.args_to_objects(bsu_options)
 
     stdout, stderr, rc = bsu.bmc_execute_command(
-        "pldmtool " + option_string, **bsu_options
+        "pldmtool " + option_string, **bsu_options, ignore_err=1
     )
     if stderr:
         return stderr
@@ -206,14 +206,22 @@
         attr_handle = re.findall(r"\(.*?\)", item["AttributeNameHandle"])
         attr_name = attr_handle[0][1:-1]
 
-        command = "bios GetBIOSAttributeCurrentValueByHandle -a " + attr_name
-        value = pldmtool(command)
-        attr_val_data_dict[attr_name] = value["CurrentValue"]
-        if not value["CurrentValue"]:
-            if "name" in attr_name:
-                attr_val_data_dict[attr_name] = '""'
-            elif "hb_lid_ids" in attr_name:
-                attr_val_data_dict[attr_name] = '""'
+        # Exclude BIOS attribute which are ReadOnly.
+        if "ReadOnly" not in item["AttributeType"]:
+            command = (
+                "bios GetBIOSAttributeCurrentValueByHandle -a " + attr_name
+            )
+            value = pldmtool(command)
+            if "error" in value:
+                print("Ignore BIOS attribute which throws error...")
+                pass
+            elif not value["CurrentValue"]:
+                if "name" in attr_name:
+                    attr_val_data_dict[attr_name] = '""'
+                elif "hb_lid_ids" in attr_name:
+                    attr_val_data_dict[attr_name] = '""'
+            else:
+                attr_val_data_dict[attr_name] = value["CurrentValue"]
 
     return attr_val_data_dict
 
@@ -304,7 +312,8 @@
             )
             if random_val != existing_data[attr]:
                 break
-        attr_random_data[attr] = random_val.strip('"')
+        if isinstance(random_val, str):
+            attr_random_data[attr] = random_val.strip('"')
     logger.info("Values generated for string type attributes")
 
     for attr in int_attr_data:
