diff --git a/base/module.py b/base/module.py
index dd3efa3..04ac5b8 100644
--- a/base/module.py
+++ b/base/module.py
@@ -432,6 +432,12 @@ class Module(object):
         if show_usage is not None:
             sys.exit(0)
 
+        if mode == GUI_MODE:
+            if not utils.canEnterGUIMode4():
+                log.warn("GUI mode not available - switching to interactive mode.")
+                mode = INTERACTIVE_MODE
+                ui_toolkit = 'none'
+
         self.mode = mode
         return opts, device_uri, printer_name, mode, ui_toolkit, lang
 
diff --git a/base/utils.py b/base/utils.py
index 98437a3..9b8813b 100644
--- a/base/utils.py
+++ b/base/utils.py
@@ -722,6 +722,15 @@ def canEnterGUIMode4(): # qt4
             log.warn(e)
             return False
 
+        try:
+            import ui4
+        except ImportError:
+            try:
+                import ui5.setupdialog
+            except ImportError as e:
+                log.warn(e)
+                return False
+
     return True
 
 
@@ -734,6 +743,11 @@ def checkPyQtImport(): # qt3
         if os.getenv('DISPLAY') and os.getenv('STARTED_FROM_MENU'):
             no_qt_message_gtk()
 
+        try:
+            import ui
+        except ImportError:
+            return False
+
         log.error("PyQt not installed. GUI not available. Exiting.")
         return False
 
@@ -781,11 +795,13 @@ def checkPyQtImport4():
         import PyQt4
         import ui4
     except ImportError:
-        import PyQt5
-        import ui5
-    else:
-        log.debug("HPLIP is not installed properly or is installed without graphical support. Please reinstall HPLIP again")
-        return False
+        try:
+            import PyQt5
+            import ui5.setupdialog
+        except ImportError:
+            log.debug('GUI not available.')
+            return False
+
     return True
 
 # def checkPyQtImport5():
diff --git a/fab.py b/fab.py
index 5577af5..194ceed 100755
--- a/fab.py
+++ b/fab.py
@@ -776,14 +776,15 @@ mod.setUsage(module.USAGE_FLAG_NONE)
 opts, device_uri, printer_name, mode, ui_toolkit, loc = \
     mod.parseStdOpts(handle_device_printer=False)
 
-if ui_toolkit == 'qt3':
-    if not utils.canEnterGUIMode():
-        log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__)
-        mode = INTERACTIVE_MODE
-else:
-    if not utils.canEnterGUIMode4():
-        log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__)
-        mode = INTERACTIVE_MODE
+if ui_toolkit != 'none':
+    if ui_toolkit == 'qt3':
+        if not utils.canEnterGUIMode():
+            log.error("%s GUI mode requires GUI support (try running with --qt4). Entering interactive mode." % __mod__)
+            mode = INTERACTIVE_MODE
+    else:
+        if not utils.canEnterGUIMode4():
+            log.error("%s GUI mode requires GUI support (try running with --qt3). Entering interactive mode." % __mod__)
+            mode = INTERACTIVE_MODE
 
 
 if mode == GUI_MODE:
