diff --git a/system/ui/mici_setup.py b/system/ui/mici_setup.py index c1474728c..5a0b751d3 100755 --- a/system/ui/mici_setup.py +++ b/system/ui/mici_setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import os import re +import ssl import threading import time import urllib.request @@ -16,6 +17,7 @@ from openpilot.common.filter_simple import FirstOrderFilter from openpilot.system.hardware import HARDWARE, TICI from openpilot.common.realtime import config_realtime_process, set_core_affinity from openpilot.common.swaglog import cloudlog +from openpilot.common.time_helpers import system_time_valid from openpilot.common.utils import run_cmd from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.lib.wifi_manager import WifiManager @@ -55,6 +57,7 @@ class NetworkConnectivityMonitor: self.wifi_connected = threading.Event() self._should_check = should_check or (lambda: True) self._stop_event = threading.Event() + self._last_timesyncd_restart = 0.0 self._thread: threading.Thread | None = None def start(self): @@ -82,6 +85,13 @@ class NetworkConnectivityMonitor: self.network_connected.set() if HARDWARE.get_network_type() == NetworkType.wifi: self.wifi_connected.set() + except urllib.error.URLError as e: + if (isinstance(e.reason, ssl.SSLCertVerificationError) and + not system_time_valid() and + time.monotonic() - self._last_timesyncd_restart > 5): + self._last_timesyncd_restart = time.monotonic() + run_cmd(["sudo", "systemctl", "restart", "systemd-timesyncd"]) + self.reset() except Exception: self.reset() else: