Mesh11sd: Internet (not connection) drops in 4.0.1

Hi guys (especially @bluewavenet :slight_smile:)

I have six ZyXEL WSM20 stattered around my flat each runnig OpenWrt 23.05.2 and mesh11sd 4.0.1, all packages fully updated via LuCi.

Ever since the version upgrade from 3.x.x to 4.0.1, I am experiencing connection drops every few hours. Only the Internet connection drops on the connected devices, not the WiFi connection. When I restart the node that the device without Internet is connected to, it works again (this is why I'm suspecting the mesh to be the issue).

Also, the fast roaming between different nodes doesn't work (needs reconnecting the WiFi to attach to the (then, after walking around) nearest node, but that's a separate issue.

Do you guys have any idea how to fix that? Thanks a lot!

Here is the output of mesh11sd status from the "base" node (the one connected to the router):

  "setup":{
    "version":"4.0.1",
    "enabled":"1",
    "procd_status":"running",
    "portal_detect":"1",
    "portal_detect_threshold":"0",
    "portal_channel":"default",
    "channel_tracking_checkinterval":"30",
    "mesh_basename":"m-11s-",
    "auto_config":"0",
    "auto_mesh_network":"lan",
    "auto_mesh_band":"2g40",
    "auto_mesh_id":"92d490daf46cfe534c56ddd669297e",
    "mesh_gate_enable":"1",
    "mesh_leechmode_enable":"0",
    "mesh_gate_encryption":"0",
    "txpower":"20",
    "mesh_path_cost":"10",
    "mesh_path_stabilisation":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "ssid_suffix_enable":"0",
    "debuglevel":"1"
  },
  "interfaces":{
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"16",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"2",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-65",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"1",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"92d490daf46cfe534c56ddd669297e",
      "device":"radio0",
      "channel":"11",
      "tx_packets":"10233877",
      "tx_bytes":"11563903322",
      "rx_packets":"4552380",
      "rx_bytes":"2035439865",
      "this_node":"54:83:3a:79:ac:48",
      "active_peers":"5",
      "peers":{
        "56:83:3a:79:ac:3c":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"3",
          "path_change_count":"11",
          "metric":"74"
        },
        "d6:1a:d1:12:af:20":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"3",
          "path_change_count":"1",
          "metric":"71"
        },
        "56:83:3a:79:bd:58":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"2",
          "path_change_count":"5",
          "metric":"45"
        },
        "d6:1a:d1:12:af:1c":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"2",
          "path_change_count":"19",
          "metric":"45"
        },
        "56:83:3a:79:ac:78":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"1",
          "path_change_count":"1",
          "metric":"27"
        }
      },
      "active_stations":"19",
      "stations":{
        "50:41:1c:6e:af:c8":{
          "proxy_node":"54:83:3a:79:ac:48"
        },
        "7c:bb:8a:ae:00:c6":{
          "proxy_node":"54:83:3a:79:ac:48"
        },
        "e4:5f:01:2b:85:f6":{
          "proxy_node":"56:83:3a:79:ac:48"
        },
        "00:1b:21:b0:0d:86":{
          "proxy_node":"56:83:3a:79:ac:48"
        },
        "60:f2:62:0e:d6:66":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "f0:b3:ec:07:6a:cc":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "2c:cf:67:06:52:b2":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "3c:2a:f4:41:21:4d":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "ec:0d:51:00:3c:65":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "04:0e:3c:5e:1a:d0":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "78:28:ca:81:a3:7c":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "d6:eb:69:6e:1c:ac":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "a4:e5:7c:c0:83:a4":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "34:7e:5c:34:61:b6":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "78:28:ca:81:a3:66":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "60:3e:5f:38:56:60":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "4c:b9:ea:07:27:ac":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "34:7e:5c:34:5f:64":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "48:a6:b8:bd:57:aa":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        }
      }
    }
  }
}

and the same for the node in my office that sees most of the action (most devices/traffic):

  "setup":{
    "version":"4.0.1",
    "enabled":"1",
    "procd_status":"running",
    "portal_detect":"1",
    "portal_detect_threshold":"0",
    "portal_channel":"default",
    "channel_tracking_checkinterval":"30",
    "mesh_basename":"m-11s-",
    "auto_config":"0",
    "auto_mesh_network":"lan",
    "auto_mesh_band":"2g40",
    "auto_mesh_id":"92d490daf46cfe534c56ddd669297e",
    "mesh_gate_enable":"1",
    "mesh_leechmode_enable":"0",
    "mesh_gate_encryption":"0",
    "txpower":"23",
    "mesh_path_cost":"10",
    "mesh_path_stabilisation":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "ssid_suffix_enable":"0",
    "debuglevel":"1"
  },
  "interfaces":{
    "m-11s-1":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"16",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"2",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-65",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"1",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"92d490daf46cfe534c56ddd669297e",
      "device":"radio1",
      "channel":"48",
      "tx_packets":"1084",
      "tx_bytes":"187832",
      "rx_packets":"0",
      "rx_bytes":"0",
      "this_node":"54:83:3a:79:ac:78",
      "active_peers":"0",
      "peers":{
      },
      "active_stations":"1",
      "stations":{
        "60:f2:62:0e:d6:66":{
          "proxy_node":"54:83:3a:79:ac:78"
        }
      }
    }
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"16",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"2",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-65",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"1",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"92d490daf46cfe534c56ddd669297e",
      "device":"radio0",
      "channel":"11",
      "tx_packets":"8145",
      "tx_bytes":"1650907",
      "rx_packets":"14611",
      "rx_bytes":"14577724",
      "this_node":"54:83:3a:79:ac:78",
      "active_peers":"5",
      "peers":{
        "56:83:3a:79:ac:3c":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"2",
          "path_change_count":"4",
          "metric":"44"
        },
        "d6:1a:d1:12:af:1c":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"1",
          "path_change_count":"1",
          "metric":"16"
        },
        "56:83:3a:79:ac:48":{
          "next_hop":"56:83:3a:79:ac:48",
          "hop_count":"1",
          "path_change_count":"1",
          "metric":"23"
        },
        "56:83:3a:79:bd:58":{
          "next_hop":"56:83:3a:79:ac:48",
          "hop_count":"2",
          "path_change_count":"25",
          "metric":"76"
        },
        "d6:1a:d1:12:af:20":{
          "next_hop":"56:83:3a:79:ac:48",
          "hop_count":"3",
          "path_change_count":"23",
          "metric":"104"
        }
      },
      "active_stations":"16",
      "stations":{
        "60:f2:62:0e:d6:66":{
          "proxy_node":"54:83:3a:79:ac:78"
        },
        "60:f2:62:0e:d6:66":{
          "proxy_node":"54:83:3a:79:ac:78"
        },
        "60:f2:62:0e:d6:66":{
          "proxy_node":"54:83:3a:79:ac:78"
        },
        "d8:07:b6:e3:1c:32":{
          "proxy_node":"56:83:3a:79:ac:48"
        },
        "d6:eb:69:6e:1c:ac":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "04:0e:3c:5e:1a:d0":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "ec:0d:51:00:3c:65":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "a4:e5:7c:c0:83:a4":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "4c:b9:ea:07:27:ac":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "bc:24:11:13:9d:84":{
          "proxy_node":"56:83:3a:79:ac:48"
        },
        "e4:5f:01:2b:85:f6":{
          "proxy_node":"56:83:3a:79:ac:48"
        },
        "34:7e:5c:34:5f:64":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "48:a6:b8:bd:57:aa":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "34:7e:5c:34:61:b6":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "78:28:ca:81:a3:7c":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
        "00:1b:21:b0:0d:86":{
          "proxy_node":"56:83:3a:79:ac:48"
        }
        "78:28:ca:81:a3:66":{
          "proxy_node":"56:83:3a:79:bd:58"
        },
      }
    }
  }
}```

You have chosen to disable auto_config, but have then made numerous bad configuration errors. I am quite surprised it works at all! This "manual configuration" mode of operation is designed for advanced use only for those that are very experienced with mesh networks.

Two major config problems:

  1. You have 2 mesh interfaces. Unless you really know what you are doing, you should only have 1. This will make the mesh paths change rapidly depending on numerous factors, in turn causing layer 3 errors resulting in dropped packets and retries. You must manually configure the nodes to minimise this.

  2. Your mesh nodes seem for the most part, within each others coverage areas, leading to multipath jitter which will in turn make the mesh paths change rapidly. This causes layer 3 errors, as in point 1 above resulting in dropped packets and retries. You must manually configure the nodes to minimise this.

On your "base" meshnode, please run:

service mesh11sd stop
uci revert wireless

Then show the outputs of:
uci show network

and
uci show wireless

2 Likes

Thanks for the reply!

I disabled that as I had one problem: every node would add something to the end of the shared SSID (like SSID-1, SSID-2, etc.), so auto connect wouldn't work on all the devices anymore (even though the passwords stayed the same).

I'm happy to start fresh and "reset" it though if that can be disabled without auto config? I appreciate any pointers.

  1. Which one should I turn off and how? Again, I appreciate the help and will do it right away.
  2. Yes they're all within like 2-5m from one another (one in each room). If I select auto config, will this also take care of these layer 3 errors?

Here is the output as requested:
uci show network

network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.packet_steering='1'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='lan1' 'lan2' 'lan3' 'wan'
network.@device[0].ipv6='0'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.4'
network.lan.netmask='255.255.255.0'
network.lan.gateway='192.168.1.1'
network.lan.dns='192.168.1.16'

uci show wireless

wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.path='1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
wireless.radio0.channel='11'
wireless.radio0.band='2g'
wireless.radio0.htmode='HE40'
wireless.radio0.cell_density='0'
wireless.radio0.country='DE'
wireless.radio0.disabled='0'
wireless.radio0.noscan='1'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0+1'
wireless.radio1.channel='48'
wireless.radio1.band='5g'
wireless.radio1.htmode='HE80'
wireless.radio1.cell_density='0'
wireless.radio1.country='DE'
wireless.radio1.disabled='0'
wireless.wifinet2=wifi-iface
wireless.wifinet2.device='radio1'
wireless.wifinet2.mode='ap'
wireless.wifinet2.ssid='CF-WiFi-HOME'
wireless.wifinet2.encryption='sae-mixed'
wireless.wifinet2.key='*gWz89JPHYazPk!F3kCZYbZ.JZuwL9uR'
wireless.wifinet2.network='lan'
wireless.wifinet2.ieee80211r='1'
wireless.wifinet2.mobility_domain='12ab'
wireless.wifinet2.ft_over_ds='0'
wireless.wifinet2.disabled='0'
wireless.wifinet3=wifi-iface
wireless.wifinet3.device='radio0'
wireless.wifinet3.mode='ap'
wireless.wifinet3.ssid='CF-WiFi-HOME-2.4G'
wireless.wifinet3.encryption='sae-mixed'
wireless.wifinet3.key='*gWz89JPHYazPk!F3kCZYbZ.JZuwL9uR'
wireless.wifinet3.ieee80211r='1'
wireless.wifinet3.mobility_domain='12ab'
wireless.wifinet3.ft_over_ds='0'
wireless.wifinet3.network='lan'
wireless.wifinet3.disabled='0'
wireless.m11s0=wifi-iface
wireless.m11s0.device='radio0'
wireless.m11s0.mode='mesh'
wireless.m11s0.encryption='sae'
wireless.m11s0.mesh_id='92d490daf46cfe534c56ddd669297e'
wireless.m11s0.key='78c8068012f8481fec118451e1041b3751801a24ab3e222643a0a6a4424b82a1'
wireless.m11s0.network='lan'
wireless.m11s0.ifname='m-11s-0'
wireless.m11s0.mesh_rssi_threshold='-65'
wireless.m11s0.disabled='0'
wireless.m11s0.macaddr='56:83:3a:79:ac:48'
wireless.m11s1=wifi-iface
wireless.m11s1.device='radio1'
wireless.m11s1.mode='mesh'
wireless.m11s1.encryption='sae'
wireless.m11s1.mesh_id='92d490daf46cfe534c56ddd669297e'
wireless.m11s1.key='78c8068012f8481fec118451e1041b3751801a24ab3e222643a0a6a4424b82a1'
wireless.m11s1.network='lan'
wireless.m11s1.ifname='m-11s-1'
wireless.m11s1.mesh_rssi_threshold='-65'
wireless.m11s1.disabled='1'
wireless.m11s1.macaddr='56:83:3a:79:ac:48'

You do not have anything special in your basic config that would require "manual config".

I would suggest stating from scratch using the "Rapid Deployment" method, thus keeping it very simple.

First a bit of reading for you:
https://openwrt.org/docs/guide-user/network/wifi/mesh/rapiddeployment

As my physics teacher used to say "Read and inwardly digest" :wink:

Then we can review your requirements from the configs you just provided, before proceding...
(we can also go up to the latest stable release at the same time)

1 Like

OK thank you, I will set them up again according to the guide.

One question: is 'mywificode' really "for connecting user devices to the mesh gates", so the WiFi password that I will use later to connect my devices to the network? What if I need more than one SSID?

EDIT: I also read this and I'm still unsure about the password ("desired access code, eg "mysecretaccesscode") as it mentions setting the SSID the "normal OpenWrt way, using either the uci utility or the Luci Web UI". Also I'd set the mesh_gate_encryption='2' for compatibility if it was for all devices but leave it at 3 as I the guide if it's only between mesh nodes.
And regarding the ipv4 gateway IP: is that the IP of the node (where I can SSH into it or open the LuCi web interface) or something different?

I will use the mesh in use case 2 (As a mesh extension of an existing local area network with a link to the existing lan connected to the lan port of one of the nodes.) and currently I have just one bridged interface in OpenWrt where all ethernet ports act the same. Is it possible to set this up with the first boot scripts?

Note: You will build just one single flash image to go on all your meshnodes. You do not need to configure each one separately.

Yes. Note there are 2 unrelated keys/passwords, one for users to connect to the gates (access points), and one for the meshnodes to connect to each other. Users never need to know or even use the mesh key.

This is the type of encryption that the gate/access point uses for user access, and has nothing to do with mesh backhaul encryption.

It can be set to:

  • 0 (none)
  • 1 (sae, aka wpa3)
  • 2 (sae-mixed, aka wpa2/wpa3)
  • 3 (psk2, aka wpa2)

Setting to "3" is probably best for compatibility, but up to you.

This is the default "base" value, exactly the same as the default OpenWrt ipv4 setting, ie 192.168.1.1. It is overridden by dhcpv4 from your router, in your case (case 2). You will use mesh11sd connect command on any node to ssh into any of the others.
In case 2, you will need to find an address of one of the nodes. There are various ways to do this:

  1. look at your router's ip neigh table to get one meshnode ipv6 link local address or ipv4 address
  2. Look at the router's dhcpv4 database to get an ipv4 address
  3. Multicast ipv6 ping-all-routers from a Linux workstation.

These are all very simple to do, I can show you how if you get stuck.

You do not need to set up anything to do with bridging, auto_configure does it for you.

You do need to set your base ap ssid and turn off ssid suffix, as well as add your 802.11r config, if that is what you want.

The " Script to run on first boot (uci-defaults)" should be as in the document, but add your ssid suffix disable and 802.11r stuff.

I will look through your previously posted uci show outputs and make a list for you.....

1 Like

As follows, substituting "MyMeshID", "mywificode" and "myrootpassword" as appropriate. Also setting mesh_gate_encryption to the value of your choice. Leave the lan.ipaddr setting in case you ever connect up in "case 1" mode.

uci set mesh11sd.setup.auto_config='1'
uci set mesh11sd.setup.auto_mesh_id='MyMeshID'
uci set mesh11sd.setup.mesh_gate_encryption='3'
uci set mesh11sd.setup.mesh_gate_key='mywificode'
uci set mesh11sd.setup.ssid_suffix_enable='0'
uci commit mesh11sd

uci set network.lan.ipaddr='192.168.9.1'
uci commit network

uci set wireless.radio0.country='DE'
uci set wireless.radio0.channel='11'
uci set wireless.radio1.country='DE'
uci set wireless.default_radio0.ssid='CF-WiFi-HOME-2.4G'
uci set wireless.default_radio0.ieee80211r='1'
uci set wireless.default_radio0.mobility_domain='12ab'
uci set wireless.default_radio1.ssid='CF-WiFi-HOME'
uci set wireless.default_radio1.ieee80211r='1'
uci set wireless.default_radio1.mobility_domain='12ab'
uci commit wireless

rootpassword="myrootpassword"
/bin/passwd root << EOF
$rootpassword
$rootpassword
EOF

I think that should do it.... Except, do you need wpad-mbedtls for 802..11r? (the full version) I'm not sure.

1 Like

Thank you.

I did exactly what was in the guide and what you posted above (expect for 2 instead of 3 for PSA/PSK) and I ended up with 12 different SSIDs again. So far, I was only able to connect to the one directly attached to my router (the "base" one) via WiFi, but I can get to the others via IP once connected to the base one's WiFi (edited). I used the same image to flash all the nodes via LuCi.

EDIT: I think something like uci set mesh11sd.setup.ssid_suffix_enable='0' is missing in the first block of the script to run on first boot. May I just run service mesh11sd stop, the line above (if it's correct?) and then service mesh11sd start on each node when logged in via SSH or do I need to reflash (with updated firmware/skript)?

Here is the output of mesh11sd status from the "base" node:

  "setup":{
    "version":"4.0.1",
    "enabled":"1",
    "procd_status":"running",
    "portal_detect":"1",
    "portal_detect_threshold":"0",
    "portal_channel":"default",
    "channel_tracking_checkinterval":"30",
    "mesh_basename":"m-11s-",
    "auto_config":"1",
    "auto_mesh_network":"lan",
    "auto_mesh_band":"2g40",
    "auto_mesh_id":"1459903d4802e2ef06b29aef8abf21",
    "mesh_gate_enable":"1",
    "mesh_leechmode_enable":"0",
    "mesh_gate_encryption":"2",
    "txpower":"20",
    "mesh_path_cost":"10",
    "mesh_path_stabilisation":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "ssid_suffix_enable":"1",
    "debuglevel":"1"
  },
  "interfaces":{
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"16",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"2",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-65",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"1",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"1459903d4802e2ef06b29aef8abf21",
      "device":"radio0",
      "channel":"11",
      "tx_packets":"11899",
      "tx_bytes":"1519027",
      "rx_packets":"17388",
      "rx_bytes":"1645485",
      "this_node":"54:83:3a:79:ac:48",
      "active_peers":"5",
      "peers":{
        "56:83:3a:79:ac:3c":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"4",
          "path_change_count":"3",
          "metric":"146"
        },
        "d6:1a:d1:12:af:20":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"3",
          "path_change_count":"5",
          "metric":"148"
        },
        "56:83:3a:79:bd:58":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"3",
          "path_change_count":"1",
          "metric":"87"
        },
        "d6:1a:d1:12:af:1c":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"1",
          "path_change_count":"1",
          "metric":"19"
        },
        "56:83:3a:79:ac:78":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"2",
          "path_change_count":"3",
          "metric":"39"
        }
      },
      "active_stations":"4",
      "stations":{
        "60:f2:62:0e:d6:66":{
          "proxy_node":"54:83:3a:79:ac:48"
        },
        "2c:cf:67:06:52:b2":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "3c:2a:f4:41:21:4d":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "f0:b3:ec:07:6a:cc":{
          "proxy_node":"56:83:3a:79:ac:78"
        }
      }
    }
  }
}

@cf4
In my post:

But you have in the status output:

So yes, it looks like you missed it out.

Did you also include wpad-mbedtls instead of wpad-mesh-mbedtls? I think you need to if you want 802.11r support - not sure, but it would nod do any harm to include it.

In which case it is probably better to build the image again and reflash again.

Regardless, the mesh seems to be working, but you do have "path_change_count" greater than 1 reported for some nodes.

Before reflashing again, it would be worth looking at the multi path issues most likely caused by the nodes being well within each other's coverage areas (aka too close together), so we can investigate a little closer to see what changes we need to make.

Here, node 56:83:3a:79:ac:3c is 4 hops away with a current path change count of 3.

  • Is the location of this node really 4 hops away?

  • Can you draw a diagram of the layout?

Most likely, we can set some nodes as "leech nodes" and maybe make the mesh_rssid_threshold closer to 0 and reduce the transmit power.

Perhaps I'm missing something but I think cf4 was suggesting that you forgot to put

uci set mesh11sd.setup.ssid_suffix_enable='0'

in your 802.11s Rapid Deployment Guide in the "Script to run on first boot (uci-defaults)" section.

Thanks for checking and following, but yes you are missing something. The default is having the ssid suffix enabled. If you are using the mesh backhaul, for example, to provide a community network, it is important to identify each mesh gate uniquely. The document reflects this by not having an entry in uci-defaults, thus allowing the default to be the active option.

In a domestic situation it is arguable which is best, unique ssids or a single one.

@cf4 wants a single one with 802.11r support, so we need to switch off the suffix.
See my previous post in this thread where I had:

Alright here is what I did:
I included uci set mesh11sd.setup.ssid_suffix_enable='0' and swapped wpad-mbedtls for wpad-mesh-mbedtls, then reflashed all six nodes with the new firmware.

I also drew this nice map of my flat. Some nodes are really close together... my wife wouldn't mind getting rid of some if necessary. Red is a regular node, green is the one hooked up to the internet.


Not sure about the hops, I'm guessing every node could reach every node directly. How do I set the leech node mode?

@thomascrisan no @bluewavenet was correct and had it in, I just started copying from the second paragraph as I missed that line in the first one. :slight_smile:

And here is the mesh11sd status again for the main node:

{
  "setup":{
    "version":"4.0.1",
    "enabled":"1",
    "procd_status":"running",
    "portal_detect":"1",
    "portal_detect_threshold":"0",
    "portal_channel":"default",
    "channel_tracking_checkinterval":"30",
    "mesh_basename":"m-11s-",
    "auto_config":"1",
    "auto_mesh_network":"lan",
    "auto_mesh_band":"2g40",
    "auto_mesh_id":"1459903d4802e2ef06b29aef8abf21",
    "mesh_gate_enable":"1",
    "mesh_leechmode_enable":"0",
    "mesh_gate_encryption":"2",
    "txpower":"20",
    "mesh_path_cost":"10",
    "mesh_path_stabilisation":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "ssid_suffix_enable":"0",
    "debuglevel":"1"
  },
  "interfaces":{
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"16",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"2",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-65",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"1",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"1459903d4802e2ef06b29aef8abf21",
      "device":"radio0",
      "channel":"11",
      "tx_packets":"254931",
      "tx_bytes":"79244769",
      "rx_packets":"219719",
      "rx_bytes":"23524648",
      "this_node":"54:83:3a:79:ac:48",
      "active_peers":"5",
      "peers":{
        "56:83:3a:79:ac:3c":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"2",
          "path_change_count":"104",
          "metric":"71"
        },
        "56:83:3a:79:ac:78":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"1",
          "path_change_count":"15",
          "metric":"29"
        },
        "d6:1a:d1:12:af:20":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"2",
          "path_change_count":"125",
          "metric":"72"
        },
        "56:83:3a:79:bd:58":{
          "next_hop":"56:83:3a:79:ac:78",
          "hop_count":"2",
          "path_change_count":"214",
          "metric":"63"
        },
        "d6:1a:d1:12:af:1c":{
          "next_hop":"d6:1a:d1:12:af:1c",
          "hop_count":"1",
          "path_change_count":"21",
          "metric":"36"
        }
      },
      "active_stations":"12",
      "stations":{
        "60:f2:62:0e:d6:66":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "3c:2a:f4:41:21:4d":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "04:0e:3c:5e:1a:d0":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "f0:b3:ec:07:6a:cc":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "2c:cf:67:06:52:b2":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "48:a6:b8:bd:57:aa":{
          "proxy_node":"56:83:3a:79:ac:78"
        },
        "4c:b9:ea:07:27:ac":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "34:7e:5c:34:61:b6":{
          "proxy_node":"d6:1a:d1:12:af:20"
        },
        "34:7e:5c:34:5f:64":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "78:28:ca:81:a3:7c":{
          "proxy_node":"d6:1a:d1:12:af:20"
        },
        "78:28:ca:81:a3:66":{
          "proxy_node":"d6:1a:d1:12:af:1c"
        },
        "a4:e5:7c:c0:83:a4":{
          "proxy_node":"d6:1a:d1:12:af:20"
        }
      }
    }
  }
}

Very good diagram, but we need to identify the nodes.

Starting at the bottom, the green dot will be:

Going up in the diagram, the red dots would be nodes 1, 2, 3, 4 and 5.

Please list their mesh mac addresses from the status output, showing these node numbers I just invented :wink:

You can see the hop counts have changed from before. To put it simply, this is because the microwave signals are bouncing around in your flat, and the reflections change with tiny movements of things, eg people, doors, your cat etc. After all this is how radar works :rofl:

Mesh11sd has tools to mitigate the effects, but lets see those meshnode mac addresses vs my node numbers....

1 Like

Alright, here is the update:


I can't reach 3 and 4 atm for some reason, but that happens often (also before).

This is almost certainly continuing path changes resulting in many dropped tcp packets.

My guess is that it is indeed very likely that all nodes can directly connect with each other.

In cases like this we need to set leech mode on most, plus increase the rssi threshold (making it less sensitive). Also reducing transmit power is likely to be very beneficial.

My gut feeling is to make 1, 2, 4 and 5 leech nodes, maybe even 3 as well.
But first lets look at the output of:

mesh11sd stations

This will show us the direct connections to the green node and the quality of the link.

1 Like

Good morning! :slight_smile:

From the green dot:

===========================================================================
Stations connected to this node:
Station 56:83:3a:79:ac:78 (on m-11s-0)
	inactive time:	10 ms
	rx bytes:	382924852
	rx packets:	2629372
	tx bytes:	2988524168
	tx packets:	2890711
	tx retries:	0
	tx failed:	0
	rx drop misc:	135952
	signal:  	-55 [-55, -62] dBm
	signal avg:	-53 [-54, -59] dBm
	Toffset:	42864796630 us
	tx bitrate:	300.0 MBit/s MCS 15 40MHz short GI
	tx duration:	48451836039 us
	rx bitrate:	458.8 MBit/s 40MHz HE-MCS 9 HE-NSS 2 HE-GI 0 HE-DCM 0
	rx duration:	51628849695 us
	last ack signal:-53 dBm
	avg ack signal:	-52 dBm
	airtime weight: 256
	mesh llid:	0
	mesh plid:	0
	mesh plink:	ESTAB
	mesh airtime link metric: 30
	mesh connected to gate:	yes
	mesh connected to auth server:	no
	mesh local PS mode:	ACTIVE
	mesh peer PS mode:	ACTIVE
	mesh non-peer PS mode:	ACTIVE
	authorized:	yes
	authenticated:	yes
	associated:	yes
	preamble:	long
	WMM/WME:	yes
	MFP:		yes
	TDLS peer:	no
	DTIM period:	2
	beacon interval:100
	connected time:	42213 seconds
	associated at [boottime]:	1668.265s
	associated at:	1717963820859 ms
	current time:	1718006033974 ms
===========================================================================

I was wondering why it only shows one station, so I ran mesh11sd status again and it shows all the other nodes as two hops away.

At the moment you ran mesh11sd stations only node 2 had a direct connection.
Very likely, a few minutes later would give a different result.

See if you can connect to node 2:
mesh11sd connect

If it is in the list, try to connect (copy and paste is easier with the hyphens instead of colons, but either will be accepted):
mesh11sd connect 56-83-3a-79-ac-78

Once connected, do:

service mesh11sd stop
uci set mesh11sd.setup.mesh_leechmode_enable='1'
uci commit mesh11sd
service mesh11sd start; exit

Note the exit on the end. This prevents the terminal session from hanging up as mesh11sd starts.

EDIT - I mistyped the command!!!

Hmm. When running mesh11sd connect I receive

===========================================================================
 Connect a remote terminal session on a remote meshnode
    Usage: mesh11sd connect [remote_meshnode_macaddress]

 Building node list * * * * * *

 If the node you are looking for is not in the list - re-run this command.
===========================================================================
 The following meshnodes are available for remote connection:
	56-83-3a-79-ac-3c	[ ip address: fe80::5483:3aff:fe79:ac3c ]
	54-83-3a-79-ac-78	[ ip address: fe80::5683:3aff:fe79:ac78 ]
	d4-1a-d1-12-af-1c	[ ip address: fe80::d61a:d1ff:fe12:af1c ]
	d6-1a-d1-12-af-1c	[ ip address: fe80::d41a:d1ff:fe12:af1c ]
	54-83-3a-79-bd-58	[ ip address: fe80::5683:3aff:fe79:bd58 ]
	56-83-3a-79-bd-58	[ ip address: fe80::5483:3aff:fe79:bd58 ]
	d4-1a-d1-12-af-20	[ ip address: fe80::d61a:d1ff:fe12:af20 ]
	d6-1a-d1-12-af-20	[ ip address: fe80::d41a:d1ff:fe12:af20 ]
===========================================================================

Note it's 54-83-3a-79-ac-78, not 56-83-3a-79-ac-78. The first time I ran mesh11sd connect 56-83-3a-79-ac-78 I got

===========================================================================
 Connect a remote terminal session on a remote meshnode
    Usage: mesh11sd connect [remote_meshnode_macaddress]

 Building node list * * * * * *


Trying to connect to meshnode "56-83-3a-79-ac-78".....

ssh: Connection to root@fe80::5483:3aff:fe79:ac78%br-lan:22 exited: Connect failed: Host is unreachable

Disconnected from meshnode "56-83-3a-79-ac-78"

===========================================================================

but ever since it's just blank like so;

===========================================================================
 Connect a remote terminal session on a remote meshnode
    Usage: mesh11sd connect [remote_meshnode_macaddress]

 Building node list * * * * * *

===========================================================================

Now I can connect with mesh11sd connect 54-83-3a-79-ac-78 and run service mesh11sd stop uci set mesh11sd.setup.mesh_leechmode_enable='1' uci commit mesh11sd service mesh11sd start; exit. Should I do that instead?

mesh11sd sets a locally administered mac address on the mesh interface if the default is not unique on the device.

But here you are getting multiple instances, due usually to recent reboots and/or multiple path changes.

Turn of nodes. Then turn on green and red-2.
Wait a couple of minutes then try connecting again.