Hit-or-miss Wireguard connectivity on a public WiFi ... can MTU size play a role?

I am experiencing hit-or-miss connectivity through wireguard when connected to a specific, unsecured, public WiFi from iOS devices. Meaning, I first connect to the public WiFi at which point, wireless works fine, websites load, etc. but when I subsequently initiate a wireguard connection, most of the time, the traffic flows stops due to a connectivity issue. If I fiddle with toggling the WG connection off then on several times, it eventually works.

This is true for:

  1. my OW home router running wireguard
  2. a totally separate OW router running wireugard
  3. a commercial VPN provider also running wireguard

The fact that the the issue is present on all VPN providers (my own and a commercial VPN), is suggestive that something on the public WiFi to which I am connected is misconfigured or their hardware is just flaky, etc.

In googling, some suggestions about lowering the MTU value to improve stability are mentioned. I tried lowering the MTU size on the interface to 1440 and then again to 1280 but neither made a difference. Wondering if more experienced people here have some suggestions or thoughts.

For reference, relevant bit of /etc/config/network:

config interface 'wg0'
  option proto 'wireguard'
  option listen_port '4500'
  list addresses ''
  option private_key 'xxx'
  option delegate '0'
  option mtu '1440'


For reference, here is what I see in the iOS wireguard logs:

wireguard logs
[NET] peer(UDe2…Jcno) - Retrying handshake because we stopped hearing
back after 15 seconds
[NET] peer(UDe2…Jcno) - Sending handshake initiation
[NET] peer(UDe2…Jcno) - Handshake did not complete after 5 seconds,
retrying (try 2)
[NET] peer(UDe2…Jcno) - Sending handshake initiation
[NET] Network change detected with unsatisfied route and interface
order [en0, utun2, pdp_ip0]
[NET] DNS64: mapped 75.xxx.xxx.xxx to itself.
[NET] UAPI: Transition to peer configuration
[NET] peer(UDe2…Jcno) - UAPI: Updating endpoint
[NET] Routine: receive incoming IPv4 - stopped
[NET] Routine: receive incoming IPv6 - stopped
[NET] Routine: receive incoming IPv4 - started
[NET] Routine: receive incoming IPv6 - started
[NET] UDP bind has been updated
[NET] peer(UDe2…Jcno) - Sending keepalive packet
NET] peer(UDe2…Jcno) - Failed to send data packet write udp4>75.xxx.xxx.xxx:51820: sendto: network is unreachable