diff --git a/supervisor/hwmon.py b/supervisor/hwmon.py index 8e911cff5..6ce1d90bb 100644 --- a/supervisor/hwmon.py +++ b/supervisor/hwmon.py @@ -19,20 +19,25 @@ class HwMonitor(CoreSysAttributes): """Initialize Hardware Monitor object.""" self.coresys: CoreSys = coresys self.context = pyudev.Context() - self.monitor = pyudev.Monitor.from_netlink(self.context) + self.monitor: Optional[pyudev.Monitor] = None self.observer: Optional[pyudev.MonitorObserver] = None async def load(self) -> None: """Start hardware monitor.""" - self.observer = pyudev.MonitorObserver(self.monitor, self._udev_events) - self.observer.start() - - _LOGGER.info("Start Supervisor hardware monitor") + try: + self.monitor = pyudev.Monitor.from_netlink(self.context) + self.observer = pyudev.MonitorObserver(self.monitor, self._udev_events) + except OSError: + _LOGGER.fatal("Not privileged to run udev. Update your installation!") + else: + self.observer.start() + _LOGGER.info("Started Supervisor hardware monitor") async def unload(self) -> None: """Shutdown sessions.""" if self.observer is None: return + self.observer.stop() _LOGGER.info("Stop Supervisor hardware monitor")