diff --git a/pyproject.toml b/pyproject.toml
index 6dfcfa777c6f606f9a80917d7f5907a786d1bfed..267efa741b7ad4f4bd7c4ba31438a648e5bae908 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [project]
 name = "mediactl"
-version = "0.1.0"
+version = "0.1.1"
 description = "Add your description here"
 dependencies = [
     "fastapi[standard]>=0.114.2",
diff --git a/src/mediactl/devices/ahm16.py b/src/mediactl/devices/ahm16.py
index d55aa618616a86c25866f486c18878d2907bb565..14f03cae540424cae4f657c0ac620377ae5a6096 100644
--- a/src/mediactl/devices/ahm16.py
+++ b/src/mediactl/devices/ahm16.py
@@ -1,5 +1,6 @@
 import asyncio
 import aioping
+import errno
 from datetime import datetime
 from typing import Union, List
 from result import Ok, Err, Result, is_ok, is_err  # noqa: F401
@@ -96,6 +97,7 @@ class PowerState(mediactl.EnumState):
     on = "on"
     off = "off"
     unknown = "unknown"
+    disconnected = "disconnected"
 
     def is_on(self) -> bool:
         return self in [PowerState.on]
@@ -103,6 +105,9 @@ class PowerState(mediactl.EnumState):
     def is_off(self) -> bool:
         return not self.is_on()
 
+    def is_disconnected(self) -> bool:
+        return self in [PowerState.disconnected]
+
 
 class Channel(mediactl.WithLogger):
     def __init__(self, number: int, logger=None):
@@ -233,6 +238,17 @@ class Ahm16(mediactl.WithLogger):
                 else str(self.status["last-seen"])
             )
             self.log_error(f"AHM could not_be_reached. Last seen: {last}")
+        except OSError as e:
+            if e.errno == errno.ENETUNREACH:
+               self.status["power"] = PowerState.disconnected 
+               last = "never" if self.status["last-seen"] is None else str(self.status["last-seen"])
+                self.log_error(f"AHM Dante Network is down or AHM unreachable {e.errno}: {e.strerror}. Last seen: {last}")
+            else:
+                # Othernetwork‐level failure (no route, interface down, etc.)
+                self.status["power"] = PowerState.unknown
+                last = "never" if self.status["last-seen"] is None else str(self.status["last-seen"])
+                self.log_error(f"AHM ping OSError {e.errno}: {e.strerror}. Last seen: {last}")
+
 
     async def get_status(self, name=False):
         await self.ping()
diff --git a/static/style.css b/static/style.css
index d1968331726de355c9bfa64e16279d78cdaeb500..a733bc40f7a277e4e31f69c799538cc75bb57890 100644
--- a/static/style.css
+++ b/static/style.css
@@ -34,6 +34,15 @@ main {
 	display: none;
 }
 
+@keyframes blink-red {
+  0%, 45% {
+    background-color: var(--color-red);
+  }
+  60%, 100% {
+    background-color: transparent;
+  }
+}
+
 header {
 	width: 100%;
 	border-bottom: 1px solid white;
@@ -90,6 +99,10 @@ header {
 	.warmup .status_text { color: var(--color-orange); }
 	.off .led { background-color: var(--color-red); }
 	.off .status_text { color: var(--color-red); }
+	.disconnected .led {
+	  background-color: transparent;
+	  animation: blink-red 1s infinite;
+	}
 }
 
 main.disconnected{