diff --git a/client/devkit_client/gui2/gui2.py b/client/devkit_client/gui2/gui2.py
index 63346d213deb0a56e5c8cd3e0e236dbebf162e56..a39292b700561618e200a4ce3e38ec4cd4314f50 100644
--- a/client/devkit_client/gui2/gui2.py
+++ b/client/devkit_client/gui2/gui2.py
@@ -19,6 +19,7 @@ import platform
 import re
 import enum
 import socket
+import errno
 import webbrowser
 import pathlib
 import shutil
@@ -77,7 +78,8 @@ class DevkitCommands:
     This is very crufty because reasons. Could be massively simplified now.
     '''
 
-    def __init__(self, shutdown_signal):
+    def __init__(self, conf, shutdown_signal):
+        self.conf = conf
         self.executor = None
         self.signal_steamos_status = signalslot.Signal(args = ['devkit'])
         # we have some background threads that should early out when shutting down
@@ -363,20 +365,24 @@ class DevkitCommands:
         return self.executor.submit(self._screenshot, *args)
 
     def _check_port(self, host, port):
+        logger.debug(f'Checking if {host}:{port} is open.')
+        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        s.settimeout(int(self.conf.check_port_timeout))
+        start = time.time()
         try:
-            logger.debug(f'Checking if {host}:{port} is open.')
-            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            s.settimeout(1)
             ret = s.connect_ex((host, port))
         except Exception as e:
             devkit_client.log_exception(e)
             logger.warning(f'Port {port} on host {host} is unreachable.')
             return False
         if ret != 0:
-            logger.error(f'socket.connect_ex errno: {ret}')
+            # NOTE: despite what the python documentation suggests, I am not observing a TimeoutError exception but instead getting EAGAIN here in case of timeout
+            logger.error(f'socket.connect_ex errno: {ret} {errno.errorcode[ret]} {os.strerror(ret)}')
             logger.warning(f'Port {port} on host {host} is unreachable.')
             return False
-        logger.info(f'Port {port} on host {host} is open.')
+        replied = time.time()
+        latency_ms = int( ( replied - start ) * 1000 )
+        logger.info(f'Port {port} on host {host} is open - latency {latency_ms} ms')
         return True
 
     def _check_connectivity(self, devkit):
@@ -3300,6 +3306,11 @@ def main():
         '--valve', required=False, action='store_true',
         help='Force Valve mode features (default: auto detect)'
     )
+    parser.add_argument(
+        '--check-port-timeout', required=False, action='store',
+        default=4,
+        help='Timeout when checking open ports (default 4) - may need to be bumped up on very slow networks'
+    )
 
     conf = parser.parse_args()
 
@@ -3330,7 +3341,7 @@ def main():
     shutdown_signal.connect(settings.on_shutdown_signal)
     atexit.register(settings.shutdown) # saves settings on abnormal termination
 
-    devkit_commands = DevkitCommands(shutdown_signal)
+    devkit_commands = DevkitCommands(conf, shutdown_signal)
     devkit_commands.setup()
 
     viewport = ImGui_SDL2_Viewport(1280, 720, "Steam Devkit Management Tool")