openNDS / mesh11sd

Mesh11sd is a dynamic parameter configuration daemon for 802.11s mesh networks.
GNU General Public License v2.0
27 stars 4 forks source link

Stations but no peers - no `mesh11sd connect` options #77

Closed tgolsson closed 9 hours ago

tgolsson commented 1 week ago

Hey!

As a preface, I'll openly admit I'm new to both OpenWrt and mesh systems, and I'm not quite sure if this is more of an OpenWRT or mesh11sd specific issue. Feel free to send me off back to the forums - though I think you'd be the person to respond there either way after reading a lot of the relevant threads.

With that said, I'm setting up an 802.11s mesh with Asus Lyra MAP-AC2200 nodes. Quite old, but seem to work fine and I had a manual config working~, but saw adamant suggestions about using mesh11sd instead. Since then, I've been in hell trying to get something to stabilize. Right now, I've got something that at least connects, when the nodes are sitting next to each other. However, they don't appear to peer (?) correctly, and I'm not quite sure what that means -- something related to HWMP?

This indicates that some configuration is still wrong; and I'm not quite sure why. This is most (maybe?) relevant config from the nodes...

Node 0

node-0  # uci show mesh11sd
mesh11sd.setup=mesh11sd
mesh11sd.setup.auto_mesh_band='5g'
mesh11sd.setup.auto_mesh_id='bbbb'
mesh11sd.setup.auto_mesh_key='aaaa'
mesh11sd.setup.auto_config='1'
mesh11sd.setup.ssid_suffix_enable='0'
mesh11sd.setup.debuglevel='3'
node-0 # mesh11sd status
{
  "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":"5g",
    "auto_mesh_id":"360c5420260e3e90c9c0f07aba7723",
    "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":"3"
  },
  "interfaces":{
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"99",
      "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":"0",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"0",
      "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":"0",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"360c5420260e3e90c9c0f07aba7723",
      "device":"radio0",
      "channel":"36",
      "tx_packets":"12",
      "tx_bytes":"1408",
      "rx_packets":"1967",
      "rx_bytes":"149783",
      "this_node":"ba:00:78:20:d1:a2",
      "active_peers":"0",
      "peers":{
      },
      "active_stations":"1",
      "stations":{
        "0e:39:25:70:84:a4":{
          "proxy_node":"82:57:41:5b:3f:b1"
        }
      }
    }
  }
}
node-0 # iw dev
phy#2
        Interface phy2-ap0
                ifindex 31
                wdev 0x200000007
                addr 0e:0a:6e:9a:c1:8e
                ssid AABB2_5G
                type AP
                channel 140 (5700 MHz), width: 80 MHz, center1: 5690 MHz
                txpower 26.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
phy#1
        Interface phy1-ap0
                ifindex 29
                wdev 0x100000007
                addr 0e:0a:6e:99:c1:8e
                ssid AABB2
                type AP
                channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
phy#0
        Interface m-11s-0
                ifindex 28
                wdev 0x7
                addr 96:3a:c4:90:ac:9c
                type mesh point
                channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
                txpower 23.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       2182    0       0       0       0       205809          2182
node-0 # iw dev m-11s-0 station dump
Station 82:57:41:5b:3f:b1 (on m-11s-0)   -- NOTE: This is node-1
        inactive time:  70 ms
        rx bytes:       4462037
        rx packets:     46231
        tx bytes:       4718
        tx packets:     35
        tx retries:     0
        tx failed:      0
        rx drop misc:   4
        signal:         -21 [-22, -30, -95, -95] dBm
        signal avg:     -21 [-22, -30, -95, -95] dBm
        Toffset:        18446744072275494727 us
        tx bitrate:     6.0 MBit/s
        tx duration:    0 us
        rx bitrate:     6.0 MBit/s
        rx duration:    513500 us
        airtime weight: 256
        mesh llid:      0
        mesh plid:      0
        mesh plink:     ESTAB
        mesh airtime link metric: 8193
        mesh connected to gate: no
        mesh connected to auth server:  no
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      UNKNOWN
        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: 2251 seconds
        associated at [boottime]:       2954.318s
        associated at:  1718654597593 ms
        current time:   1718656808135 ms
Station 7a:7d:27:d7:e8:02 (on m-11s-0)
        inactive time:  150620 ms
        rx bytes:       296354
        rx packets:     3100
        tx bytes:       632
        tx packets:     3
        tx retries:     0
        tx failed:      0
        rx drop misc:   151
        signal:         -66 [-73, -67, -95, -95] dBm
        signal avg:     -66 [-73, -67, -95, -95] dBm
        Toffset:        133652100 us
        tx bitrate:     6.0 MBit/s
        tx duration:    0 us
        rx bitrate:     6.0 MBit/s
        rx duration:    26792 us
        airtime weight: 256
        mesh llid:      0
        mesh plid:      0
        mesh plink:     ESTAB
        mesh airtime link metric: 8193
        mesh connected to gate: no
        mesh connected to auth server:  no
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      UNKNOWN
        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: 150 seconds
        associated at [boottime]:       5014.117s
        associated at:  1718656657393 ms
        current time:   1718656808136 ms
node-0 # cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'soc/40000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/a000000.wifi'
        option channel 'auto'
        option band '2g'
        option htmode 'HT20'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'asdqwe'
        option encryption 'psk2'
        option key 'qweqwe'
        option macaddr '0e:0a:6e:99:c1:8e'
        option disabled '0'

config wifi-device 'radio2'
        option type 'mac80211'
        option path 'platform/soc/a800000.wifi'
        option channel 'auto'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-iface 'default_radio2'
        option device 'radio2'
        option network 'lan'
        option mode 'ap'
        option ssid 'asdqwe_5G'
        option encryption 'psk2'
        option key 'qweqwe'
        option macaddr '0e:0a:6e:9a:c1:8e'
        option disabled '0'

config wifi-iface 'm11s0'
        option device 'radio0'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-0'
        option mesh_rssi_threshold '-65'
        option disabled '0'
        option macaddr '96:3a:c4:90:ac:9c'

config wifi-iface 'm11s1'
        option device 'radio1'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-1'
        option mesh_rssi_threshold '-65'
        option disabled '1'
        option macaddr '96:3a:c4:90:ac:9c'

config wifi-iface 'm11s2'
        option device 'radio2'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-2'
        option mesh_rssi_threshold '-65'
        option disabled '1'
        option macaddr '96:3a:c4:90:ac:9c'

Node 1

node-1 # uci show mesh11sd
mesh11sd.setup=mesh11sd
mesh11sd.setup.auto_mesh_band='5g'
mesh11sd.setup.auto_mesh_id='bbbb'
mesh11sd.setup.auto_mesh_key='aaaa'
mesh11sd.setup.auto_config='1'
mesh11sd.setup.ssid_suffix_enable='0'
mesh11sd.setup.debuglevel='3'
node-1 {
  "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":"5g",
    "auto_mesh_id":"360c5420260e3e90c9c0f07aba7723",
    "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":"3"
  },
  "interfaces":{
    "m-11s-0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"99",
      "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":"0",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"0",
      "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":"0",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"360c5420260e3e90c9c0f07aba7723",
      "device":"radio0",
      "channel":"36",
      "tx_packets":"2005",
      "tx_bytes":"192985",
      "rx_packets":"0",
      "rx_bytes":"0",
      "this_node":"0e:39:25:70:84:a4",
      "active_peers":"0",
      "peers":{
      },
      "active_stations":"0",
      "stations":{
      }
    }
  }
}
node-1 # iw dev
phy#2
        Interface phy2-ap0
                ifindex 19
                wdev 0x200000004
                addr 0e:39:25:72:84:a4
                ssid AABB2_5G
                type AP
                channel 140 (5700 MHz), width: 80 MHz, center1: 5690 MHz
                txpower 26.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
phy#1
        Interface phy1-ap0
                ifindex 18
                wdev 0x100000005
                addr 0e:39:25:71:84:a4
                ssid AABB2
                type AP
                channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
phy#0
        Interface m-11s-0
                ifindex 20
                wdev 0x5
                addr 82:57:41:5b:3f:b1
                type mesh point
                channel 36 (5180 MHz), width: 80 MHz, center1: 5210 MHz
                txpower 23.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       2144    0       0       0       0       202827          2144
node-1 # cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'soc/40000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option cell_density '0'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/soc/a000000.wifi'
        option channel 'auto'
        option band '2g'
        option htmode 'HT20'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'asdqwe'
        option encryption 'psk2'
        option disabled '0'
        option key 'asdasd'
        option macaddr '7a:24:1c:80:7a:79'

config wifi-device 'radio2'
        option type 'mac80211'
        option path 'platform/soc/a800000.wifi'
        option channel 'auto'
        option band '5g'
        option htmode 'VHT80'
        option disabled '0'
        option country 'SE'
        option log_level '0'

config wifi-iface 'default_radio2'
        option device 'radio2'
        option network 'lan'
        option mode 'ap'
        option ssid 'asdqwe_5G'
        option encryption 'psk2'
        option disabled '0'
        option key 'asdasd'
        option macaddr '7a:24:1c:81:7a:79'

config wifi-iface 'm11s0'
        option device 'radio0'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-0'
        option mesh_rssi_threshold '-65'
        option disabled '0'
        option macaddr '82:57:41:5b:3f:b1'

config wifi-iface 'm11s1'
        option device 'radio1'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-1'
        option mesh_rssi_threshold '-65'
        option disabled '1'
        option macaddr '82:57:41:5b:3f:b1'

config wifi-iface 'm11s2'
        option device 'radio2'
        option mode 'mesh'
        option encryption 'sae'
        option mesh_id '360c5420260e3e90c9c0f07aba7723'
        option key '<snip>'
        option network 'lan'
        option ifname 'm-11s-2'
        option mesh_rssi_threshold '-65'
        option disabled '1'
        option macaddr '82:57:41:5b:3f:b1'

As far as I can tell from reading the code; having no peers is the reason commands like mesh11sd connect etc do not work. When generating the above status for node-1 it does have a WAN connection, but disconnecting that doesn't fix anything. Not quite sure how to debug this as when I remove the WAN connection on the satellites I can't check config or logs, so I'm stumbling in the dark.

It also seems like if I want to run the mesh portal as an L2 bridge only with my real router, I won't be able to reach the nodes at all, which maybe isn't as much of an issue once things are actually stable. I'm not sure if this is part of the problems I'm having, as I've changed the firewall rules to admin the nodes from the WAN port.

Happy to provide any extra info needed, and test any suggestions!

bluewavenet commented 1 week ago

@tgolsson Note that mesh11sd dynamically manages the config of itself, wireless and dnsmasq. Editing the config files directly is not recommended unless you really know what you are doing. Just looking at the output of cat /etc/config/wireless is not indicative of the config, but it does show that you have a manual config, yet you have enabled auto_config.

The mesh11sd status output shows you have HWMP disabled somehow.

I think you need to start from scratch.

Can you draw a diagram of your network? It would help.

Some questions:

  1. Do you have three Asus Lyra MAP-AC2200 nodes?
  2. Is your isp/real router running OpenWrt?

It also seems like if I want to run the mesh portal as an L2 bridge only with my real router, I won't be able to reach the nodes at all,

No, that is not true, as long as you can log into your "real router" to get a meshnode address. I can guide you on this later.

For now though, answer my 2 questions above and read: https://openwrt.org/docs/guide-user/network/wifi/mesh/rapiddeployment

I think we will do a "Rapid Deployment", depending on your answers ;-)

tgolsson commented 1 week ago

Note that mesh11sd dynamically manages the config of itself, wireless and dnsmasq. Editing the config files directly is not recommended unless you really know what you are doing. Just looking at the output of cat /etc/config/wireless is not indicative of the config, but it does show that you have a manual config, yet you have enabled auto_config.

That is indeed a misunderstanding on my end, as I was under the impression I should at least configure the user-facing SSID's myself. I haven't modified the files directly, but I did use luci for my initial test config and then uci to set country codes etc. As I had one wifi-iface configured per device on initial boot, is the implication those should have been deleted? (Maybe this wouldn't be an issue with the rapid deployment?)

The mesh11sd status output shows you have HWMP disabled somehow.

Thanks, confirms I was at least looking in the right place.

Can you draw a diagram of your network? It would help.


flowchart LR
subgraph infraroom
drg[Fiber Converter/DRG]
r[opnSense]
s[L2 Switch]
n0[Asus Lyra MAP-AC2200]
end
subgraph upstairs
n1[Asus Lyra MAP-AC2200]
n2[Asus Lyra MAP-AC2200]
end
drg --> r
r --> s

s --> n0
n0 -.- n1
n0 -.- n2
n1 -.- n2
n2 -.- n1


> 
> Some questions:
> 
> 1. Do you have three Asus Lyra MAP-AC2200 nodes?
> 2. Is your isp/real router running OpenWrt?

Probably obvious from the diagram at this point, but I'm running opnSense as my main router, and I do have three mesh nodes of which one will be in the basement/infraroom and the two satellites will go upstairs.

> No, that is not true, as long as you can log into your "real router" to get a meshnode address. I can guide you on this later.

Ah, I saw a note somewhere about `mesh11sd connect` working over ipv6. I'll have to deal with that once things work, since opnSense is weirdly unstable on ipv6 and I currently have it disabled. I'm hoping once I migrate to Kea DHCP that'll work better.
bluewavenet commented 1 week ago

@tgolsson

I should at least configure the user-facing SSID's myself. I haven't modified the files directly,

Well yes of course you can, in any of the normal ways. BUT you must first stop mesh11sd and revert. ie:

service mesh11sd stop
uci revert wireless

At this point you can use Luci to set your stuff.

However, all this is best done with rapid deployment, eliminating any complicated faffing ;-)

mesh11sd connect working over ipv6.

Yes it does. In fact it uses ipv6 link-local connectivity so does not need your router to be involved. Only problem is you need to ssh into one of the nodes somehow, to get started. You can do this by looking at the dhcp database on your pfsense router I guess.... and get an ipv4 address.

From your diagram, the two upstairs meshnodes can both communicate directly with the one downstairs.

What can go wrong?

As this is indoors, and the wireless is at microwave frequencies, there will be many strong reflections and multiple possible paths that can change rapidly (this is how radar works, so not surprising if you think about it).

The mesh network copes with this quite happily, changing hop paths where required to to get the best metric. The layer 2 packets all get delivered. But if things get really bad (your cat walks upstairs, your wife goes to the bathroom), it is possible for packets to be delayed or sent out of sequence if a mesh hop path changes. TCP will be very unhappy with this and might even drop connections.

Mesh11sd can mitigate this "indoors multipath propagation" problem with various built in magic. By default it will stabilise mesh paths and in a case like this will most likely be, you can set mesh Leechmode on some nodes as well as tune the radio sensitivity and transmit power.

My guess though (based on past experience) is all you need is leechmode on your two upstairs nodes.

Do you want to try reflashing rapid deployment?

I would recommend it.

tgolsson commented 1 week ago

@tgolsson

I should at least configure the user-facing SSID's myself. I haven't modified the files directly,

Well yes of course you can, in any of the normal ways. BUT you must first stop mesh11sd and revert. ie:

service mesh11sd stop
uci revert wireless

At this point you can use Luci to set your stuff.

Right, I probably changed some stuff around after setting it up. I also did uci commit a bunch (without specifying scopes) which definitely caused issues.

However, all this is best done with rapid deployment, eliminating any complicated faffing ;-)

mesh11sd connect working over ipv6.

Yes it does. In fact it uses ipv6 link-local connectivity so does not need your router to be involved. Only problem is you need to ssh into one of the nodes somehow, to get started. You can do this by looking at the dhcp database on your pfsense router I guess.... and get an ipv4 address.

From your diagram, the two upstairs meshnodes can both communicate directly with the one downstairs.

Ah, great! I'm not sure exactly how the node gets an ipv4 address while also not working as a DHCP server, but maybe I'm getting ahead of the action here. Maybe it was due to other misconfiguration, but when I connect the LAN port with my current setup the nodes don't run DHCP.

What can go wrong?

As this is indoors, and the wireless is at microwave frequencies, there will be many strong reflections and multiple possible paths that can change rapidly (this is how radar works, so not surprising if you think about it).

The mesh network copes with this quite happily, changing hop paths where required to to get the best metric. The layer 2 packets all get delivered. But if things get really bad (your cat walks upstairs, your wife goes to the bathroom), it is possible for packets to be delayed or sent out of sequence if a mesh hop path changes. TCP will be very unhappy with this and might even drop connections.

Mesh11sd can mitigate this "indoors multipath propagation" problem with various built in magic. By default it will stabilise mesh paths and in a case like this will most likely be, you can set mesh Leechmode on some nodes as well as tune the radio sensitivity and transmit power.

My guess though (based on past experience) is all you need is leechmode on your two upstairs nodes.

I'm actually suspecting due to visibility they'll end up as a chain, if that's a thing that can work. My downstairs node will have good LOS through the stairs to upstairs node 1, and I hope to position the last one to get OK visibility to the first node. Probably would be less of an issue if I ran the mesh on 2.4 Ghz, but having two 5 Ghz radios it seems more sensible to dedicate one to mesh. The 2.4 Ghz is already drowning in IoT/smart devices/wireless cameras etc, so also running a mesh on that device seems awkward, even if the incoming chatter is hitting multiple nodes. Maybe I'll end up regretting this... Long-term wired is my goal either way, so I'm fine with a bit of fiddling short-term as long as it's stable.

Do you want to try reflashing rapid deployment?

I would recommend it.

Yeah, it seems like my best course of action. I figure I'll change the packages to non-ct variants, change to wpad-wolfssl, and add mesh11sd and kmod-nft-bridge if not already included. I see there's some uci-defaults suggested on the wiki, but I can't see how to set the SSIDs - can I just add those lines at the start before mesh11sd is configured? I'd want to match the details from my current setup (FooNet and FooNet_5G) due to some "smart" devices being terrible to connect.

bluewavenet commented 1 week ago

@tgolsson Set everything up in the Firmware selector as described in the Rapid Deployment link.:

  1. change the packages to non-ct variants - yes
  2. change to wpad-wolfssl - No, change to wpad-mesh-mbedtls or wpad-mbedtls if you need the full version for something else.
  3. add mesh11sd and kmod-nft-bridge - Yes (they are not already included in the base set of packages)
  4. in uci defaults set country code and ssid as required (I can help if needed)
  5. Stay with 2.4 GHz, at least initially as in my experience it is nearly always better than 5GHz even with loads of IoT, cameras, printers etc. You may be right about 5GHz, but try 2.4 first, I think you will be surprised.
  6. Going with 2.4, set channel 13 in the uci-defaults, it usually is best.

NOTE: You will be flashing the exact same image on all 3 nodes.

Do not over think this, it is actually very simple. Read the docs again: https://openwrt.org/docs/guide-user/network/wifi/mesh/rapiddeployment

Let me see the uci-defaults you are going to use before flashing...

tgolsson commented 6 days ago

Great, thanks! Will switch to mbedtls, I got the impression when reading that wolfssl was better/faster/smaller, but maybe that's marketing. Re channel and band, will stay on 2.4Ghz for now. I'll maybe also be concerned about speed (4k streaming especially), but I figure switching later is just a reflash once I know how everything works.

With that said, I think this is all:

uci set mesh11sd.setup.auto_config='1'
uci set mesh11sd.setup.auto_mesh_id='MyNet'
uci set mesh11sd.setup.auto_mesh_key='MeshPassword'
uci set mesh11sd.setup.portal_channel='13'

uci set mesh11sd.setup.mesh_gate_encryption='3'
uci set mesh11sd.setup.mesh_gate_key='AABBCCDD'
uci set mesh11sd.setup.ssid_suffix_enable='0'

uci commit mesh11sd

# main network is 10.0.0.0/16, gateway+dns+dhcp 10.0.0.1, dhcp assigning most of 10.0.0.0/24
uci set network.lan.ipaddr='10.0.0.254' 
uci commit network

# 5ghz/low channels
uci set wireless.radio0.country='SE'
uci set wireless.radio0.disabled='0'
uci set wireless.radio0.channel='auto'
uci set wireless.default_radio0.ssid='MyNet_5G'
uci set wireless.default_radio0.disabled='0'

# 2.4ghz
uci set wireless.radio1.country='SE'
uci set wireless.radio1.disabled='0'
uci set wireless.default_radio1.ssid='MyNet'
uci set wireless.default_radio1.disabled='0'

# 5ghz/high channels
uci set wireless.radio2.country='SE'
uci set wireless.radio2.disabled='0'
uci set wireless.radio2.channel='auto'
uci set wireless.default_radio2.ssid='MyNet_5G'
uci set wireless.default_radio2.disabled='0'

uci commit wireless

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

I eventually want to also enable 802.11r, but I'm erring on the side of simple right now.

bluewavenet commented 6 days ago

@tgolsson uci set network.lan.ipaddr='10.0.0.254'

For "mesh extension" mode, this is only a fallback ip address and should be a different subnet entirely to prevent clashing with your router if you connect in "routed mesh" portal mode. According to your diagram, you will be connecting in "mesh extension" mode. See: https://openwrt.org/docs/guide-user/network/wifi/mesh/rapiddeployment#deploy_your_meshnodes

Other than that it looks ok. Go for it!

bluewavenet commented 6 days ago

@tgolsson Note: You do not have to enable wireless in the uci-defaults. Auto config will do it for you. ie:

uci set wireless.radio1.disabled='0'
uci set wireless.default_radio0.disabled='0'
....... etc

are superfluous.

tgolsson commented 3 days ago

Thanks for your help so far, I got everything to work and 2.4 Ghz works though as expected, devices are limited to ~120 Mbps. We'll see if I switch over everything to 5Ghz later. One issue that cropped up - unrelated to mesh11sd or openwrt - was a device only operating on channels 1-10, thus not finding the network. Took a bit to figure out and fix.

However, that gave me a bit of a pause. Per the above, I did uci set mesh11sd.setup.portal_channel='13'. That is also the channel it originally used. I then changed it to 3, but ended up on 1. So given that I'm using the LAN ports, I guess I should actually just write to wireless.radio1.channel as I have no portal, and it runs in an auto mode right now?

bluewavenet commented 3 days ago

@tgolsson

devices are limited to ~120 Mbps.

Yes, that is true (wifi5 up to 150Mb/s), but the mesh nodes will communicate with each other at up to 300Mb/s. (wifi 6 would give over 1000Mb/s node to node and node to node for wifi 6 compatible clients - this is the way forward for the near future if buying new hardware of course).

So it all depends on use case... do clients need more than 100Mb/s? Usually not if we are realistic. Up to you of course ;-)

a device only operating on channels 1-10

When I have seen that in the past, the device did not have a country code set.....

I did uci set mesh11sd.setup.portal_channel='13'

This sets the default channel that all meshnodes fall back to if a portal cannot be found.

Yes, you can set channel in wireless instead. Either way make the change on all.