diff --git a/core/services/wifi/wpa_supplicant.py b/core/services/wifi/wpa_supplicant.py index 457896ece7..7bc02020ce 100644 --- a/core/services/wifi/wpa_supplicant.py +++ b/core/services/wifi/wpa_supplicant.py @@ -63,6 +63,17 @@ async def send_command(self, command: str, timeout: float) -> bytes: self.sock.send(command.encode("utf-8")) data, _ = self.sock.recvfrom(self.BUFFER_SIZE) except Exception as error: + # Oh my, something is wrong! + # For now, let us report the error but not without recreating the socket + error_message = "Could not communicate with WPA Supplicant socket" + try: + logger.warning(f"{error_message}: {error}") + logger.warning(f"Trying to recover and recreate socket..") + self.run(self.target) + except Exception as inner_error: + logger.error(f"Failed to send command and failed to recreate wpa socket: {inner_error}") + raise SockCommError(error_message) from error + raise SockCommError("Could not communicate with WPA Supplicant socket.") from error if b"FAIL-BUSY" in data: