Sonos integration "falling back to polling, functionality may be limited." but only on one random speaker

Ah good point. Okay I was not using host networking so I just changed that quickly, and I disabled my custom advertise_addr rule.

The error is still showing, but this time it is automatically reporting the correct server IP instead of the container IP. But for some reason the connection still fails.

OfficeSonos cannot reach [serverIP]:1400, falling back to polling, functionality may be limited, see https://www.home-assistant.io/integrations/sonos/#network-requirements for more details
GarageSonos cannot reach [serverIP]:1400, falling back to polling, functionality may be limited, see https://www.home-assistant.io/integrations/sonos/#network-requirements for more details

My firewall rule is:

LAN IN:
  Accept:
    Protocol: TCP and UDP
    Source IP: sonos device ips on IoT vlan
    Source Port: 1400
    Destination IP: server ip on secure vlan
    Destination Port: 1400
    States: New, Established, Related

:frowning:

That firewall rule is wrong. Remove the source port as that will be random. This specific connection will also always be TCP.

1 Like

Awesome that was it - thanks for the replies!

So to recap:

  • Needed to change my docker networking mode for the HA container to host (this had follow-on effects which required me to update my nginx reverse proxy config and other things, so be mindful of that if you start randomly changing this stuff)
  • Needed to add a firewall rule to allow cross-VLAN connection on port 1400, such that the source is any TCP port on all Sonos devices, and destination is port 1400 on my server

Hope that helps others in this thread!

2 Likes

I experienced this issue. I’m using Home assistant core on an Asahi Linux server.

To resolve, I had to add a firewall rule to allow incoming connections on TCP ports 1400 and 1443.

My server OS uses firewall-cmd, so I added the rules like this:

  • sudo firewall-cmd --zone=public --add-port=1400/tcp --permanent
  • sudo firewall-cmd --zone=public --add-port=1443/tcp --permanent

After reloading the integration, the subscription error has not appeared and the controls are now much more responsive.