diff --git a/tools/pyboard.py b/tools/pyboard.py
index d4ce8b788742725222a927102bf105292fad6c8e..f368455f5eaeca02dd6e2f0fb595c61a3e3ebeb7 100755
--- a/tools/pyboard.py
+++ b/tools/pyboard.py
@@ -300,6 +300,7 @@ def main():
             pyb.enter_raw_repl()
         except PyboardError as er:
             print(er)
+            pyb.close()
             sys.exit(1)
 
         def execbuffer(buf):
@@ -307,6 +308,7 @@ def main():
                 ret, ret_err = pyb.exec_raw(buf, timeout=None, data_consumer=stdout_write_bytes)
             except PyboardError as er:
                 print(er)
+                pyb.close()
                 sys.exit(1)
             except KeyboardInterrupt:
                 sys.exit(1)