Corrupted installation- no upgrades possible, plugins don't run

Hi,

It seems my installation is corrupted, and I wonder if there are any tipps how to fix it - I find a lot of articles about this for “unsupported installations”, but I am not aware that mine would fall into that category (?). Here’s my configuration first of all:

Version core-2022.3.1
Installation Type Home Assistant OS
Development false
Supervisor true
Docker true
User root
Virtual Environment false
Python Version 3.9.9
Operating System Family Linux
Operating System Version 5.10.98
CPU Architecture aarch64

This is an install on an ODROID-N2+, though not purchased as a pre-installed machine through Home Assistant, I installed it myself.

The error message I am getting upon trying to upgrade is :
‘HomeAssistantCore.update’ blocked from execution, system is not healthy

And when trying to upgrade Home Assistant OS:

Can’t fetch OTA update from https://github.com/home-assistant/operating-system/releases/download/7.6/haos_odroid-n2-7.6.raucb: Cannot connect to host objects.githubusercontent.com:443 ssl:True [SSLCertVerificationError: (1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1129)’)]

I have reverted to an older working full installation backup, but without luck, same error.

Is there anything I could do without going back to a full re-install?

Many thanks for any hints!

For the HA update, click on the link beside the “not healthy” message to see why it’s complaining.
For the HAOS update, I suspect the N2 clock is not correct.

Thanks!

Regarding the supervisor installation, the only thing I can see is this log entry below /hassio/system:

Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/plugins/multicast.py", line 98, in update
    await self.instance.update(version, image=self.sys_updater.image_multicast)
  File "/usr/src/supervisor/supervisor/utils/__init__.py", line 33, in wrap_api
    return await method(api, *args, **kwargs)
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/supervisor/supervisor/docker/interface.py", line 400, in _update
    self._install(version, image=image, latest=latest)
  File "/usr/src/supervisor/supervisor/docker/interface.py", line 203, in _install
    raise DockerError(
supervisor.exceptions.DockerError: Can't install ghcr.io/home-assistant/aarch64-hassio-multicast:2022.02.0: 500 Server Error for http+docker://localhost/v1.41/images/create?tag=2022.02.0&fromImage=ghcr.io%2Fhome-assistant%2Faarch64-hassio-multicast: Internal Server Error ("Get "https://ghcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/misc/scheduler.py", line 62, in _wrap_task
    await task.coro_callback()
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 108, in wrapper
    raise err
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 106, in wrapper
    return await self._method(*args, **kwargs)
  File "/usr/src/supervisor/supervisor/misc/tasks.py", line 299, in _update_multicast
    await self.sys_plugins.multicast.update()
  File "/usr/src/supervisor/supervisor/plugins/multicast.py", line 100, in update
    raise MulticastUpdateError(
supervisor.exceptions.MulticastUpdateError: Multicast update failed
22-04-11 13:10:50 INFO (MainThread) [supervisor.misc.tasks] Found new Multicast version 2022.02.0, updating
22-04-11 13:10:50 INFO (SyncWorker_2) [supervisor.docker.interface] Updating image ghcr.io/home-assistant/aarch64-hassio-multicast:2021.04.0 to ghcr.io/home-assistant/aarch64-hassio-multicast:2022.02.0
22-04-11 13:10:50 INFO (SyncWorker_2) [supervisor.docker.interface] Downloading docker image ghcr.io/home-assistant/aarch64-hassio-multicast with tag 2022.02.0.
22-04-11 13:17:46 ERROR (SyncWorker_2) [supervisor.docker.interface] Can't install ghcr.io/home-assistant/aarch64-hassio-multicast:2022.02.0: 500 Server Error for http+docker://localhost/v1.41/images/create?tag=2022.02.0&fromImage=ghcr.io%2Fhome-assistant%2Faarch64-hassio-multicast: Internal Server Error ("Get "https://ghcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)")
22-04-11 13:17:46 ERROR (MainThread) [supervisor.plugins.multicast] Multicast update failed
22-04-11 13:37:34 INFO (MainThread) [supervisor.homeassistant.api] Updated Home Assistant API token
22-04-11 13:56:03 INFO (MainThread) [supervisor.jobs] 'Tasks._update_addons' blocked from execution, no host internet connection
22-04-11 13:56:52 INFO (MainThread) [supervisor.updater] Fetching update data from https://version.home-assistant.io/stable.json
22-04-11 13:58:06 INFO (MainThread) [supervisor.resolution.check] Starting system checks with state CoreState.RUNNING

The box definitely has network, but if I run the “update” command again, it takes very long but nothing seems to happen (also no new log entries).

Regarding the system clock, that sounds plausible to interfere with SSL, what is a way to fix and verify this?

I have figured it out.

In short: it was a system time issue in association with the DNS issue described here:
Hassio wrong date and time - Configuration - Home Assistant Community (home-assistant.io)

Although it still is not clear to me:

  • Why does the system time not set properly anymore if there is a DNS problem?
  • What DNS problem is it?
    The machine generally got internet and DNS resolution, but there seemed to have been a problem in association with NTP. I did start to run pi-hole, but all other machines on the network work fine with it.

Very tricky! @koying - thanks for pointing me in the direction of the resolution … SSL being a system time issue brought me into many (desperate) threads about being unable to set the system time, and then the one above pointing out the DNS setting root cause.

Likely because HAOS then cannot get the IP address of the (ntp) server it uses to synchronize the clock, assuming the n2 doesn’t have a battery to keep the clock running when it is reset / rebooted.

That makes sense. Thanks!