r/OpenMANET • u/Bitter_Ad_3365 • 22h ago
802.11s-style mesh beacons and data frames from a microcontroller
I wanted cheap HaLow nodes that could one day sit in an OpenMANET net without a Pi at every spot. Morse Micro's microcontroller SDK only does station and access point, and they have said mesh isn't supported on micros. The chip itself does mesh (that's what your Pis run), so with a lot of help from an AI (Claude, The Fable variant) I went looking for what the ESP32 side was missing.
Short version: the stock chip firmware will do it. It takes three small hooks into Morse's SDK and one extra chip command, the same MESH_CONFIG command the Linux driver sends.
What's working today, on two boards on my desk:
- A mesh-type interface on the chip, beaconing with a Mesh ID element about 10 times a second
- The other board hears those beacons and finds the neighbour without any scan or hub
- Mesh peering action frames both ways
- 4-address mesh data frames with a Mesh Control field both ways, 90 to 100 percent delivered
- On top of that, a small flooding mesh with duplicate suppression and learned routes, exposed as a normal network interface, so IP just works: boards ping each other over the mesh in about 15 ms
- A group chat app on top with a phone hotspot per board, delivered and seen receipts
What's NOT done: relaying through a middle board is written but untested (I only have two boards), no 802.11s peering state machine yet, no mesh password (SAE), and no batman-adv. So these boards can't join an OpenMANET net yet. That's the plan though, in this order: peering, then the mesh password, then a minimal BATMAN_V node on the ESP32 so a XIAO can be a real OpenMANET node, with Pis only where you need internet or the heavy apps. The quick bridge in the meantime would be an OpenMANET Pi running a HaLow access point next to its mesh interface and the XIAOs joining as stations, if the Morse Linux driver allows mesh plus AP on one radio. If anyone here knows, I'd love to hear.
Honesty section: I'm a PHP and Python developer, not an embedded one. The research, firmware and most of the docs came out of working with Claude and simple google searches I perfromed; I ran the hardware, tested and steered. Everything is 0BSD, free, use it for anything, credit optional. Use at your own risk. Morse Micro's SDK and chip firmware are theirs and follow their rules; the repo doesn't contain them, the build fetches them.
Repo, with every experiment written up with its numbers:
https://github.com/Digitalhour/ESP32-openmanet-experment
Help wanted from anyone who knows batman-adv internals, 802.11s security, or the Morse Micro Linux driver. Also keen to hear from anyone with a third board who wants to test the relaying. Or just make fun of me and my AI slop 😂