diff --git a/data/pldm_variables.py b/data/pldm_variables.py
index ab51392..b2e9e6e 100755
--- a/data/pldm_variables.py
+++ b/data/pldm_variables.py
@@ -4,6 +4,7 @@
 Contains PLDM-related constants.
 """
 
+
 # PLDM types.
 PLDM_TYPE_BASE = {'VALUE': '00', 'STRING': 'base'}
 PLDM_TYPE_PLATFORM = {'VALUE': '02', 'STRING': 'platform'}
@@ -82,7 +83,7 @@
 
 # PLDM command format.
 
-CMD_GETPLDMTYPES = 'pldmtool base GetPLDMTypes'
+CMD_GETPLDMTYPES = 'base GetPLDMTypes'
 
 '''
 e.g. : GetPLDMVersion usage
@@ -94,7 +95,7 @@
 base->0,platform->2,bios->3,fru->4
 
 '''
-CMD_GETPLDMVERSION = 'pldmtool base GetPLDMVersion -t %s'
+CMD_GETPLDMVERSION = 'base GetPLDMVersion -t %s'
 
 '''
 e.g. : PLDM raw command usage
@@ -104,10 +105,13 @@
 pldm raw -d 0x<header> 0x<pldm_type> 0x<pldm_cmd_type> 0x<payload_data>
 '''
 
-CMD_PLDMTOOL_RAW = 'pldmtool raw -d 0x80' + '0x%s' + ' ' + '0x%s'
+CMD_PLDMTOOL_RAW = 'raw -d 0x80' + '0x%s' + ' ' + '0x%s'
 
 
 # PLDM command payload data.
 
 PAYLOAD_GetPLDMVersion = \
     ' 0x00 0x00 0x00 0x00 0x%s 0x%s'    # %(TransferOperationFlag, PLDMType)
+
+
+PLDM_SUPPORTED_TYPES = ['base', 'platform', 'bios']
diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
new file mode 100644
index 0000000..a6a8aee
--- /dev/null
+++ b/lib/pldm_utils.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+r"""
+PLDM functions.
+"""
+
+import re
+import var_funcs as vf
+import func_args as fa
+import bmc_ssh_utils as bsu
+
+
+def pldmtool(option_string, parse_results=1, **bsu_options):
+    r"""
+    Run pldmtool on the BMC with the caller's option string and return the result.
+
+    Example:
+
+    ${pldm_results}=  Pldmtool  base GetPLDMTypes
+    Rprint Vars  pldm_results
+
+    pldm_results:
+      [request_message]:                              08 01 80 00 04
+      [success_in_creating_the_socket]:               RC = 3
+      [success_in_connecting_to_socket]:              RC = 0
+      [success_in_sending_message_type_as_pldm_to_mctp]:RC = 0
+      [write_to_socket_successful]:                   RC = 5
+      [total_length]:                                 14
+      [loopback_response_message]:                    08 01 80 00 04
+      [on_first_recv(),response_==_request]:          RC = 0
+      [shutdown_socket_successful]:                   RC = 0
+      [response_message]:                             08 01 00 00 04 00 0d 00 00 00 00 00 00 00
+      [supported_types]:
+        [raw]:
+          [0]:                                        0
+          [1]:                                        2
+          [2]:                                        3
+        [text]:
+          [0]:                                        base
+          [1]:                                        platform
+          [2]:                                        bios
+
+    Description of argument(s):
+    option_string                   A string of options which are to be processed by the pldmtool command.
+    parse_results                   Parse the pldmtool results and return a dictionary rather than the raw
+                                    pldmtool output.
+    bsu_options                     Options to be passed directly to bmc_execute_command.  See its prolog for
+                                    details.
+    """
+
+    # This allows callers to specify arguments in python style (e.g. print_out=1 vs. print_out=${1}).
+    bsu_options = fa.args_to_objects(bsu_options)
+
+    stdout, stderr, rc = bsu.bmc_execute_command('pldmtool ' + option_string, **bsu_options)
+
+    if parse_results:
+        # Remove linefeeds following colons.
+        stdout = re.sub(":\n", ":", stdout)
+        # Remove first line (e.g. "Encode request successfully").
+        stdout = re.sub("^.*\\n", "", stdout)
+        result = vf.key_value_outbuf_to_dict(stdout)
+        if 'supported_types' in result:
+            # 'supported types' begins like this:
+            # 0(base) 2(platform) 3(bios)
+            # Parsing it to look like it does in the example above.
+            supported_types = {'raw': [], 'text': []}
+            for entry in result['supported_types'].split(" "):
+                record = entry.split("(")
+                supported_types['raw'].append(record[0])
+                supported_types['text'].append(record[1].rstrip(")"))
+            result['supported_types'] = supported_types
+        return result
+
+    return stdout
diff --git a/pldm/test_pldm_base.robot b/pldm/test_pldm_base.robot
new file mode 100644
index 0000000..77bfae7
--- /dev/null
+++ b/pldm/test_pldm_base.robot
@@ -0,0 +1,55 @@
+*** Settings ***
+
+Documentation    Module to test PLDM base commands.
+Library          ../lib/pldm_utils.py
+Variables        ../data/pldm_variables.py
+Resource         ../lib/openbmc_ffdc.robot
+
+Test Setup       Printn
+Test Teardown    FFDC On Test Case Fail
+
+
+*** Test Cases ***
+
+Verify Get PLDM Types
+    [Documentation]  Verify supported PLDM types.
+    [Tags]  Verify_Get_PLDM_Types
+
+    ${pldm_output}=  Pldmtool  base GetPLDMTypes
+    Valid List  pldm_output['supported_types']['text']  required_values=${PLDM_SUPPORTED_TYPES}
+
+
+Verify Get PLDM Version For Base
+    [Documentation]  Verify supported PLDM version for base type.
+    [Tags]  Verify_Get_PLDM_Version_For_Base
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'base'
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Valid Value  pldm_output['type_0(base)']  ${VERSION_BASE['STRING']}
+
+
+Verify Get PLDM Version For Platform
+    [Documentation]  Verify supported PLDM version for platform type.
+    [Tags]  Verify_Get_PLDM_Version_For_Platform
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'platform'
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Valid Value  pldm_output['type_2(platform)']  ${VERSION_PLATFORM['STRING']}
+
+
+Verify Get PLDM Version For BIOS
+    [Documentation]  Verify supported PLDM version for BIOS type.
+    [Tags]  Verify_Get_PLDM_Version_For_BIOS
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'bios'
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Valid Value  pldm_output['type_3(bios)']  ${VERSION_BIOS['STRING']}
+
+
+Verify Get PLDM Version For FRU
+    [Documentation]  Verify supported PLDM version for FRU type.
+    [Tags]  Verify_Get_PLDM_Version_For_FRU
+
+    ${pldm_cmd}=  Evaluate  $CMD_GETPLDMVERSION % 'fru'
+    ${pldm_output}=  Pldmtool  ${pldm_cmd}
+    Valid Value  pldm_output['type_4(fru)']  ${VERSION_FRU['STRING']}
