diff --git a/picopy/wifi.py b/picopy/wifi.py index 2d2812b..4cbb967 100644 --- a/picopy/wifi.py +++ b/picopy/wifi.py @@ -81,15 +81,14 @@ def stop_ap(): nm('con', 'down', NM_AP_CON) -def _takeover_wifi_autoconnect(): - """Deaktiviert Autoconnect aller Fremd-WLAN-Profile, damit NM beim Boot PiCopy-WiFi bevorzugt.""" +def _purge_foreign_wifi_profiles(): + """Löscht alle WLAN-Profile die nicht von PiCopy verwaltet werden (z.B. Imager-Profile).""" r = nm('-t', '-f', 'NAME,TYPE', 'con', 'show') for line in r.stdout.splitlines(): parts = line.split(':', 1) if len(parts) == 2 and parts[1] == '802-11-wireless' and parts[0] not in (NM_CLIENT_CON, NM_AP_CON): - nm('con', 'mod', parts[0], 'connection.autoconnect', 'no') - log.info(f'Autoconnect für Fremdprofil deaktiviert: {parts[0]}') - nm('con', 'mod', NM_CLIENT_CON, 'connection.autoconnect', 'yes') + nm('con', 'delete', parts[0]) + log.info(f'Fremdprofil gelöscht: {parts[0]}') def connect_client_wifi(ssid, password): @@ -109,7 +108,6 @@ def connect_client_wifi(ssid, password): ok = r.returncode == 0 if ok: log.info(f'Verbunden mit {ssid}') - _takeover_wifi_autoconnect() else: log.error(f'WiFi-Verbindung fehlgeschlagen: {r.stderr.strip()}') return ok @@ -166,34 +164,18 @@ def _wait_for_nm(max_wait: int = 30) -> None: def wifi_monitor(): log.info('WiFi-Monitor: warte auf NetworkManager...') _wait_for_nm() - - first_run = True + _purge_foreign_wifi_profiles() while True: try: update_wifi_state() with wifi_lock: mode = wifi_state['mode'] - current_conn = wifi_state.get('ssid', '') cfg = load_cfg() - picopy_ssid = cfg.get('wifi_ssid', '') - - # Beim ersten Durchlauf: falls ein Fremdprofil (Imager) verbunden ist - # und PiCopy eine eigene SSID kennt → zu PiCopy-WiFi wechseln - if first_run and mode == 'client' and current_conn != NM_CLIENT_CON and picopy_ssid: - log.info(f'Fremdprofil aktiv ({current_conn}), wechsle zu PiCopy-WiFi ({picopy_ssid})...') - connected = connect_client_wifi(picopy_ssid, cfg.get('wifi_password', '')) - if connected: - time.sleep(5) - update_wifi_state() - with wifi_lock: - mode = wifi_state['mode'] - - first_run = False if mode == 'disconnected': - ssid = picopy_ssid + ssid = cfg.get('wifi_ssid', '') pw = cfg.get('wifi_password', '') connected = False diff --git a/version.txt b/version.txt index 6120160..e8461b4 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.73 \ No newline at end of file +1.0.74 \ No newline at end of file