diff --git a/system/hardware/hardwared.py b/system/hardware/hardwared.py index b6de91818e..7429091336 100755 --- a/system/hardware/hardwared.py +++ b/system/hardware/hardwared.py @@ -99,6 +99,7 @@ def touch_thread(end_event): def hw_state_thread(end_event, hw_queue): """Handles non critical hardware state, and sends over queue""" count = 0 + registered_count = 0 prev_hw_state = None modem_version = None @@ -149,6 +150,16 @@ def hw_state_thread(end_event, hw_queue): except queue.Full: pass + if AGNOS and (hw_state.network_info is not None) and (hw_state.network_info.get('state', None) == "REGISTERED"): + registered_count += 1 + else: + registered_count = 0 + + if registered_count > 10: + cloudlog.warning(f"Modem stuck in registered state {hw_state.network_info}, bringing connection back up") + os.system("nmcli conn up esim") + registered_count = 0 + if not modem_configured and HARDWARE.get_modem_version() is not None: cloudlog.warning("configuring modem") HARDWARE.configure_modem()