NetworkManager Router unable to UDP broadcast between devices

I’m having some trouble configuring a home-built router using NetworkManager. I’m using a linux (NixOS) Raspberry Pi as a host, with NetworkManager for configuration. The aim is to have a declarative setup that shares configuration with the rest of my devices, hence the above rather than OpenWRT or equivalent.

Currently, I have a mostly working setup, detailed as follows:

  • UpLink - 2.5Gb USB RJ45 Adapter - used as a WAN Port
  • bridge-br0 - linux kernel bridge - used to connect the below:
    • wlan0 - internal wireless card - providing a wireless access point
    • end0 - internal Rj45 port - LAN port to my network switch

The configuration for this is as follows: (this is nix code but is similar to json, and is parsed into the correct nmconnection/INI format)

  networkmanager = {
    #dns = "none";
    ensureProfiles.profiles = lib.mkMerge [
      {
        # Bridge to connect wired Downstream and WiFi
        br0 = {
          connection = {
            id = "bridge-br0";
            type = "bridge";
            autoconnect = "true";
            autoconnect-priority = "2";
            # metered = "false";
            autoconnect-slaves = "1";
            mdns = "yes";
            interface-name = "br0";
          };
          ipv4 = {
            method = "shared";
            address = "192.168.255.1/24";
          };
          bridge = {};
        };
      }
      (lib.mkIf cfg.downstreamWiFi.enable {# WiFi Access Point
        Unknown = {
          connection = {
            id = "Unknown";
            type = "wifi";
            autoconnect = "true";
            autoconnect-priority = "1";
            metered = "false";
            controller = "br0";
            interface-name = cfg.downstreamWiFi.interface;
            mdns = "yes";
            port-type = "bridge";
          };
          wifi = {
            mode = "ap";
            ssid = cfg.downstreamWiFi.ssid;
            hidden = "false";
            band = "a";
            channel = "40";
            channel-width = "80";
            ap-isolation = "false";
          };
          wifi-security = {
            key-mgmt = "wpa-psk";
            psk = cfg.downstreamWiFi.password;
            group = "ccmp";
            pairwise = "ccmp";
            proto = "rsn";
          };
          bridge-port = {};
        };
      })
      (lib.mkIf cfg.downstreamWired.enable {
        # Inbuilt Ethernet Port
        end0 = {
          connection = {
            id = "Downstream";
            type = "ethernet";
            mdns = "yes";
            autoconnect = "true";
            autoconnect-priority = "2";
            controller = "br0";
            interface-name = cfg.downstreamWired.interface;
            port-type = "bridge";
          };
          bridge-port = {};
        };
      })
      (lib.mkIf cfg.uplink.enable {
        # Uplink - 2.5Gb Sabrent USB Ethernet Adapter
        UpLink = {
          connection = {
            id = "UpLink";
            type = "ethernet";
            mdns = "no";
            autoconnect = "true";
            autoconnect-priority = "1";
            interface-name = cfg.uplink.interface;
          };
          ipv4 = {
            method = "auto";
          };
        };
      })
    ];
  };

The problem I’m having is that devices connected to the Wireless access point don’t seem to be able to perform UDP broadcasts to each other. In particular, my Android phone and Tablet are unable to see each other over KDE connect, which is one of the main reasons I’m trying to set this up, as my University Accomodation also has broadcasts disabled.

I’ve used a similar setup before that worked fine, where I didn’t have the bridge or LAN port, instead just the WAN and wireless, so I suspect I’m missing some configuration on the bridge to make this work? Is anyone familiar enough with NetworkManager to be able to help configure it to be able to reflect broadcasts to all devices connected to the bridge, in particular between wireless devices?

If it helps, I’m not sure if it’s just broadcasts that are disabled, even adding the IPs of the devices manually doesn’t seem to allow them to communicate, even though AP isolation is disabled (for wireless, again, the bridge could be messing with this?). I’m happy to try alternate layout suggestions for configuring this as long as I can communicate between wired and wireless devices within the subnet.

Thank you!