diff --git a/lib/ipmi_client.py b/lib/ipmi_client.py
index 6ed5a51..f3394d7 100644
--- a/lib/ipmi_client.py
+++ b/lib/ipmi_client.py
@@ -9,12 +9,15 @@
 from robot.libraries.BuiltIn import BuiltIn
 
 
-def build_ipmi_ext_cmd(quiet=None):
+def build_ipmi_ext_cmd(ipmi_cipher_level=None, quiet=None):
     r"""
     Build the global IPMI_EXT_CMD variable.
 
     If global variable IPMI_EXT_CMD already has a value, this keyword will
-    simply return without taking any action.
+    simply return without taking any action with the following exception:
+
+    If ipmi_cipher_level is is anything but None, this function will continue
+    on and re-build the IPMI_EXT_CMD variable.
 
     This keyword is designed for use by keywords which use the IPMI_EXT_CMD
     variable (e.g. 'Run External IPMI Raw Command').  This keyword is
@@ -27,12 +30,14 @@
     username.
 
     Description of argument(s):
+    # ipmi_cipher_level             IPMI cipher level value
+    #                               (e.g. "1", "2", "3", "15", "16", "17").
     # quiet                         Indicates whether this keyword should run
     #                               without any output to the console.
     """
 
     ipmi_ext_cmd = BuiltIn().get_variable_value("${IPMI_EXT_CMD}", "")
-    if ipmi_ext_cmd != "":
+    if ipmi_ext_cmd != "" and not ipmi_cipher_level:
         return
 
     quiet = int(gp.get_var_value(quiet, 0))
@@ -40,8 +45,9 @@
     ipmi_username = BuiltIn().get_variable_value("${IPMI_USERNAME}", "root")
     ipmi_password = BuiltIn().get_variable_value("${IPMI_PASSWORD}",
                                                  "0penBmc")
-    ipmi_cipher_level = BuiltIn().get_variable_value("${IPMI_CIPHER_LEVEL}",
-                                                     "3")
+    if not ipmi_cipher_level:
+        ipmi_cipher_level = BuiltIn().get_variable_value("${IPMI_CIPHER_LEVEL}",
+                                                         "3")
 
     old_ipmi_ext_cmd = "ipmitool -I lanplus -C " + str(ipmi_cipher_level)\
         + " -P " + ipmi_password
diff --git a/tests/ipmi/test_general_ipmi.robot b/tests/ipmi/test_general_ipmi.robot
index f2d9e44..63599e1 100755
--- a/tests/ipmi/test_general_ipmi.robot
+++ b/tests/ipmi/test_general_ipmi.robot
@@ -49,7 +49,7 @@
 
     :FOR  ${cipher_level}  IN  @{valid_cipher_list}
     \  ${status}=  Execute IPMI Command With Cipher  ${cipher_level}
-    \  Should Be Equal  ${status}  ${0}
+    \  Should Be Equal  ${status}  ${True}
 
 
 Verify Unsupported Cipher List
@@ -58,7 +58,7 @@
 
     :FOR  ${cipher_level}  IN  @{unsupported_cipher_list}
     \  ${status}=  Execute IPMI Command With Cipher  ${cipher_level}
-    \  Should Be Equal  ${status}  ${1}
+    \  Should Be Equal  ${status}  ${False}
 
 
 Verify Supported Cipher List Via Lan Print
@@ -900,9 +900,6 @@
     # cipher_level  IPMI chipher level value
     #               (e.g. "1", "2", "3", "15", "16", "17").
 
-    ${ipmi_cmd}=  Catenate  SEPARATOR=
-    ...  ipmitool -I lanplus -C ${cipher_level} -P${SPACE}${IPMI_PASSWORD}
-    ...  ${SPACE}${HOST}${SPACE}${OPENBMC_HOST}${SPACE}mc info
+    ${status}=  Run Keyword And Return Status  Build IPMI Ext Cmd  ${cipher_level}
 
-    ${rc}  ${output}=  Run And Return RC and Output  ${ipmi_cmd}
-    [Return]  ${rc}
+    [Return]  ${status}
