diff --git a/lib/bmc_redfish.py b/lib/bmc_redfish.py
index 025059b..3baee67 100644
--- a/lib/bmc_redfish.py
+++ b/lib/bmc_redfish.py
@@ -4,10 +4,13 @@
 See class prolog below for details.
 """
 
+import sys
+import re
 from redfish_plus import redfish_plus
 from robot.libraries.BuiltIn import BuiltIn
 
 import func_args as fa
+import gen_print as gp
 
 
 class bmc_redfish(redfish_plus):
@@ -18,6 +21,34 @@
     See the prologs of the methods below for details.
     """
 
+    def __init__(self, *args, **kwargs):
+        r"""
+        Do BMC-related redfish initialization.
+
+        Presently, older versions of BMC code may not support redfish
+        requests.  This can lead to unsightly error text being printed out for
+        programs that may use lib/bmc_redfish_resource.robot even though they
+        don't necessarily intend to make redfish requests.
+
+        This class method will make an attempt to tolerate this situation.  At
+        some future point, when all BMCs can be expected to support redfish,
+        this class method may be considered for deletion.  If it is deleted,
+        the self.__inited__ test code in the login() class method below should
+        likewise be deleted.
+        """
+        self.__inited__ = False
+        try:
+            super(bmc_redfish, self).__init__(*args, **kwargs)
+            self.__inited__ = True
+        except ValueError as get_exception:
+            except_type, except_value, except_traceback = sys.exc_info()
+            regex = r"The HTTP status code was not valid:[\r\n]+status:[ ]+502"
+            result = re.match(regex, str(except_value), flags=re.MULTILINE)
+            if not result:
+                gp.lprint_var(except_type)
+                gp.lprint_varx("except_value", str(except_value))
+                raise(get_exception)
+
     def login(self, *args, **kwargs):
         r"""
         Assign BMC default values for username, password and auth arguments
@@ -28,6 +59,9 @@
         kwargs                      See parent class method prolog for details.
         """
 
+        if not self.__inited__:
+            message = "bmc_redfish.__init__() was never successfully run.\n"
+            raise ValueError(message)
         # Assign default values for username, password, auth where necessary.
         openbmc_username = BuiltIn().get_variable_value("${OPENBMC_USERNAME}")
         openbmc_password = BuiltIn().get_variable_value("${OPENBMC_PASSWORD}")
@@ -35,8 +69,8 @@
         password, args, kwargs = fa.pop_arg(openbmc_password, *args, **kwargs)
         auth, args, kwargs = fa.pop_arg('session', *args, **kwargs)
 
-        super(redfish_plus, self).login(username, password, auth,
-                                        *args, **kwargs)
+        super(bmc_redfish, self).login(username, password, auth,
+                                       *args, **kwargs)
 
     def get_properties(self, *args, **kwargs):
         r"""
