HA Network Unreachable, losing connection trough Homekit

Good morning Everyone.

I love the idea of HA, but I can’t figure it out what is wrong with my configuration. I’ve got some devices connected with Homekit trough HA. When I’m home, connected to same Wi-Fi- everything work just fine. If I try to manage my home trough cellular data- sometimes I’m able to, but most times devices connected trough HA are unreachable. I’ve got one camera connected to homekit via official way, and it works fine in the same time. Can somebody help me with that?

My setup is:
Raspberry Pi 4 8gb RAM
HA installed on SSD drive, connected to USB
All connected to router via Ethernet cable

Some logs that should be useful:

OSError: [Errno 101] Network unreachable
2023-03-31 20:01:30.101 ERROR (SyncWorker_5) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:01:33.114 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:01:45.100 ERROR (SyncWorker_0) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:02:00.101 ERROR (SyncWorker_8) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:02:03.119 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:02:15.099 ERROR (SyncWorker_2) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:02:25.313 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:02:25.318 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:02:30.100 ERROR (SyncWorker_6) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:02:33.124 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:02:45.099 ERROR (SyncWorker_1) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:03:00.101 ERROR (SyncWorker_3) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:03:03.130 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:03:15.101 ERROR (SyncWorker_0) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:03:30.101 ERROR (SyncWorker_8) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:03:33.137 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:03:45.099 ERROR (SyncWorker_2) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:04:00.101 ERROR (SyncWorker_7) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:04:03.142 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:04:15.099 ERROR (SyncWorker_3) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:04:25.314 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:04:25.319 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:04:30.101 ERROR (SyncWorker_5) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:04:33.149 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:04:45.099 ERROR (SyncWorker_0) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:05:00.100 ERROR (SyncWorker_8) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:05:03.154 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:05:15.100 ERROR (SyncWorker_6) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:05:30.101 ERROR (SyncWorker_7) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:05:33.159 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:05:45.100 ERROR (SyncWorker_3) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:06:00.101 ERROR (SyncWorker_0) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:06:03.165 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=29 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=29, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 34344)>
2023-03-31 20:06:15.100 ERROR (SyncWorker_9) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:06:25.314 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:06:25.319 ERROR (MainThread) [async_upnp_client.ssdp] Received error: [Errno 101] Network unreachable, transport: <_SelectorDatagramTransport fd=17 read=polling write=<idle, bufsize=0>>, socket: <asyncio.TransportSocket fd=17, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('0.0.0.0', 47976)>
2023-03-31 20:06:30.100 ERROR (SyncWorker_2) [miio.miioprotocol] failed to send msg: [Errno 101] Network unreachable
2023-03-31 20:06:31.631 ERROR (MainThread) [pyatv.protocols.airplay] Failed to set up remote control channel
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/pyatv/protocols/airplay/__init__.py", line 258, in _connect_rc
    await control.start(str(core.config.address), control_port, credentials)
  File "/usr/local/lib/python3.10/site-packages/pyatv/protocols/airplay/remote_control.py", line 55, in start
    self.connection = await http_connect(address, control_port)
  File "/usr/local/lib/python3.10/site-packages/pyatv/support/http.py", line 558, in http_connect
    _, connection = await loop.create_connection(HttpConnection, address, port)
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1076, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1060, in create_connection
    sock = await self._connect_sock(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 969, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 501, in sock_connect
    return await fut
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 509, in _sock_connect
    sock.connect(address)
OSError: [Errno 101] Network unreachable
2023-03-31 20:06:31.636 ERROR (MainThread) [homeassistant.components.apple_tv] Failed to connect
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/apple_tv/__init__.py", line 222, in connect_once
    await self._connect(conf, raise_missing_credentials)
  File "/usr/src/homeassistant/homeassistant/components/apple_tv/__init__.py", line 324, in _connect
    self.atv = await connect(conf, self.hass.loop, session=session)
  File "/usr/local/lib/python3.10/site-packages/pyatv/__init__.py", line 135, in connect
    await atv.connect()
  File "/usr/local/lib/python3.10/site-packages/pyatv/core/facade.py", line 575, in connect
    if await setup_data.connect():
  File "/usr/local/lib/python3.10/site-packages/pyatv/protocols/mrp/__init__.py", line 941, in _connect
    await protocol.start()
  File "/usr/local/lib/python3.10/site-packages/pyatv/protocols/mrp/protocol.py", line 129, in start
    await self.connection.connect()
  File "/usr/local/lib/python3.10/site-packages/pyatv/protocols/mrp/connection.py", line 104, in connect
    await self.loop.create_connection(lambda: self, self.host, self.port)
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1076, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 1060, in create_connection
    sock = await self._connect_sock(
  File "/usr/local/lib/python3.10/asyncio/base_events.py", line 969, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 501, in sock_connect
    return await fut
  File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 509, in _sock_connect
    sock.connect(address)

I’ve reinstalled HA. So far so good.

No, there is still Network Unreachable error in my setup. It goes away when I restart HA, but it is annoying.

Same issue here, running on rpi8gb, installed on ssd and ethernet connected. Running HA in docker and also using a homekit integration. Logs are filled with these errors and every once in a while the rpi crashes. I suspect the HA container is causing this. But I’m not sure how to verify this.