diff --git a/data/ipmi_raw_cmd_table.py b/data/ipmi_raw_cmd_table.py
index 4198cf4..4b68d4f 100644
--- a/data/ipmi_raw_cmd_table.py
+++ b/data/ipmi_raw_cmd_table.py
@@ -462,5 +462,99 @@
             "Insufficient privilege level",
             "Reservation cancelled or invalid",
         ]
+    },
+    'System_Info':
+    {
+        'param0_Set_In_Progress':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x00 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x00 0x00",
+                "Request data length invalid",
+                "Invalid data field in request",
+            ],
+        },
+        'param1_System_Firmware_Version':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x01 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x01 0x00 0x00 0x0e",
+                "Invalid data field in request",
+            ],
+        },
+        'param2_System_Name':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x02 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x02 0x00 0x00 0x0e",
+                "Invalid data field in request",
+            ],
+        },
+        'param3_Primary_Operating_System_Name':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x03 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x03 0x00 0x00 0x0e",
+                "Invalid data field in request",
+            ],
+        },
+        'param4_Operating_System_Name':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x04 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x04 0x00 0x00 0x0e",
+                "Invalid data field in request",
+            ],
+        },
+        'param5_Present_OS_Version_number':
+        {
+            'Get':
+            [
+                # raw command, expected output(s)
+                "0x06 0x59 0x00 0x05 0x00 0x00",
+                "Request data length invalid",
+            ],
+            'Set':
+            [
+                # raw command, expected output(s)
+                "0x06 0x58 0x05 0x00 0x00 0x0e",
+                "Invalid data field in request",
+            ]
+        }
     }
 }
diff --git a/ipmi/test_ipmi_systeminfo_parameters.robot b/ipmi/test_ipmi_systeminfo_parameters.robot
new file mode 100644
index 0000000..f50ed3d
--- /dev/null
+++ b/ipmi/test_ipmi_systeminfo_parameters.robot
@@ -0,0 +1,709 @@
+*** Settings ***
+
+Documentation       Module to test IPMI System Info Parameters functionality.
+...                 Following parameters are verfied in the script,
+...                 1. Set In Progress - param 0,
+...                 2. System Firmware Version - param 1,
+...                 3. System Name - param 2,
+...                 4. Primary OS Name - param 3,
+...                 5. OS Name - param 4,
+...                 6. Present OS Version Number - param 5.
+
+Library             Collections
+Library             String
+Resource            ../lib/ipmi_client.robot
+Resource            ../lib/openbmc_ffdc.robot
+Library             ../lib/ipmi_utils.py
+Variables           ../data/ipmi_raw_cmd_table.py
+
+Suite Setup         Suite Setup Execution
+Suite Teardown      FFDC On Test Case Fail
+
+Test Teardown       Restore Default Configuration
+
+
+*** Variables ***
+
+# Converting to hexadecimal provides 14 bytes so string length is 0e for param 3, 4, 5.
+${valid_os_version_name}       Version2.12345
+${invalid_os_version}          ${valid_os_version_name}${6789}
+
+
+*** Test Cases ***
+
+Verify System Info Set In Progress
+    [Documentation]  Verify Set In Progress of System Info Parameter,
+    ...  to set the set-in-progress and set complete state via IPMI,
+    ...  and verify whether the state is updated and restored as expected.
+    [Tags]  Verify_System_Info_Set_In_Progress
+
+    # Set In Progress - set complete.
+    Set System Info Set In Progress  0x00
+
+    # Get System Info Parameter for param 0 - Set In Progress.
+    # Check if set-in-progress set to set complete.
+    ${complete}=  Get System Info Set In Progress
+    # ${complete[0]} - parameter version.
+    # ${complete[1]} - Configuration parameter data,
+    # here,  01h (set in progress).
+    Should Be Equal  ${complete[1]}  00
+
+    # Set In Progress - set in progress.
+    Set System Info Set In Progress  0x01
+
+    # Get System Info Parameter for param 0 - Set In Progress.
+    # Check if set-in-progress set to set inprogress.
+    ${inprogress}=  Get System Info Set In Progress
+    # ${inprogress[0]} - parameter version.
+    # ${inprogress[1]} - Configuration parameter data,
+    # here,  01h (set in progress).
+    Should Be Equal  ${inprogress[1]}  01
+
+
+Verify System Info Set In Progress After BMC Reboot
+    [Documentation]  Verify Set In Progress changes to default,
+    ...  after bmc reboot of System Info Parameter via IPMI,
+    ...  and verify whether the default setting is reflected.
+    [Tags]  Verify_System_Info_Set_In_Progress_After_BMC_Reboot
+
+    # Set the parameter 0 - Set_In_Progress to set in progress state.
+    Set System Info Set In Progress  0x01
+
+    # Get System Info Parameter for param 0 - Set In Progress.
+    # Check if set-in-progress set to set in progress.
+    ${inprogress}=  Get System Info Set In Progress
+    # ${inprogress[0]} - parameter version.
+    # ${inprogress[1]} - Configuration parameter data,
+    # here,  01h (set in progress).
+    Should Be Equal  ${inprogress[1]}  01
+
+    # Reboot BMC.
+    IPMI Std MC Reset Cold (off)
+
+    # Since the param 0 - Set In Progress is volatile,
+    # Default value should be updated after BMC reboot.
+    ${state}=  Get System Info Set In Progress
+    # ${state[0]} - parameter version.
+    # ${state[1]} - Configuration parameter data,
+    # here, 00h (set complete), 01h (set in progress),
+    #       10 (commit write), 11 (reserved).
+    Should Be Equal  ${state[1]}  ${set_in_progress}
+
+
+Verify Get System Info Set In Progress With Invalid Data Length
+    [Documentation]  Verify Get System Info Parameter Set In Progress via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_Set_In_Progress_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 0 - set in progress throws error for invalid data length.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][0]} 0x00
+
+
+Verify Set System Info Set In Progress With Invalid Data Length
+    [Documentation]  Verify Set System Info Parameter Set In Progress via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_Set_In_Progress_With_Invalid_Data_Length
+
+    # Check if the Set System Info Parameter for param 0 - set in progress throws error for invalid data length.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} 0x00 0x00
+
+
+Verify Set System Info Set In Progress With Invalid State
+    [Documentation]  Verify Set System Info Parameter Set In Progress via IPMI invalid state,
+    ...  and expect to get the error message for invalid data.
+    [Tags]  Verify_Set_System_Info_Set_In_Progress_With_Invalid_State
+
+    # Check if the Set System Info Parameter for param 0 - set in progress throws error for invalid State.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][2]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} 0x04
+
+
+Verify System Info System Firmware Version
+    [Documentation]  Verify System Firmware Version of System Info Parameter via IPMI,
+    ...  and verify whether the version is updated.
+    [Tags]  Verify_System_Info_System_Firmware_Version
+
+    # Generate a random 14 byte data,
+    # i,e 16-byte block for system firmware name string data.
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes.
+    ${firmware_version}=  Generate Random String  14  [LETTERS]
+    ${firmware_version}  ${fw_hex_data}=  Identify Request Data  ${firmware_version}
+    # Consider random string generated is 'zwclMXwfczMvcY'.
+    # Set the System Firmware Version of System Info Parameter.
+    Set System Firmware Version  ${firmware_version}
+    # Get the response of System Firmware Version,
+    # and compare against randomly generated data bytes.
+    ${fw_version}=  Get System Firmware Version
+    # The response data will something be like,
+    # ${fw_version}= ["11","00","00","0e","7a","77","63","6c","4d","58","77","66","63","7a","4d","76"].
+    Should Be Equal  ${fw_version[4:]}  ${fw_hex_data}
+
+
+Verify Get System Info System Firmware Version With Invalid Data Length
+    [Documentation]  Verify Get System Info Parameter System Firmware Version via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_System_Firmware_Version_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 1 - System Firmware Version throws error for invalid data length.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][0]} 0x00
+
+
+Verify Set System Info System Firmware Version With Invalid Data Length
+    [Documentation]  Verify Set System Info Parameter System Firmware Version via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_System_Firmware_Version_With_Invalid_Data_Length
+
+    # Generate a random 15 byte data,
+    # i,e 16-byte block for system firmware name string data,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes,
+    # data 17 - extra byte.
+    ${firmware_version}=  Generate Random String  15  [LETTERS]
+    ${firmware_version}  ${fw_hex_data}=  Identify Request Data  ${firmware_version}
+    # Consider random string generated is 'zwclMXwfczMvcYz'.
+    # The request data bytes will be 15 bytes, in which 14 bytes are only expected.
+    # Check if the Set System Info Parameter for param 1 - System Firmware Version throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][0]} ${firmware_version}
+
+
+Verify System Info System Name
+    [Documentation]  Verify System Name of System Info Parameter via IPMI by setting,
+    ...  a random system name and verify whether it is updated as expected.
+    [Tags]  Verify_System_Info_System_Name
+
+    # Generate a random 14 byte data,
+    # i,e 16-byte block for system firmware name string data,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes.
+    ${system_name}=  Generate Random String  14  [LETTERS]
+    ${system_name}  ${name_hex_data}=  Identify Request Data  ${system_name}
+    # Consider random string generated is 'zwclMXwfczMvcY'.
+
+    # Set System Name for System Info Parameter.
+    Set System Name  ${system_name}
+
+    # Get the response of System Name,
+    # and compare against randomly generated data bytes.
+    ${sys_name}=  Get System Name
+    # The response data will something be like,
+    # ${sys_name}= ["11","00","00","0e","7a","77","63","6c","4d","58","77","66","63","7a","4d","76"].
+    Should Be Equal  ${sys_name[4:]}  ${name_hex_data}
+
+
+Verify Get System Info System Name With Invalid Data Length
+    [Documentation]  Verify Get System Info Parameter System Name via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_System_Name_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 2 - System Name throws error for invalid request data length.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][0]} 0x00
+
+
+Verify Set System Info System Name With Invalid Data Length
+    [Documentation]  Verify Set System Info Parameter System Name via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_System_Name_With_Invalid_Data_Length
+
+    # Generate a random 15 byte data,
+    # i,e 16-byte block for system firmware name string data,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes,
+    # data 17 - extra byte.
+    ${system_name}=  Generate Random String  15  [LETTERS]
+    ${system_name}  ${name_hex_data}=  Identify Request Data  ${system_name}
+    # Consider random string generated is 'zwclMXwfczMvcYz'.
+    # The request data bytes will be 15 bytes, in which 14 bytes are only exepcted.
+
+    # Check if the Set System Info Parameter for param 2 - System Name throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][0]} ${system_name}
+
+
+Verify System Info Primary OS Name
+    [Documentation]  Verify Primary OS Name of System Info Parameter via IPMI,
+    ...  by setting a valid os version and verify whether it is updated as expected.
+    [Tags]  Verify_System_Info_Primary_OS_Name
+
+    # os_version_name given in variable section which is a 14 byte data.
+    ${os_name}  ${os_hex_data}=  Identify Request Data  ${valid_os_version_name}
+
+    # Set Primary OS Name of System Info Parameter.
+    Set Primary OS Name  ${os_name}
+
+    # Get Primary OS Name of System Info Parameter.
+    # Compare with the assigned os version name data.
+    ${pr_os}=  Get Primary OS Name
+    # The response data will something be like,
+    # ${pr_os}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${pr_os[4:]}  ${os_hex_data}
+
+
+Verify System Info Primary OS Name After BMC Reboot
+    [Documentation]  Verify setting valid os version name in Primary OS Name,
+    ...  of System Info Parameter and verify it retains after BMC Reboot via IPMI.
+    [Tags]  Verify_System_Info_Primary_OS_Name_After_BMC_Reboot
+
+    # os_version_name given in variable section which is a 14 byte data.
+    ${os_name}  ${os_hex_data}=  Identify Request Data  ${valid_os_version_name}
+
+    # Set Primary OS Name of System Info Parameter.
+    Set Primary OS Name  ${os_name}
+
+    # Get Primary OS Name of System Info Parameter.
+    # Compare with the assigned os version name data.
+    ${pr_os}=  Get Primary OS Name
+    # The response data will something be like,
+    # ${pr_os}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${pr_os[4:]}  ${os_hex_data}
+
+    # Cold Reset Via IPMI
+    IPMI Std MC Reset Cold (off)
+
+    # Since Primary OS Name is non-volatile,
+    # compare with response data of Get Primary OS Name,
+    # with assigned OS version name.
+    ${pr_os}=  Get Primary OS Name
+    # The response data should be,
+    # ${pr_os}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${pr_os[4:]}  ${os_hex_data}
+
+
+Verify Get System Info Primary OS Name With Invalid Data Length
+    [Documentation]  Verify Get System Info Parameter Primary OS Name via IPMI with extra bytes,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_Primary_OS_Name_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 3 - Primary OS Name throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Get'][0]} 0x00
+
+
+Verify Set System Info Primary OS Name With Invalid Data Length
+    [Documentation]  Verify setting invalid os version name to Primary OS Name,
+    ...  of Set System Info Parameter via IPMI,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_Primary_OS_Name_With_Invalid_Data_Length
+
+    # invalid_os_version given in variable section which is a 15 byte data,
+    # The actual request byte should be 16 byte data where,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes,
+    # Here 15 bytes so, data 17 - extra byte.
+    ${os_name}  ${name_hex_data}=  Identify Request Data  ${invalid_os_version}
+
+    # Check if the Set System Info Parameter for param 3 - Primary OS Name throws error for invalid data request.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Set'][0]} ${os_name}
+
+
+Verify System Info OS Name
+    [Documentation]  Verify setting valid os version to OS Name,
+    ...  of System Info Parameter via IPMI and verify whether it updates as expected.
+    [Tags]  Verify_System_Info_OS_Name
+
+    # os_version_name given in variable section which is a 14 byte data.
+    ${os_name}  ${os_hex_data}=  Identify Request Data  ${valid_os_version_name}
+
+    # Set OS Name of System Info Parameters.
+    Set OS Name  ${os_name}
+
+    # Get the OS Name and compare against given os_version_name.
+    ${sysos}=  Get OS Name
+    # The response data will something be like,
+    # ${sysos}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${sysos[4:]}  ${os_hex_data}
+
+
+Verify System Info OS Name After BMC Reboot
+    [Documentation]  Verify setting valid os version name for OS Name,
+    ...  of System Info Parameter and verify it changes to default after BMC Reboot via IPMI.
+    [Tags]  Verify_System_Info_OS_Name_After_BMC_Reboot
+
+    # os_version_name given in variable section which is a 14 byte data.
+    ${os_name}  ${os_hex_data}=  Identify Request Data  ${valid_os_version_name}
+
+    # Set OS Name of System Info Parameters.
+    Set OS Name  ${os_name}
+
+    # Get the OS Name and compare against given os_version_name.
+    ${sysos}=  Get OS Name
+    # The response data will something be like,
+    # ${sysos}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${sysos[4:]}  ${os_hex_data}
+
+    # Cold Reset via IPMI
+    IPMI Std MC Reset Cold (off)
+
+    # Since OS Name is volatile,
+    # compare with response data of Get OS Name,
+    # with default OS Name.
+    ${sysos}=  Get OS Name
+    # Should return default response data.
+    Should Be Equal  ${sysos[2:]}  ${default_os_name}
+
+
+Verify Get System Info OS Name With Invalid Data Length
+    [Documentation]  Verify OS Name of Get System Info Parameter via IPMI,
+    ...  with extra bytes, and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_OS_Name_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 4 - OS Name throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Get'][0]} 0x00
+
+
+Verify Set System Info OS Name With Invalid Data Length
+    [Documentation]  Verify setting invalid os version name to OS Name,
+    ...  of Get System Info Parameter via IPMI,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_OS_Name_With_Invalid_Data_Length
+
+    # invalid_os_version given in variable section which is a 15 byte data,
+    # The actual request byte should be 16 byte data where,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes,
+    # Here 15 bytes so, data 17 - extra byte.
+    ${os_name}  ${name_hex_data}=  Identify Request Data  ${invalid_os_version}
+
+    # Check if the Set System Info Parameter for param 4 - OS Name throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Set'][0]} ${os_name}
+
+
+Verify System Info Present OS Version Number
+    [Documentation]  Verify setting valid os version for Present OS Version Number,
+    ...  of System Info Parameter via IPMI and verify whether it is updated as expected.
+    [Tags]  Verify_System_Info_Present_OS_Version_Number
+
+    # os_version_name given in variable section which is a 14 byte data.
+    ${os_name}  ${os_hex_data}=  Identify Request Data  ${valid_os_version_name}
+
+    # Set Present OS Version Number for System Info Parameters.
+    Set Present OS Version Number  ${os_name}
+
+    # Get Present OS Version Number for System Info Parameters,
+    # compare with response data of Get OS Name,
+    # with assigned os version name.
+    ${os_version}=  Get Present OS Version Number
+    # The response data will something be like,
+    # ${os_version}= ["11","00","00","0e","56","65","72","73","69","6f","6e","32","2e","31","32","33"].
+    Should Be Equal  ${os_version[4:]}  ${os_hex_data}
+
+
+Verify Get System Info Present OS Version Number With Invalid Data Length
+    [Documentation]  Verify Get System Info Parameter Present OS Version Number via IPMI,
+    ...  with extra bytes, and expect to get the error message for invalid length.
+    [Tags]  Verify_Get_System_Info_Present_OS_Version_Number_With_Invalid_Data_Length
+
+    # Check if the Get System Info Parameter for param 5 - Present OS Version Number throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][0]} 0x00
+
+
+Verify Set System Info Present OS Version Number With Invalid Data Length
+    [Documentation]  Verify setting invalid os version to Present OS Version Number
+    ...  of Set System Info Parameter via IPMI,
+    ...  and expect to get the error message for invalid length.
+    [Tags]  Verify_Set_System_Info_Present_OS_Version_Number_With_Invalid_Data_Length
+
+    # invalid_os_version given in variable section which is a 15 byte data.
+    # The actual request byte should be 16 byte data where,
+    # data 1 - Encoding string type,
+    # data 2 - string length (in bytes, 1-based),
+    # data 3 to 16 - system firmware name string data - 14 bytes,
+    # Here 15 bytes so, data 17 - extra byte.
+    ${os_name}  ${name_hex_data}=  Identify Request Data  ${invalid_os_version}
+
+    # Check if the Set System Info Parameter for param 5 - Present OS Version Number throws error for invalid request data.
+    Run Keyword and Expect Error  *${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][1]}*
+    ...  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][0]} ${os_name}
+
+
+*** Keywords ***
+
+Identify Request Data
+    [Documentation]  Convert string to hexadecimal request data with and without prefix 0x.
+    [Arguments]  ${string}
+
+    # Given a string, convert to hexadecimal and prefix with 0x.
+    # Consider random string generated ${string} is 'zwc'.
+    ${fw_ver_hex_list}=  Create List
+    ${hex_data_list}=  Create List
+    ${resp_data_list}=  Split String With Index  ${string}  1
+    # ${resp_data_list} will be ['z', 'w', 'c'].
+    FOR  ${data}  IN  @{resp_data_list}
+        # prefixes 0x by default.
+        # Example : 0x00.
+        ${hex_value}=  Evaluate  hex(ord("${data}"))
+        # provides only hexadecimal bytes.
+        # Example : 00.
+        ${hex}=  Evaluate  hex(ord("${data}"))[2:]
+        # With prefix 0x.
+        Append To List  ${fw_ver_hex_list}  ${hex_value}
+        # Without prefix.
+        Append To List  ${hex_data_list}  ${hex}
+    END
+    ${fw_ver_hex}=  Evaluate  " ".join(${fw_ver_hex_list})
+
+    [Return]  ${fw_ver_hex}  ${hex_data_list}
+
+
+Get System Info Set In Progress
+    [Documentation]  Run Get system info parameter command for set-in-progress and return response data.
+
+    # Get System Info Parameter for param 0 - Set In Progress.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set System Info Set In Progress
+    [Documentation]  Set System Info Set In Progress with valid state via IPMI.
+    [Arguments]  ${state}
+
+    # Set System Info Parameter for param 0 - Set In Progress.
+    # ${state} can be can be any - 00 | 01 | 10 | 11.
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param0_Set_In_Progress']['Set'][0]} ${state}
+
+
+Get System Firmware Version
+    [Documentation]  Run Get system info parameter command for system firmware version and return response data.
+
+    # Get System Info Parameter for param 1 - System Firmware Version.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set System Firmware Version
+    [Documentation]  Set System Firmware Version for System Info with valid version.
+    [Arguments]  ${version}
+
+    # Set System Info Parameter for param 1 - System Firmware Version.
+    # ${version} can be any 14 data.
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param1_System_Firmware_Version']['Set'][0]} ${version}
+
+
+Get System Name
+    [Documentation]  Run system info parameter command for system name and return response data.
+
+    # Get System Info Parameter for param 2 - System Name.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set System Name
+    [Documentation]  Set System Name for System Info with valid name.
+    [Arguments]  ${sys_name}
+
+    # Set System Info Parameter for param 2 - System Name.
+    # ${sys_name} can be any 14 byte data.
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param2_System_Name']['Set'][0]} ${sys_name}
+
+
+Get Primary OS Name
+    [Documentation]  Run Get System Info command for primary OS name and return response data.
+
+    # Get System Info Parameter for param 3 - Primary OS Name.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set Primary OS Name
+    [Documentation]  Set Primary OS Name for System Info with valid os name.
+    [Arguments]  ${os_name}
+
+    # Set System Info Parameter for param 3 - Primary OS Name.
+    # ${os_name} can be any 14 byte data.
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param3_Primary_OS_Name']['Set'][0]} ${os_name}
+
+
+Get OS Name
+    [Documentation]  Run get System Info command for OS name and return response data.
+
+    # Get System Info Parameter for param 4 - OS Name.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set OS Name
+    [Documentation]  Set OS Name for System Info with valid os name.
+    [Arguments]  ${os_name}
+
+    # Set System Info Parameter for param 4 - OS Name.
+    # ${os_name} can be any 14 byte data.
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param4_OS_Name']['Set'][0]} ${os_name}
+
+
+Get Present OS Version Number
+    [Documentation]  Run Get System Info command for present os version name and return response.
+
+    # Get System Info Parameter for param 5 - Present OS Version Number.
+    ${resp}=  Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Get'][0]}
+    ${resp}=  Split String  ${resp}
+
+    [Return]  ${resp}
+
+
+Set Present OS Version Number
+    [Documentation]  Set Present OS Version Number for System Info with valid os version.
+    [Arguments]  ${os_name}
+
+    # Set System Info Parameter for param 5 - Present OS Version Number.
+    # ${os_name} can be any 14 byte data
+    Run IPMI Standard Command
+    ...  raw ${IPMI_RAW_CMD['System_Info']['param5_Present_OS_Version_number']['Set'][0]} ${os_name}
+
+
+Add Prefix To List Objects And Join String
+    [Documentation]  Adding prefix '0x' to each list object and join the string.
+    [Arguments]  ${list}
+
+    # ${list} contains list of hexadecimal data.
+
+    # Prefix Bytes with 0x for each data bytes and makes a string of request bytes.
+    # Prefix Bytes function under lib/ipmi_utils.py.
+    # Prefixes every list item with 0x and returns list of prefixed hexadecimal data.
+    ${prefix_list}=  Prefix Bytes  ${list}
+    ${prefix_list}=  Evaluate  " ".join(${prefix_list})
+
+    [Return]  ${prefix_list}
+
+
+Suite Setup Execution
+    [Documentation]  Suite setup execution to fetch all the default response bytes,
+    ...  prefix each byte with 0x and make them a suite variable.
+
+    # Get Default Values of each parameters.
+    # Set In Progress - param 0.
+    ${resp}=  Get System Info Set In Progress
+    # Configuration parameter data - 11 xx (xx can be any - 00 | 01 | 10 | 11).
+    ${set_in_progress}=  Set Variable  ${resp[1]}
+
+    Set Suite Variable  ${set_in_progress}
+
+    # System Firmware Version - param 1.
+    ${resp}=  Get System Firmware Version
+    # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
+    # x1 - encoding, x2 - string length in bytes.
+    ${sys_fw_version}=  Set Variable  ${resp[2:]}
+    # Prefix all bytes with 0x.
+    ${sys_fw_version_string}=  Add Prefix To List Objects And Join String  ${sys_fw_version}
+
+    Set Suite Variable  ${sys_fw_version}
+    Set Suite Variable  ${sys_fw_version_string}
+
+    # System Name - param 2.
+    ${resp}=  Get System Name
+    # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
+    # x1 - encoding, x2 - string length in bytes.
+    ${sys_name_default}=  Set Variable  ${resp[2:]}
+    # Prefix all bytes with 0x.
+    ${sys_name_hex_default}=  Add Prefix To List Objects And Join String  ${sys_name_default}
+
+    Set Suite Variable  ${sys_name_default}
+    Set Suite Variable  ${sys_name_hex_default}
+
+    # Primary OS Name - param 3.
+    ${resp}=  Get Primary OS Name
+    # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
+    # x1 - encoding, x2 - string length in bytes.
+    ${primary_os_name}=  Set Variable  ${resp[2:]}
+    # Prefix all bytes with 0x.
+    ${primary_os_name_hex}=  Add Prefix To List Objects And Join String  ${primary_os_name}
+
+    Set Suite Variable  ${primary_os_name}
+    Set Suite Variable  ${primary_os_name_hex}
+
+    # OS Name - param 4.
+    ${resp}=  Get OS Name
+    # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
+    # x1 - encoding, x2 - string length in bytes.
+    ${default_os_name}=  Set Variable  ${resp[2:]}
+    # Prefix all bytes with 0x.
+    ${default_os_name_hex}=  Add Prefix To List Objects And Join String  ${default_os_name}
+
+    Set Suite Variable  ${default_os_name}
+    Set Suite Variable  ${default_os_name_hex}
+
+    # Present OS Version Number - param 5.
+    ${resp}=  Get Present OS Version Number
+    # Configuration parameter data - 11 x1 x2 xx xx xx xx .. xx (xx - 14 bytes).
+    # x1 - encoding, x2 - string length in bytes.
+    ${present_os_num}=  Set Variable  ${resp[2:]}
+    # Prefix all bytes with 0x.
+    ${present_os_num_hex}=  Add Prefix To List Objects And Join String  ${present_os_num}
+
+    Set Suite Variable  ${present_os_num}
+    Set Suite Variable  ${present_os_num_hex}
+
+
+Restore Default Configuration
+    [Documentation]  Restore all system info parameter response data to,
+    ...  default data obtained from suite setup.
+
+    # All variable to set are suite variables declared in suite setup.
+
+    # Set In Progress - param 0.
+    Set System Info Set In Progress  0x${set_in_progress}
+
+    # System Firmware Version - param 1.
+    Run IPMI Standard Command  raw 0x06 0x58 0x01 0x00 ${sys_fw_version_string}
+
+    # System Name - param 2.
+    Run IPMI Standard Command  raw 0x06 0x58 0x02 0x00 ${sys_name_hex_default}
+
+    # Primary OS Name - param 3.
+    Run IPMI Standard Command  raw 0x06 0x58 0x03 0x00 ${primary_os_name_hex}
+
+    # OS Name - param 4.
+    Run IPMI Standard Command  raw 0x06 0x58 0x04 0x00 ${default_os_name_hex}
+
+    # Present OS Version Number - param 5.
+    Run IPMI Standard Command  raw 0x06 0x58 0x05 0x00 ${present_os_num_hex}
+
+    FFDC On Test Case Fail
