|
|
|
@ -103,8 +103,8 @@ def hw_state_thread(end_event, hw_queue): |
|
|
|
|
|
|
|
|
|
|
|
modem_version = None |
|
|
|
modem_version = None |
|
|
|
modem_configured = False |
|
|
|
modem_configured = False |
|
|
|
modem_restarted = False |
|
|
|
|
|
|
|
modem_missing_count = 0 |
|
|
|
modem_missing_count = 0 |
|
|
|
|
|
|
|
modem_restart_count = 0 |
|
|
|
|
|
|
|
|
|
|
|
while not end_event.is_set(): |
|
|
|
while not end_event.is_set(): |
|
|
|
# these are expensive calls. update every 10s |
|
|
|
# these are expensive calls. update every 10s |
|
|
|
@ -121,14 +121,16 @@ def hw_state_thread(end_event, hw_queue): |
|
|
|
|
|
|
|
|
|
|
|
if modem_version is not None: |
|
|
|
if modem_version is not None: |
|
|
|
cloudlog.event("modem version", version=modem_version) |
|
|
|
cloudlog.event("modem version", version=modem_version) |
|
|
|
else: |
|
|
|
|
|
|
|
if not modem_restarted: |
|
|
|
if AGNOS and modem_restart_count < 3 and HARDWARE.get_modem_version() is None: |
|
|
|
# TODO: we may be able to remove this with a MM update |
|
|
|
# TODO: we may be able to remove this with a MM update |
|
|
|
# ModemManager's probing on startup can fail |
|
|
|
# ModemManager's probing on startup can fail |
|
|
|
# rarely, restart the service to probe again. |
|
|
|
# rarely, restart the service to probe again. |
|
|
|
|
|
|
|
# Also, AT commands sometimes timeout resulting in ModemManager not |
|
|
|
|
|
|
|
# trying to use this modem anymore. |
|
|
|
modem_missing_count += 1 |
|
|
|
modem_missing_count += 1 |
|
|
|
if modem_missing_count > 3: |
|
|
|
if (modem_missing_count % 4) == 0: |
|
|
|
modem_restarted = True |
|
|
|
modem_restart_count += 1 |
|
|
|
cloudlog.event("restarting ModemManager") |
|
|
|
cloudlog.event("restarting ModemManager") |
|
|
|
os.system("sudo systemctl restart --no-block ModemManager") |
|
|
|
os.system("sudo systemctl restart --no-block ModemManager") |
|
|
|
|
|
|
|
|
|
|
|
|