Build steps for compilation on Raspberry Pi with Raspbian OS
Prerequisites
- Install the Raspian Pi OS from the “Raspberry Pi Imager” software. Select the Raspberry Pi Os (64-bit) image.
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-easy-mesh folder
cd unified-easy-mesh/build/ctrl
make all
cd unified-easy-mesh/build/cli
make all
cd unified-easy-mesh/build/agent
make all
Execution Steps
Prerequisites
OneWifi Related
sudo apt-get install bridge-utils
- Mask running of wpa_supplicant with below commands and ensure that wpa_supplicant is not running after these steps using ps command.
sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
sudo systemctl mask wpa_supplicant
sudo systemctl status wpa_supplicant
- Configure brlan0 interface, IP Tables, DHCP
#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)
- Setup mysql database one time running below command. Choose "n" for Remove anonymous users and Remove test database.
sudo mysql_secure_installation
- Setup "OneWifiMesh" database with the below commands
#Login to MariaDB monitor
sudo mysql -u root -p
#In MariaDB console
create database OneWifiMesh;
use OneWifiMesh;
show tables; ==> should show no tables
- Reset database and check tables are created
#In a separate window run easy mesh ctrl with <username of db>@<password> to connect to DB.
sudo ./one_wifi_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 ./one_wifi_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
- Device 1 - Run Easy mesh Controller and cli in separate windows.
sudo ./one_wifi_em_ctrl root@root
sudo ./one_wifi_em_cli
- Device 2 - Run OneWifi first in a separate window and then run easy mesh agent
sudo ./OneWifi -c
sudo ./one_wifi_em_agent
- Check Below commands on cli window to see Agent configured
<<OneWifiMeshCli>>:get_device OneWifiMesh
<<OneWifiMeshCli>>:get_radio OneWifiMesh
<<OneWifiMeshCli>>:get_bss OneWifiMesh
<<OneWifiMeshCli>>:get_ssid OneWifiMesh
- Check on the Agent that it is beaconing with the configured SSID
6 Comments
Mincheol Seo
Chandrakanth Pokuru , Thanks for providing a building guide. Do we have any pages for a running guide?
Benjamin Carlson
Mincheol Seo It seems to be on the GitHub repo: https://github.com/rdkcentral/unified-wifi-mesh/blob/main/docs/UnifiedWifiMesh.pdf
Chandrakanth Pokuru
Hello Mincheol Seo and Benjamin Carlson ,We will walk through the runtime in our coming working group calls
Amarnath Hullur Subramanyam
Hello Mincheol Seo Benjamin Carlson et al,
I have updated Execution steps in this page and will go over this in the working group call as a demo on Nov-7th.
Mincheol Seo
Amarnath Hullur Subramanyam , Thanks for providing the demo and guide for the execution steps today. I will try it and provide feedback.
Amarnath Hullur Subramanyam
Mincheol Seo , Most welcome. I did some minor edits with regards to the command. Please check that when you are executing.