Build steps for compilation on Raspberry Pi with Raspbian OS

Prerequisites

      1. Install the Raspian Pi OS from the “Raspberry Pi Imager” software. Select the Raspberry Pi Os (64-bit) image. 
      2. After installation below are additional packages to be installed for build, db and execution.

sudo apt-get update;
sudo apt-get upgrade;
sudo apt-get install vim;
sudo apt-get install libev-dev;
sudo apt-get install libjansson-dev;
sudo apt-get install zlib1g-dev;
sudo apt-get install libnl-3-dev;
sudo apt-get install libnl-genl-3-dev;
sudo apt-get install libnl-route-3-dev;
sudo apt-get install libavro-dev;
sudo apt-get install libcjson1 libcjson-dev;
sudo apt-get install libssl-dev;
sudo apt-get install uuid-dev;
sudo apt-get install libmysqlcppconn-dev; 
sudo apt-get install libreadline-dev;
sudo apt-get install iptables;
sudo apt install mariadb-server;

Build Instructions

    1.  In a working directory git clone the OneWifi in generic folder and unified-wifi-mesh repository

mkdir easymesh_project
cd easymesh_project
git clone https://github.com/rdkcentral/OneWifi.git
git clone https://github.com/rdkcentral/unified-wifi-mesh.git

    2.  Run the makefile of OneWifi with setup option to pull in other dependent repository. This is a one time operation.

cd OneWifi
make -f build/linux/makefile setup

    3.  Build the Onewifi with make command

make -f build/linux/makefile all

    4.   Build easymesh components in the unified-wifi-mesh folder

cd unified-wifi-mesh/build/ctrl
make clean; make all

cd unified-wifi-mesh/build/cli
make clean; make all

cd unified-wifi-mesh/build/agent
make clean; make all


Execution Steps

Prerequisites

OneWifi Related

sudo apt-get install bridge-utils

sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
sudo systemctl mask wpa_supplicant
sudo systemctl status wpa_supplicant 

#Enable brlan0 interface and configure ip address
sudo brctl addbr brlan0
sudo ip link set dev brlan0 up
sudo ip addr add 192.168.100.1/24 broadcast 192.168.100.255 dev brlan0

#IP tables command
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o brlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o brlan0 -j ACCEPT

#dnsmasq for DHCP in background or in a different terminal
sudo dnsmasq -i brlan0 -d --dhcp-range=192.168.100.2,192.168.100.200 &


DB Setup commands (On controller)

sudo mysql_secure_installation

#Login to MariaDB monitor
sudo mysql -u root -p

#In MariaDB console
create database OneWifiMesh;
use OneWifiMesh;
show tables;                        ==> should show no tables

#In a separate window run easy mesh ctrl with <username of db>@<password> to connect to DB.
sudo ./onewifi_em_ctrl root@root

#In a separate window run easy mesh cli and run reset command "reset eth0 pi4" as specified below to reset the database
sudo ./onewifi_em_cli
<<OneWifiMeshCli>>: reset eth0 pi4

#After this in MariaDB Console you if you run "show tables;" you will see 7 tables created with NetworkSSIDList and NetworkList tables Initialized.
# All other tables will be empty
MariaDB [OneWifiMesh]> show tables;
+-------------------------+
| Tables_in_OneWifiMesh   |
+-------------------------+
| BSSList                              |
| DeviceList                         |
| NetworkList                      |
| NetworkSSIDList              |
| OperatingClassList          |
| RadioList                           |
| STAList                              |
+------------------------+

Running instructions

sudo ./onewifi_em_ctrl root@root

sudo ./onewifi_em_cli

sudo ./OneWifi -c

sudo ./onewifi_em_agent

<<OneWifiMeshCli>>:get_device OneWifiMesh

<<OneWifiMeshCli>>:get_radio OneWifiMesh

<<OneWifiMeshCli>>:get_bss OneWifiMesh

<<OneWifiMeshCli>>:get_ssid OneWifiMesh