diff --git a/lib/solaar/listener.py b/lib/solaar/listener.py index b2cab707..74d2cd89 100644 --- a/lib/solaar/listener.py +++ b/lib/solaar/listener.py @@ -314,10 +314,13 @@ def ping_all(resuming=False): for dev in listener_thread.receiver: if resuming: dev._active = None # ensure that settings are pushed - if dev.ping(): - dev.changed(active=True, push=True) - listener_thread._status_changed(dev) count -= 1 + try: # sometimes the device is not set up already, it should come back later + if dev.ping(): + dev.changed(active=True, push=True) + listener_thread._status_changed(dev) + except exceptions.NoSuchDevice: + logger.debug("can't ping device on resume: %s", dev) if not count: break diff --git a/lib/solaar/ui/__init__.py b/lib/solaar/ui/__init__.py index c97104cc..d3cc8136 100644 --- a/lib/solaar/ui/__init__.py +++ b/lib/solaar/ui/__init__.py @@ -122,7 +122,9 @@ def run_loop( def _status_changed(device, alert, reason, refresh=False): - assert device is not None + if device is None: + logger.debug("status changed on nil device: %s (%s) %s", device, alert, reason) + return logger.debug("status changed: %s (%s) %s", device, alert, reason) if alert is None: alert = Alert.NONE