Setting up a home mesh network without mesh11sd

I don't know the ideal use case for mesh11sd, but for me it was just a rabbit hole. I never got it working well for all my client devices (had dropouts all the time) and it makes life hard by disabling Luci and greatly restricts what else you can do.

I came across a post referencing OneMarcFifty's 3yo video DIY WI-FI MESH with OpenWrt. Following that (but using wpad-mesh-mbedtls instead of wpad-mesh-openssl) has finally given me a mesh network that provides solid client connections and that I can customise as I want and lets me use Luci on each of my nodes.

So to any other newbie that wants to set up a mesh, I'd suggest not going down the mesh11sd rabbit hole and doing it the manual way as in the video.

2 Likes

Well, I am sorry to hear your experience was a "rabbit hole".

The purpose of mesh11sd is to autonomously manage a multi node mesh.

The problem most people have is that they do not read the documentation and instead treat the package as you would a traditional one, ie go into Luci and select a few options.
If you do this, that is assume you have to configure traditional uci options one way or another, you will indeed end up in a bottomless rabbit hole as you fight the autonomous system.

Configuring manually is just fine if you only have two nodes.
It will, most likely, just work.

If you add a third, if you are lucky and have positioned all three exactly right, it will still work - unless something changes. Even something apparently trivial like leaving a door open.

Add a fourth, unless you are EXTREMELY lucky, very likely you will be in a game of now-you-see-me, now-you-don't. This is because Luci (and therefore uci) is designed to statically configure networks before they are brought up. This is not enough.

In an 802.11s mesh backhaul, the node has to join the mesh then turn on the HWMP mac routing that is built into the Linux kernel, then dynamically adjust its parameters depending on the availability or otherwise of peer nodes.

This is a dynamic process. Luci can only configure static processes.

Mesh11sd is a service daemon to dynamically manage the mesh backhaul.

If you were to open Luci and try to look at the mesh configuration, you will either see no trace of the mesh, or only see some very basic defaults. Then if you try to change anything, you fall down your rabbit hole, in the worst case soft bricking the device. For this reason Luci is disabled when mesh11sd is active (there are modes for expert users where Luci is re-enabled - but that is not for this thread).

A mesh node in "gate" mode, functions like a "dumb ap" but with a mesh backhaul link instead of an ethernet connection.

Why would you want to run Luci on a node like this?
Well the answer would be to gather statistics like the number of users, how much traffic are they generating etc.
The mesh11sd daemon runs another built in daemon, apmond, the access point monitor daemon.
A centralised database is generated to hold all the information about access point utilisation. This is usually on the "portal" node aka your router.
Simple commands give you a json formatted list of ap data.
Here is an example:

root@meshnode-8ecb:~# mesh11sd show_ap_data all
{
  "OpenWrt-2g-256e@owe1-1@94:83:c4:5c:25:6e":{
    "da:4b:ad:8c:f9:8c":{
      "rx_bytes":"8901795",
      "tx_bytes":"205175063",
      "tx_retries":"33",
      "signal_avg":"-63_dBm",
      "tx_bitrate":"72.2_MBit/s_MCS_7_short_GI",
      "rx_bitrate":"65.0_MBit/s_MCS_7",
      "avg_ack_signal":"-60_dBm",
      "connected_time":"3549_seconds",
      "timestamp":"1750400350981_ms",
      "date_time":"Fri_Jun_20_06:19:10_GMT_2025"
    }
  },
  "OpenWrt-2g-2a52@owe1-1@94:83:c4:5c:2a:52":{
    "a6:b4:09:cf:bd:71":{
      "rx_bytes":"4199614",
      "tx_bytes":"52459562",
      "tx_retries":"3289",
      "signal_avg":"-66_dBm",
      "tx_bitrate":"72.2_MBit/s_MCS_7_short_GI",
      "rx_bitrate":"52.0_MBit/s_MCS_5",
      "avg_ack_signal":"-64_dBm",
      "connected_time":"15308_seconds",
      "timestamp":"1750415827324_ms",
      "date_time":"Fri_Jun_20_10:37:07_GMT_2025"
    }
  },
  "OpenWrt-5g-8ecb@owe1-1@94:83:c4:a2:8e:cb":{
    "b4:8c:9d:ea:26:21":{
      "rx_bytes":"294702",
      "tx_bytes":"18278144",
      "tx_retries":"266",
      "signal_avg":"-49_[-55,_-57,_-53,_-54]_dBm",
      "tx_bitrate":"390.0_MBit/s_VHT-MCS_9_80MHz_VHT-NSS_1",
      "rx_bitrate":"433.3_MBit/s_VHT-MCS_9_80MHz_short_GI_VHT-NSS_1",
      "avg_ack_signal":"-42_dBm",
      "connected_time":"13472_seconds",
      "timestamp":"1750415885205_ms",
      "date_time":"Fri_Jun_20_10:38:05_GMT_2025"
    }
  }
}
root@meshnode-8ecb:~# 

For anyone interested, see the mesh11sd documentation.

3 Likes

For many users a router with luci disabled is more or less equal to a bricked device...

Luci is a very useful tool but is by no means essential.

Those users where no access to Luci is equivalent to a bricked device should not really be using OpenWrt in the first place. The OEM firmware is designed for them.

1 Like

That's one of the beauties of open source, we can use it if we want and how we want and your approval isn't a factor. Why not offer informed advice and keep your judgements of other people's choices private? Thank you for your technical contributions.

Yes indeed.

I don't offer "approval", however you seem to demand it.

So, clearly, if someone offers you informed advice that does not align with your opinion, it is a judgement of your choices....

Hello everyone. @bluewavenet thank you very much for all the Information in post #2 (and all other posts about mesh in forum). Your link is very useful and all the info on GitHub. I gave up on mesh for my home network, but i have another "home" network with 7 nodes that i finally have to upgrade (WDS in not suitable). They are running on OpenWRT 20/21 (i am not sure). They are working now for years without problem, and the whole mesh i configured in LuCI. I was experimenting last year with same method but with no luck. I am going to give mesh11sd a try.

I started experiments and they are looking good (with help of the guide on GitHub). But i would have some questions about mesh11sd:

  1. What would be the proper way to switch wan interface on portal node. I am using USB for my wan connection? Is it better to set portal_detect to 0 and then through SSH switch wan device or is it better to do some magic on uci_defaults? Or is there another (better) way?
  2. How to set SSID of gate node with spaces in string (for example "My WiFi")? mesh11sd somehow removes them from string.
  3. If portal_use_default_ipv4 is set to 0, does the IP subnet change on every reboot? And if set to 1, which configs are obtained from /etc/config/network? IP? Gateway? DNS?

P.S. There is also some small error in your README file on GitHub (i think). On line 305:
uci set portal_detect='3'

it should be:
uci set mesh11sd.setup.portal_detect='3'

Thank you in advance for your answers

Cool, thanks, fixed it!

I think this thread is done, so not a good idea to hijack it.

You can either start a new thread and post your questions again, or open a Github issue with the same.
Github issues

It's totally unrealistic to expect an average user (the vast majority of users in my uninformed opinion) to open an ssh connection to a device to read wifi connection stats displayed as json.
If your personal choices are luci is useless and just the terminal is essential, that is fine, but don't be surprised that most other people feel abandoned by that approach....

Again, the main audience of openwrt are people familiar with Linux and networking.
Just don't listen to those dudes on YouTube who try to sell you something.

It's not an approach, it is a necessity, due to the way that Luci only considers static configurations.

Maybe the mesh11sd luci-placeholder status page could display wifi connection stats from the json as html... mmm. Interesting thought. I will look into this.

2 Likes

I've experimented thoroughly with mesh11sd and was a harsh critic when I "discovered" that luci was disabled -- In reality, I didn't understand and thoroughly go over the documentation and the author had covered and explained everything I had an issue with. mesh11sd is a very ambitious project the author has done a lot of work on it and steadily swatted bugs and optimized it. The latest version is working pretty well and as advertised. I went through a long configuration back and forth with the author in another thread and I made a sample first run script in that thread that anyone can edit for their own setup and have a turnkey mesh11sd system going.

I likewise started with the OneMarcFifty video and it worked -- but became unstable and unreliable. Mesh is tricky even when you do everything exactly right. That's where mesh11sd's adaptability comes in and takes care of the complex configurations to keep things stable and reliable.

Although I do a lot of OpenWrt tweaking, when I get it working without errors and reliably, I create backups and package lists and archive each of those so I can re-create all the work depending on how I want to use OpenWrt. I think most people when they get their system running reliably and fast don't constantly F with it. I F with it for days until I get it perfect, then stop.

Check some other threads here. My latest two OpenWrt projects for OpenWrt were completely successful. I created a perfected mesh setup with release firmware and a custom pre-built binary optimizing speed and maximum reliability router that required omitting mesh. Just do some tinkering or plow through some other threads where others already made the mistakes. That's the fun part of open source firmware.

I learned a lot and don't need much help or hand holding anymore and you can do that too.

1 Like