diff --git a/data/ipmi_raw_cmd_table.py b/data/ipmi_raw_cmd_table.py
index fcc97ef..5ed4b9b 100644
--- a/data/ipmi_raw_cmd_table.py
+++ b/data/ipmi_raw_cmd_table.py
@@ -182,8 +182,10 @@
     {
         'Get':
         [
-            # raw command
-            "0x06 0x01"
+            # raw command, error response, error code
+            "0x06 0x01",
+            "Error: Unable to establish IPMI v2 / RMCP+ session",
+            "0xc7",
         ]
     },
     'Cold Reset':
diff --git a/ipmi/test_ipmi_device_id.robot b/ipmi/test_ipmi_device_id.robot
new file mode 100644
index 0000000..17f7562
--- /dev/null
+++ b/ipmi/test_ipmi_device_id.robot
@@ -0,0 +1,180 @@
+*** Settings ***
+Documentation       This suite tests IPMI Payload in OpenBMC.
+...                 This script verifies Get Device ID IPMI command.
+...
+...                 Response data validated for each and every byte,
+...                 with respect to expected response.
+...
+...                 Following data validated in response bytes :
+...                 Device ID, Device Revision, Firmware Revision 1 & 2,
+...                 IPMI Version, Manufacture ID, Product ID,
+...                 Auxiliary Firmware Revision Information
+...
+...                 Request Data for Get Device ID defined under,
+...                       - data/ipmi_raw_cmd_table.py
+
+
+Library             Collections
+Library             ../lib/ipmi_utils.py
+Library             ../lib/var_funcs.py
+Resource            ../lib/ipmi_client.robot
+Resource            ../lib/openbmc_ffdc.robot
+Variables           ../data/ipmi_raw_cmd_table.py
+
+
+*** Test Cases ***
+
+Get Device ID Via IPMI
+    [Documentation]  Verify Get Device ID using IPMI and check whether a response is received.
+    [Tags]  Get_Device_ID_Via_IPMI
+
+    # Verify Get Device ID.
+    ${resp}=  Run External IPMI Raw Command
+    ...  ${IPMI_RAW_CMD['Device ID']['Get'][0]}
+    Should Not Contain  ${resp}  ${IPMI_RAW_CMD['Device ID']['Get'][1]}
+
+
+Verify Get Device ID With Invalid Data Request
+    [Documentation]  Verify Get Device ID with invalid data request via IPMI.
+    [Tags]  Verify_Get_Device_ID_With_Invalid_Data_Request
+
+    # Run IPMI Get Device ID command with invalid request data byte.
+    ${resp}=  Run Keyword and Expect Error  *Request data length invalid*
+    ...  Run External IPMI Raw Command  ${IPMI_RAW_CMD['Device ID']['Get'][0]} 0x00
+    # Verify error code in 'rsp='.
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Device ID']['Get'][2]}
+
+
+Verify Device ID Response Data Via IPMI
+    [Documentation]  Verify Get Device ID response data bytes using IPMI.
+    [Tags]  Verify_Device_ID_Response_Data_Via_IPMI
+
+    # Get Device ID IPMI command.
+    ${resp}=  Run External IPMI Raw Command
+    ...  ${IPMI_RAW_CMD['Device ID']['Get'][0]}
+
+    # Split each and every byte and form list.
+    ${resp}=  Split String  ${resp}
+
+    # Checking Device ID.
+    Run Keyword And Continue On Failure  Should Not Be Equal  ${resp[0]}  00
+    ...  msg=Device ID cannot be Unspecified
+
+    # Verify Device Revision.
+    ${device_rev}=  Set Variable  ${resp[1]}
+    ${device_rev}=  Convert To Binary  ${device_rev}  base=16
+    ${device_rev}=  Zfill Data  ${device_rev}  8
+    # Comparing the reserved bits from Device Revision.
+    Run Keyword And Continue On Failure  Should Be Equal As Strings  ${device_rev[1:4]}  000
+
+    # Get version details from /etc/os-release.
+    ${os_release}=  Get BMC OS Release Details
+    ${version}=  Get Version Details From BMC OS Release  ${os_release['version']}
+
+    # Verify Firmware Revision 1.
+    ${firmware_rev1}=  Set Variable  ${version[0]}
+    Run Keyword And Continue On Failure  Should Be Equal  ${resp[2]}  0${firmware_rev1}
+
+    # Verify Firmware Revision 2.
+    ${firmware_rev2}=  Set Variable  ${version[1]}
+    Run Keyword And Continue On Failure  Should Be Equal  ${resp[3]}  0${firmware_rev2}
+
+    # Verify IPMI Version.
+    Run Keyword And Continue On Failure  Should Be Equal  ${resp[4]}  02
+
+    # Verify Manufacture ID.
+    ${manufacture_id}=  Set Variable  ${resp[6:9]}
+    ${manufacture_id}=  Evaluate  "".join(${manufacture_id})
+    ${manufacture_data}=  Convert To Binary  ${manufacture_id}  base=16
+    # Manufacure ID has Most significant four bits - reserved (0000b)
+    Run Keyword And Continue On Failure  Should Be Equal  ${manufacture_data[-5:-1]}  0000
+
+    # Verify Product ID.
+    ${product_id}=  Set Variable  ${resp[9:11]}
+    ${product_id}=  Evaluate   "".join(${product_id})
+    Run Keyword And Continue On Failure  Should Not Be Equal  ${product_id}  0000
+    ...  msg=Product ID cannot be Zero
+
+    # Verify Auxiliary Firmware Revision Information.
+    # etc/os-release - from bmc.
+    ${auxiliary_info}=  Get Auxiliary Firmware Revision Information
+
+    # Get Auxiliary Firmware Revision Information from IPMI response.
+    ${auxiliary_rev_version}=  Set Variable  ${resp[11:]}
+    Reverse List  ${auxiliary_rev_version}
+    ${auxiliary_rev_version}=  Evaluate  "".join(${auxiliary_rev_version})
+    ${auxiliary_rev_version}=  Convert To Integer  ${auxiliary_rev_version}  16
+
+    # Compare both IPMI aux version and dev_id.json aux version.
+    ${dev_id_data}=  Get Device Info From BMC
+    ${aux_info}=  Get From Dictionary  ${dev_id_data}  aux
+    Run Keyword And Continue On Failure  Should Be Equal  ${aux_info}  ${auxiliary_rev_version}
+
+    # Compare both IPMI version and /etc/os-release version.
+    Run Keyword And Continue On Failure  Should Be Equal  ${auxiliary_info}  ${auxiliary_rev_version}
+
+
+*** Keywords ***
+
+Get BMC OS Release Details
+    [Documentation]  To get the release details from bmc etc/os-release.
+
+    # The BMC OS Release information will be,
+    # for example,
+    # ID=openbmc-phosphor
+    # NAME="ADCD EFG BMC (OpenBMC     Project Reference Distro)"
+    # VERSION="2.9.1-2719"
+    # VERSION_ID=2.9.1-2719-xxxxxxxx
+    # PRETTY_NAME="ABCD EFG BMC (OpenBMC     Project Reference Distro) 2.9.1-2719"
+    # BUILD_ID="xxxxxxxxxx"
+    # OPENBMC_TARGET_MACHINE="efg"
+
+    ${os_release}=  Get BMC Release Info
+    ${os_release}=  Convert To Dictionary  ${os_release}
+
+    [Return]  ${os_release}
+
+
+Get Version Details From BMC OS Release
+    [Documentation]  To get the Version details from bmc etc/os-release,
+    ...              and returns list consists of major, minor and auxiliary version.
+    [Arguments]  ${version}
+
+    # As per BMC, VERSION="X.Y.Z-ZZZZ"
+    # ${version} - ["X", "Y" ,"Z-ZZZZ"]
+    # here, X - major version, Y - minor version,
+    # Z-ZZZZ - auxiliary version.
+    ${version}=  Split String  ${version}  .
+
+    [Return]  ${version}
+
+
+Get Auxiliary Firmware Revision Information
+    [Documentation]  To Get the Auxiliary Firmware Revision Information from BMC etc/os-release.
+
+    # Get the Auxiliary Firmware Revision Information version from etc/os-release.
+    ${os_release}=  Get BMC OS Release Details
+
+    # Fetch the version from dictionary response and identify Auxiliary version.
+    ${version}=  Get Version Details From BMC OS Release  ${os_release['version']}
+    ${aux_rev}=  Set Variable  ${version[2]}
+
+    # Remove extra special character.
+    ${aux_rev}=  Replace String  ${aux_rev}  -  ${EMPTY}
+    ${aux_rev}=  Convert To Integer  ${aux_rev}
+
+    [Return]  ${aux_rev}
+
+
+Get Device Info From BMC
+    [Documentation]  To get the device information from BMC.
+
+    # Get Device ID information from BMC.
+    ${data}=  Bmc Execute Command   cat /usr/share/ipmi-providers/dev_id.json
+    ${data}=  Convert To List  ${data}
+
+    # Fetching dictionary from the response.
+    ${info}=  Set Variable  ${data[0]}
+    ${info}=  Evaluate  dict(${info})
+
+    [Return]  ${info}
