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 for both optimizer labs: one wmediumd patch series, one configurator, the same rooms, the console and the controller's topology page. CI builds and tests it without a lab; both labs build it at a pinned commit.
Optimizer One optimizer and room service for both labs, an adapter per stack, and the acceptance tools both labs' suites run; requalified in both labs.
RDK EasyMesh Rebuilt and requalified on the current medium, optimizer and controller image, with four Wi-Fi extenders and a wired one. With the EMOSA option (emosa-lab at a pinned commit), two OpenSync pods on Wi-Fi backhaul join the native agents in the standard rooms.
prplMesh Rebuilt and requalified on the same medium, optimizer and topology page, with a wired Agent.
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 C is being taken to production quality, with sanitizers, static analysis, fuzzing and a lab in a box in CI.
OpenSync The router and three pods with clients, reproduced from a fresh VM; with EMOSA it is the adapter's reference lab, whose 900-second fault workload passes.
Protocol lab A controller written from scratch drives a TP-Link RE653BE: onboarding on 2.4 and 5 GHz, WPA3-SAE clients on 6 GHz; a second extender joins through it, over Ethernet and then a Wi-Fi backhaul (experimental).

The alignment plan's phases up to the medium and the optimizer as shared components are done, and the documentation matches the project. Under way: 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 and hosts are in the lab configurations.

The repositories

RepositoryWhat it isSite
easymesh-mediumthe RF medium (core)how it works
emosa-labEMOSA, the OpenSync adapter (core)EMOSA
easymesh-optimizerthe optimizer and its room servicehow it works
meta-cmf-bananapi-vcpethe RDK EasyMesh labRDK EasyMesh
prplmesh-labthe prplMesh labprplMesh
opensync-labthe OpenSync router and podsOpenSync
easymesh-labthe physical protocol labProtocol lab
easymesh-room-builderthe room designeropen it
easymesh-labsthis umbrella: the workspace, the manifest and the planthis site