Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Scope

Goal of this document helps RDK-B community to Port Unified-easy-mesh on to their Gateway/Extender platforms

Assumption

Test EM on Raspbian OS

Building EasyMesh on RDK-B Banana Pi R4 Kirkstone

Use

...

R5 Specification

...

R6 specification with Wi-Fi 7

Use case diagram

  • draw.io Diagram
    bordertrue
    diagramNameusecasediagram-wifiusdwm
    simpleViewerfalse
    width
    linksauto
    tbstyletop
    lboxtrue
    diagramWidth9711090
    height681754
    revision7

Generic Porting stages

  • Yocto support
  • New cli migration
  • Golang support
  • Segmentation faults fixing

Current state

Done

...

  • 1

BPI-R4 build instruction 

Controller

Code Block
titleBuild
repo init -u https://code.rdkcentral.com/r/manifests -b kirkstone -m rdkb-bpi-extsrc.xml
repo sync -j`nproc` --no-clone-bundle
 
# Default build with AL_SAP
MACHINE=bananapi4-rdk-broadband FEATURE_TYPE=EasyMesh  source meta-cmf-bananapi/setup-environment-refboard-rdkb
 
#to CP the below change for fynecli access for utopia component

...

https://github.com/rdkcentral

...

<<OneWifiMeshCli>>: reset erouter0 bananapi encode_config_reset:354: {

...

(gdb) bt #0  0x0000000000417fb8 in em_cmd_t::init (this=this@entry=0x7f8b4b7010, dm=dm@entry=0x7f8b7fe690)     at ../../../git/src/ctrl/../../src/cmd/em_cmd.cpp:127 #1  0x0000000000418764 in em_cmd_t::em_cmd_t (this=0x7f8b4b7010, type=em_cmd_type_reset,     param=<error reading variable: Cannot access memory at address 0x7ffc9a6470>, dm=...)     at ../../../git/src/ctrl/../../src/cmd/em_cmd.cpp:703 Backtrace stopped: Cannot access memory at address 0x7ffc9a63f8

/utopia/pull/47
 
bitbake rdk-generic-broadband-image

Extender

Code Block
languagebash
titleExt Build Instructions
repo init -u https://code.rdkcentral.com/r/manifests -b kirkstone -m rdkb-bpi-ap-extsrc.xml
repo sync -j4 --no-clone-bundle
 
#Default build with AL_SAP
MACHINE=bananapi4-rdk-broadband-ap-extender  source meta-cmf-bananapi/setup-environment-refboard-rdkb

bitbake rdk-generic-ap-extender-image

Test EM on BPI R4

BPI Controller

Please ensure below processes are running in ctrl.

Code Block
languagebash
titleprocess_status
collapsetrue
root@Filogic-GW:~# systemctl status ieee1905_em_ctrl
● ieee1905_em_ctrl.service - ieee1905 EasyMesh Controller service
     Loaded: loaded (/lib/systemd/system/ieee1905_em_ctrl.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-04-28 17:43:33 UTC; 3 years 3 months ago
    Process: 4793 ExecStartPre=/bin/sh -c sleep 5 (code=exited, status=0/SUCCESS)
    Process: 4941 ExecStartPre=/bin/sh -c if [ ! -e "/sys/class/net/eth0_virt_peer/address" ]; then `/usr/ccsp/EasyMesh/setup_veth_for_em.sh brlan0 eth0 true`; fi (code=exited, status=0/SUCCESS)
    Process: 4942 ExecStart=/bin/sh -c /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth0_virt_peer --sap-data-path /tmp/al_em_ctrl_data_socket --sap-control-path /tmp/al_em_ctrl_control_socket >> /tmp/ieee1905_ctrl_log.txt & (code=exited, status=0/SUCCESS)
   Main PID: 4943 (ieee1905)
      Tasks: 7 (limit: 4713)
     Memory: 22.3M
     CGroup: /system.slice/ieee1905_em_ctrl.service
             └─ 4943 /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth0_virt_peer --sap-data-path /tmp/al_em_ctrl_data_socket --sap-control-path /tmp/al_em_ctrl_control_socket
 
Notice: journal has been rotated since unit was started, output may be incomplete.
 
 
root@Filogic-GW:~# systemctl status em_ctrl
● em_ctrl.service - EasyMesh Controller service
     Loaded: loaded (/lib/systemd/system/em_ctrl.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-08-07 05:54:27 UTC; 20min ago
    Process: 18033 ExecStartPre=/bin/sh -c /usr/ccsp/EasyMesh/setup_mysql_db_pre.sh (code=exited, status=0/SUCCESS)
    Process: 18038 ExecStart=/bin/sh -c /usr/bin/onewifi_em_ctrl bpi\@root >> /tmp/em_ctrl.log & (code=exited, status=0/SUCCESS)
    Process: 18040 ExecStartPost=/bin/sh -c /usr/ccsp/EasyMesh/setup_mysql_db_post.sh (code=exited, status=0/SUCCESS)
   Main PID: 18039 (onewifi_em_ctrl)
      Tasks: 15 (limit: 4713)
     Memory: 185.2M
     CGroup: /system.slice/em_ctrl.service
             └─ 18039 /usr/bin/onewifi_em_ctrl bpi@root
 
Notice: journal has been rotated since unit was started, output may be incomplete.
root@Filogic-GW:~#
 
root@Filogic-GW:~# systemctl status ieee1905_em_agent
● ieee1905_em_agent.service - ieee1905 EasyMesh Agent service
     Loaded: loaded (/lib/systemd/system/ieee1905_em_agent.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-08-07 05:54:31 UTC; 21min ago
    Process: 4944 ExecStartPre=/bin/sh -c if [ ! -e "/sys/class/net/eth1_virt_peer/address" ]; then `/usr/ccsp/EasyMesh/setup_veth_for_em.sh brlan0 eth1 false`;fi (code=exited, status=0/SUCCESS)
    Process: 4945 ExecStartPre=/bin/sh -c while [ ! -e /tmp/wifi_initialized ] && [ ! -e /tmp/wifi_dml_complete ] ;do sleep 1; done  (code=exited, status=0/SUCCESS)
    Process: 17690 ExecStartPre=/bin/sh -c sleep 5 (code=exited, status=0/SUCCESS)
    Process: 19496 ExecStart=/bin/sh -c /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth1_virt_peer >> /tmp/ieee1905_agent_log.txt & (code=exited, status=0/SUCCESS)
   Main PID: 19497 (ieee1905)
      Tasks: 7 (limit: 4713)
     Memory: 18.8M
     CGroup: /system.slice/ieee1905_em_agent.service
             └─ 19497 /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth1_virt_peer
 
Notice: journal has been rotated since unit was started, output may be incomplete.
 

...

Ongoing

  • Golang support in RDK-B added
  • ongoing with latest cli in progress
    • Creating yocto recipe to compile cli go code from yocto
    • Will retest the crashes and update 

Next phase

  • Optimizing mariaDB - Target to keep size < 10 MB
  • Package Manager
  • Stripped onewifi for AP extender

Gateway specific steps

  • EasyMesh controller integration - On Going
  • Test with BPI R4 controller & RPI4 Agent - TBD
  • Test with with BPI R4 controller & BPI R4 agent - TBD

Extender specific steps

  • OSS image with SoC specific changes done
  • Integration of OneWifi on going
  • EasyMesh Agent - To start after Onewifi integration
  • Testing with RPI4 controller and BPI R4 Extender

Platform agnostic c++ coding

State machine

GoLang support for EM CLI

BPI-R4 build instruction 

Controller

Code Block
titleBuild
repo init -u https://code.rdkcentral.com/r/manifests -b kirkstone -m rdkb-bpi-extsrc.xml
repo sync -j`nproc` --no-clone-bundle
 
Please pick the below machine command based on your requirement
# to build the image with AL_SAP
MACHINE=bananapi4-rdk-broadband FEATURE_TYPE=EasyMesh  source meta-cmf-bananapi/setup-environment-refboard-rdkb
# to build the image without AL_SAP
MACHINE=bananapi4-rdk-broadband FEATURE_TYPE=EasyMesh WITHOUT_ALSAP=yes source meta-cmf-bananapi/setup-environment-refboard-rdkb
 
#to CP the below change for fynecli access for utopia component
https://github.com/rdkcentral/utopia/pull/47
 
bitbake rdk-generic-broadband-image

Extender

Code Block
languagebash
titleExt Build Instructions
repo init -u https://code.rdkcentral.com/r/manifests -b kirkstone -m rdkb-bpi-ap-extsrc.xml
repo sync -j4 --no-clone-bundle
 
Please pick the below machine command based on your requirement,
#to build the image with AL_SAP
MACHINE=bananapi4-rdk-broadband-ap-extender  source meta-cmf-bananapi/setup-environment-refboard-rdkb
#to build the image without AL_SAP
MACHINE=bananapi4-rdk-broadband-ap-extender FEATURE_TYPE=EasyMesh WITHOUT_ALSAP=yes source meta-cmf-bananapi/setup-environment-refboard-rdkb
 
bitbake rdk-generic-ap-extender-image

Test EM on BPI R4

BPI Controller

Please ensure below processes are running in ctrl.

Code Block
languagebash
titleprocess_status
collapsetrue
root@Filogic-GW:~# systemctl status ieee1905_em_ctrlagentieee1905_em_ctrlagent.service - ieee1905 EasyMesh ControllerAgent service
     Loaded: loaded (/lib/systemd/system/ieee1905_em_ctrlagent.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 20222025-0408-2807 1706:4315:3340 UTC; 3 years 3 months 17s ago
    Process: 4793476399 ExecStartPre=/bin/sh -c sleep 5 (code=exited, status=0/SUCCESS)
    Process: 4941 ExecStartPre=/bin/sh -c if [ ! -e "/sys/class/net/eth0_virt_peer/address" ]; then `/usr/ccsp/EasyMesh/setup_vethagent_for_empre.sh brlan0 eth0 true`; fi (code=exited, status=0/SUCCESS)
    Process: 4942476405 ExecStartExecStartPre=/bin/sh -c /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth0_virt_peer --sap-data-path /tmp/al_em_ctrl_data_socket --sap-control-path /tmp/al_em_ctrl_control_socketsleep 15 (code=exited, status=0/SUCCESS)
    Process: 482087 ExecStart=/bin/sh -c /usr/bin/onewifi_em_agent >> /tmp/ieee1905em_ctrl_agent.log.txt & (code=exited, status=0/SUCCESS)
   Main PID: 4943482089 (ieee1905onewifi_em_agen)
      Tasks: 78 (limit: 4713)
     Memory: 228.3M8M
     CGroup: /system.slice/ieee1905_em_ctrlagent.service
             └─ 4943482089 /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth0_virt_peer --sap-data-path /tmp/al_em_ctrl_data_socket --sap-control-path /tmp/al_em_ctrl_control_socket
 
Notice: journal has been rotated since unit was started, output may be incomplete.
 
 
onewifi_em_agent
 
2025 Aug 07 06:15:25 Filogic-GW systemd[1]: Starting EasyMesh Agent service...
2025 Aug 07 06:15:40 Filogic-GW systemd[1]: Started EasyMesh Agent service.


To run cli,

cd /usr/ccsp/EasyMesh
onewifi_em_cli bpi

Observation in EM-Controller device side:  

  • All configured VAPs should be UP and Running
  • VAPs should be broadcasting EasyMesh default SSIDs(eg, private_ssid, mesh_backhaul)
  • Logs files are generated under /tmp folder

Extender 1 + STAR Topology

1.Please ensure below processes are running in Ext1

Code Block
languagebash
titleprocess_status
collapsetrue
root@Filogic-GW:~# systemctl status em_ctrlonewifi
* em_ctrlonewifi.service - EasyMesh ControllerCosa service
     Loaded: loaded (8;;file://Filogic-GW/lib/systemd/system/em_ctrlonewifi.service/lib/systemd/system/onewifi.service8;;; enabled; vendor preset: enablede)
     Active: active (running) since Thu 20252022-0804-0728 0517:5443:2715 UTC; 20min3min 29s ago
    ProcessTriggeredBy: 18033 ExecStartPre=/bin/sh -c /usr/ccsp/EasyMesh/setup_mysql_db_pre.sh (code=exited, status=0/SUCCESS)* filogicwifiinitialized.path
    Process: 180381781 ExecStartExecStartPre=/bin/sh -c /usr/bin/onewifi_em_ctrl bpi\@root >> /tmp/em_ctrl.log &ccsp/wifi/onewifi_pre_start.sh (code=exited, status=0/SUCCESS)
    Process: 180402085 ExecStartPostExecStart=/usr/bin/shOneWifi -c /usr/ccsp/EasyMesh/setup_mysql_db_post.shsubsys $Subsys (code=exited, status=0/SUCCESS)
   Main PID: 180392086 (onewifi_em_ctrlOneWifi)
      Tasks: 1514 (limit: 4713)
     Memory: 18538.2M
     CGroup: /system.slice/em_ctrlonewifi.service
             `- 2086 /usr/bin/OneWifi -subsys eRT.
 
2022 Apr 28 17:42:48 Filogic-GW systemd[1]: Starting Cosa service...
2022 Apr 28 17:42:53 Filogic-GW UTOPIA[2086]: system.syscfg Shared memory file not found
2022 Apr 28 17:42:53 Filogic-GW UTOPIA[2086]: 2022-04-28  17:42:53., ../../../../git/source/syscfg/lib/syscfg_lib.c:466, Error initializing sy
2022 Apr 28 17:43:15 Filogic-GW systemd[1]: Started Cosa └─ 18039 /usr/bin/onewifi_em_ctrl bpi@root
 
Notice: journal has been rotated since unit was started, output may be incomplete.
root@Filogic-GW:~#
 service.
2022 Apr 28 17:44:01 Filogic-GW [OneWifi][2086]:   WiFi radio radio1 is set to UP

root@Filogic-GW:~# systemctl status ieee1905_em_agent
* ieee1905_em_agent.service - ieee1905 EasyMesh Remote Agent service
     Loaded: loaded (8;;file://Filogic-GW/lib/systemd/system/ieee1905_em_agent.service; enabled; vendor preset: enabled/lib/systemd/system/ieee1905_em_agent.service8;;; enabl)
     Active: active (running) since Thu 20252022-0804-0728 0517:5443:3135 UTC; 21min3min 16s ago
    Process: 49443284 ExecStartPre=/bin/sh -c if [ ! -e "/sys/class/net/eth1_virt_peer/address" ]; then `/usr/ccsp/EasyMesh/setup_vethext_for_empre.sh brlan0 eth1 false`;fi (code=exited, status=0/SUCCESS)
    Process: 49453303 ExecStartPre=/bin/sh -c whileif [ ! -e "/sys/class/tmpnet/wifi_initializedeth1_virt_peer/address" ]; && [ ! -e /tmp/wifi_dml_complete ] ;do sleep 1; done  (code=exited, status=0/SUCCESSthen `/usr/ccsp/EasyMesh/setup_veth_for_em.sh )
    Process: 176903304 ExecStartPre=/bin/sh -c sleep 5 (code=exited, status=0/SUCCESS)
    Process: 194963439 ExecStart=/bin/sh -c /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth1_virt_peer >> /tmp/ieee1905_agent_log.txt & (code=exited, status=0/SUCCESSie)
   Main PID: 194973440 (ieee1905)
      Tasks: 7 (limit: 4713)
     Memory: 1810.8M5M
     CGroup: /system.slice/ieee1905_em_agent.service
             └─`- 194973440 /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_observer=trace -i eth1_virt_peer
 
Notice: journal has been rotated since unit was started, output may be incompleteobserr
 
2022 Apr 28 17:43:30 Filogic-GW systemd[1]: Starting ieee1905 EasyMesh Remote Agent service...
2022 Apr 28 17:43:35 Filogic-GW systemd[1]: Started ieee1905 EasyMesh Remote Agent service.
 
root@Filogic-GW:~# systemctl status em_agent        
* em_agent.service - EasyMesh Agent service
     Loaded: loaded (8;;file://Filogic-GW/lib/systemd/system/em_agent.service/lib/systemd/system/em_agent.service8;;; enabled; vendor preset: enabled)
     Active: active (running) since Thu 20252022-0804-0728 0617:1544:4000 UTC; 17s ago 2min 57s ago
    Process: 3283 ExecStartPre=/bin/sh -c sleep 30 (code=exited, status=0/SUCCESS)
    Process: 4763993621 ExecStartPre=/bin/sh -c /usr/ccsp/EasyMesh/setup_agentext_pre.sh (code=exited, status=0/SUCCESS)
    Process: 4764053640 ExecStartPreExecStart=/bin/sh -c sleep 15 /usr/bin/onewifi_em_agent >> /tmp/em_agent.log & (code=exited, status=0/SUCCESS)
   Main PID: 3641 (onewifi_em_agen)
    Process: 482087 ExecStart=/bin/sh -c  Tasks: 9 (limit: 4713)
     Memory: 10.8M
     CGroup: /system.slice/em_agent.service
             `- 3641 /usr/bin/onewifi_em_agent >> /tmp/em_agent.log & (code=exited, status=0/SUCCESS)
   Main PID: 482089 (onewifi_em_agen)
      Tasks: 8 (limit: 4713)
     Memory: 8.8M
     CGroup: /system.slice/em_agent.service
             └─ 482089 /usr/bin/onewifi_em_agent
 
2025 Aug 07 06:15:25 Filogic-GW systemd[1]: Starting EasyMesh Agent service...
2025 Aug 07 06:15:40 Filogic-GW systemd[1]: Started EasyMesh Agent service.


To run cli,

...

2.Ensure mesh backhaul connectivity is established over 5G through wifi1.1 interface.

iw dev wifi1.3 info

3.Verify mesh backhaul connection in EM-Contrller side as well.

iw dev wifi1.1.sta<i> info
iw dev wifi1.1.sta<i> station dump ## This command gives information on connected client ie Extender1.

4. Wait for few minutes( for Agent to propagate SSID information from Controller to OneWifi in Extender1) and then check

  • Check all configured VAPs should be up and running with "iw dev" command
  • VAPs should be broadcasting default EasyMesh SSIDS (ie private_ssid, mesh_backhaul)
  • logs files are generated under /tmp folder

5. Test the connectivity to EM-Controller through backhaul

ping 10.0.0.1 -c 5

Test the connectivity with wireless clients.

Extender2 (For Daisy-Chain )

1. Ensure Extender 1 is running properly with configured vap's of FH and BH.

2. Make atleast 7 feet distance from Ext1 to Ext2 

3. Ensure  ieee1905_em_agent,onewifi_em_agent processes are running in Ext2

4. Ensure mesh backhaul connectivity is established over 5G through wifi1.1 interface.

iw dev wifi1.3 info

5. Verify mesh backhaul connection in Extender1 side as well.

iw dev wifi1.1.sta<i> info
iw dev wifi1.1.sta<i> station dump ## This command gives information on connected client ie Extender2.

6. Wait for few minutes( for Agent to propagate SSID information from Controller to OneWifi in Extender2) and then check

  • Check all configured VAPs should be up and running with "iw dev" command
  • VAPs should be broadcasting default EasyMesh SSIDS (ie private_ssid, mesh_backhaul)

7. Test the connectivity to EM-Controller through backhaul

ping 10.0.0.1 -c 5

Test the connectivity with wireless clients.


Sample logs

EM-Controller and EM-Agent success logs

...

Next phase

  • Optimizing mariaDB - Target to keep size < 10 MB

Platform agnostic c++ coding

State machine(WIP)

Child pages

...