diff --git a/lib/ipmi_utils.py b/lib/ipmi_utils.py
new file mode 100644
index 0000000..72c70df
--- /dev/null
+++ b/lib/ipmi_utils.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+
+r"""
+Provide useful ipmi functions.
+"""
+
+import gen_misc as gm
+import gen_robot_keyword as grk
+import gen_robot_utils as gru
+import tempfile
+gru.my_import_resource("ipmi_client.robot")
+
+
+###############################################################################
+def get_sol_info():
+
+    r"""
+    Get all SOL info and return it as a dictionary.
+
+    Example use:
+
+    Robot code:
+    ${sol_info}=  get_sol_info
+    Rpvars  sol_info
+
+    Output:
+    sol_info:
+      sol_info[Info]:                                SOL parameter 'Payload Channel (7)' not supported - defaulting to 0x0e
+      sol_info[Character Send Threshold]:            1
+      sol_info[Force Authentication]:                true
+      sol_info[Privilege Level]:                     USER
+      sol_info[Set in progress]:                     set-complete
+      sol_info[Retry Interval (ms)]:                 100
+      sol_info[Non-Volatile Bit Rate (kbps)]:        IPMI-Over-Serial-Setting
+      sol_info[Character Accumulate Level (ms)]:     100
+      sol_info[Enabled]:                             true
+      sol_info[Volatile Bit Rate (kbps)]:            IPMI-Over-Serial-Setting
+      sol_info[Payload Channel]:                     14 (0x0e)
+      sol_info[Payload Port]:                        623
+      sol_info[Force Encryption]:                    true
+      sol_info[Retry Count]:                         7
+    """
+
+    status, ret_values = grk.run_key_u("Run IPMI Standard Command  sol info")
+
+    # Create temp file path.
+    temp = tempfile.NamedTemporaryFile()
+    temp_file_path = temp.name
+
+    # Write sol info to temp file path.
+    text_file = open(temp_file_path, "w")
+    text_file.write(ret_values)
+    text_file.close()
+
+    # Use my_parm_file to interpret data.
+    sol_info = gm.my_parm_file(temp_file_path)
+
+    return sol_info
+
+###############################################################################
