diff --git a/src/orca/braille.py b/src/orca/braille.py
index df80286a2..549259b1b 100644
--- a/src/orca/braille.py
+++ b/src/orca/braille.py
@@ -54,6 +54,8 @@ except:
     _brlAPIRunning = False
 
 from . import settings
+from . import settings_manager
+_settingsManager = settings_manager.getManager()
 
 try:
     # This can fail due to gtk not being available.  We want to
@@ -1091,6 +1093,19 @@ def refresh(panToCursor=True,
     if stopFlash:
         killFlash(restoreSaved=False)
 
+    if not _settingsManager.getSetting('enableBraille'):
+        if _brlAPIRunning:
+            try:
+                _brlAPI.writeText("", 0)
+            except:
+                debug.println(debug.LEVEL_WARNING,
+                              "BrlTTY seems to have disappeared:")
+                debug.printException(debug.LEVEL_WARNING)
+            # In this case we always shut it down
+            shutdown()
+        _lastTextInfo = (None, 0, 0, 0)
+        return
+
     if len(_lines) == 0:
         if not _brlAPIRunning:
             init(_callback, settings.tty)
@@ -1102,6 +1117,7 @@ def refresh(panToCursor=True,
                               "BrlTTY seems to have disappeared:")
                 debug.printException(debug.LEVEL_WARNING)
                 shutdown()
+            # In this case we just leave the display with empty text
         _lastTextInfo = (None, 0, 0, 0)
         return
 
@@ -1684,6 +1700,7 @@ def shutdown():
     was run.
     """
 
+    global _brlAPI
     global _brlAPIRunning
     global _brlAPISourceId
     global _monitor
@@ -1697,6 +1714,11 @@ def shutdown():
             _brlAPI.leaveTtyMode()
         except:
             pass
+        try:
+            _brlAPI.closeConnection()
+        except:
+            pass
+        _brlAPI = None
         if _monitor:
             _monitor.destroy()
             _monitor = None
