boardfarmdevs · EasyMesh labs

One EasyMesh system, for native agents and the OpenSync pods already in homes

Three goals: developing EasyMesh optimizer algorithms in a rich virtual lab, on both RDK and prplMesh; running existing OpenSync pods, unchanged, in an EasyMesh system under a local controller with no OpenSync cloud; and learning the protocol on certified hardware. Two core components carry them: the RF medium, which must emulate radio correctly for every lab, and EMOSA, which must convert completely between OpenSync's OVSDB and EasyMesh. Everything else is infrastructure around them, or exploratory learning.

Two posters show it all at a glance: where everything lives, every component and its directory, and the labs as built, what runs in each lab and how to open it.

The two core components

Core

The RF medium

wmediumd and its patch series, the hwsim radios, the room language and the rooms, and the medium's console: one repository that both optimizer labs build their medium from, at a pinned commit, so RDK and prplMesh run on the same medium in the same rooms.

  • easymesh-medium builds and checks without a lab; a change is requalified in both labs

Core

EMOSA

The EasyMesh-to-OpenSync adapter: each unchanged OpenSync pod appears to the controller as a complete EasyMesh agent. A specification with conformance vectors, a Python reference and a C implementation that behave identically.

  • emosa-lab specification, design, vectors, both implementations

The labs and learning around them

Goal 1

EasyMesh optimizer

The same containerized EasyMesh lab on two stacks, with virtual RF and medium, an optimizer and an interactive room.

  • RDK EasyMesh RDK-B on Banana Pi images: controller, extenders, 100 clients, wmediumd
  • prplMesh The same lab on native prplMesh
  • easymesh-optimizer The optimizer both labs run and its room service: one policy core, an adapter per stack
  • Room builder A tool for both: design the labs' rooms in the browser (floor plans, walls, agents, clients, movement), compiled to the same world plans as the lab's configurator

Goal 2

OpenSync adapter

Existing OpenSync pods, unchanged, as standard EasyMesh agents, so an EasyMesh controller can run them.

  • EMOSA The EasyMesh-to-OpenSync adapter
  • OpenSync A representative router (mv3) and OpenSync pods with virtual radios and clients

Goal 3

Physical EasyMesh

The protocol on certified hardware: a controller written from scratch drives a real EasyMesh extender, and every IEEE 1905.1 message can be read, sent and correlated.

  • Protocol lab A Python controller and teaching panel with a TP-Link RE653BE, phones, tablets and laptops on 2.4, 5 and 6 GHz, and managed USB Wi-Fi 7 clients
EasyMesh controller RDK or prplMesh · optimizer Native EasyMesh agents RDK or prplMesh extenders EMOSA adapter OpenSync pods unchanged OVSDB 1905.1 wmediumd · one virtual radio medium for every radio
The end goal: one controller, native agents and OpenSync pods side by side, all on the same simulated medium.

Current state

ProjectWhere it stands
RF medium One repository since 30 September, merged from the two labs' copies: one wmediumd patch series, one configurator with both labs' differences in one place, the same rooms for both. CI builds and tests it without a lab. Both labs consume it at a pinned commit and were requalified on it from scratch (30 September).
EMOSA Unchanged OpenSync 6.6 pods run as EasyMesh agents under both RDK's and prplMesh's controllers. The Python reference and the C implementation are interchangeable: the 900-second fault workload and the RDK room suite with the pods pass alike on either, and mixed. The C is being taken to production quality: a written bar (CERT C), sanitizers, static analysis and fuzzing in CI, and a lab in a box that runs either agent against a recorded pod, where it found and closed a gap in the C's controller admission.
RDK EasyMesh Built from scratch on easymesh-medium with four Wi-Fi extenders and a wired one; its full room suite passed (30 September). With the EMOSA option, two pods on Wi-Fi backhaul join the native agents in the standard rooms, and the suite passes with them.
prplMesh Built from scratch on easymesh-medium with a wired Agent; acceptance, the optimizer check and the full room suite passed (30 September).
OpenSync The router and three pods with clients, reproduced from a fresh VM; the pod image reports the Multi-AP backhaul link state. With EMOSA it is the adapter's reference lab.
Protocol lab A fresh LXD VM on rev120 runs the controller against a TP-Link RE653BE: WSC onboarding on 2.4 and 5 GHz, WPA3-SAE clients on its 6 GHz BSS, 34 tests plus browser, reboot, capture and 6 GHz checks. Controller-provisioned 6 GHz is not yet verified. Since 29 September a second extender (TP-Link RE715X) is onboarded through it, first over Ethernet, then on a Wi-Fi backhaul (experimental).

The alignment plan's first phases are done: a wired extender in both optimizer labs, EMOSA as an option of the RDK lab, the Python and C EMOSA interchangeable, and the RF medium as one component both labs are requalified on. Under way: documentation that matches the project and EMOSA's C to production quality; then EMOSA as a full OpenSync-supporting EasyMesh system without the cloud. The phases and their status are in the alignment plan.

Run it

This repository is the workspace. It pins the projects in manifest.json and clones them next to it:

git clone git@github.com:boardfarmdevs/easymesh-labs.git ~/git/easymesh-labs
cd ~/git/easymesh-labs
./sync            # clone or fast-forward the projects (./sync --pinned: the pinned commits)
./pin             # record the commits in use as the new pins

Each project is then built and run with its own guide. Together they build six VM lab configurations:

ConfigurationBuilt fromPurpose
RDK EasyMesh labmeta-cmf-bananapi-vcpe Optimizer development on RDK: controller, native extenders, 100 room clients, wmediumd, the interactive room
prplMesh labprplmesh-lab The same optimizer lab on native prplMesh
OpenSync labopensync-lab A representative router (mv3) and OpenSync pods with virtual radios and clients
OpenSync + EMOSAopensync-lab, then emosa-lab Adapter development against a prplMesh controller: several pods, fault workload, wireless backhaul
RDK lab + EMOSAmeta-cmf-bananapi-vcpe, then emosa-lab OpenSync pods as agents next to the RDK lab's native agents on one medium
Physical protocol labeasymesh-lab The controller, panel and captures in a VM on the host the extender and USB Wi-Fi clients are attached to

Their current VMs, hosts and what a rebuild from the pins still lacks are in the lab configurations; the order of a full rebuild is in the fresh-build plan.

Reference