...
Code Block |
---|
language | bash |
---|
title | ctrl - build instructions |
---|
|
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 |
...
- 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
Build Instructions
Code Block |
---|
language | bash |
---|
title | Ext - Build Instructions |
---|
|
Prerequisites - One Time Process
- Delete the dnsmasq binary.
...
rm /usr/bin/dnsmasq
2. Remove default gw entry from routing table since WAN access will be through backhaul connection.
...
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 |
Extender 1 + STAR Topology
1.Please ensure below processes are running in Ext1
3. Copy below content to /nvram/EasymeshCfg.json file.
Code Block |
---|
language | bash |
---|
title | Extender1 EasymeshCfg.json |
---|
collapse | true |
---|
|
{
"AL_MAC_ADDR": "00:0c:43:26:60:1b",
"Colocated_mode": 0,
"Backhaul_SSID": "mesh_backhaul",
"Backhaul_KeyPassphrase": "test-backhaul",
"sta_4addr_mode_enabled": true
}
|
4. Copy below content to /nvram/InterfaceMap.json file.
Code Block |
---|
language | bash |
---|
title | Extender1 InterfaceMap.jsonExt1 - EM Process Status |
---|
collapse | true |
---|
|
{
"PhyList": [
root@Filogic-GW:~# systemctl status onewifi
* onewifi.service - Cosa service
Loaded: {
loaded (8;;file://Filogic-GW/lib/systemd/system/onewifi.service/lib/systemd/system/onewifi.service8;;; enabled; vendor preset: e)
"Index"Active: 0,
"RadioList": [
{
active (running) since Thu 2022-04-28 17:43:15 UTC; 3min 29s ago
TriggeredBy: * filogicwifiinitialized.path
Process: 1781 ExecStartPre=/bin/sh /usr/ccsp/wifi/onewifi_pre_start.sh (code=exited, status=0/SUCCESS)
Process: 2085 ExecStart=/usr/bin/OneWifi -subsys $Subsys (code=exited, status=0/SUCCESS)
Main PID: 2086 (OneWifi)
Tasks: 14 (limit: 4713)
"Index"Memory: 2,38.2M
CGroup: /system.slice/onewifi.service
"RadioName": "wifi2",
"InterfaceList": [
{
"InterfaceName": "wifi2",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 4,
"vapName": "private_ssid_6g"`- 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 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/lib/systemd/system/ieee1905_em_agent.service8;;; enabl)
Active: active (running) since Thu 2022-04-28 17:43:35 UTC; 3min 16s ago
Process: 3284 ExecStartPre=/bin/sh -c /usr/ccsp/EasyMesh/setup_ext_pre.sh (code=exited, status=0/SUCCESS)
Process: 3303 ExecStartPre=/bin/sh -c if [ ! -e "/sys/class/net/eth1_virt_peer/address" ]; then `/usr/ccsp/EasyMesh/setup_veth_for_em.sh )
Process: 3304 ExecStartPre=/bin/sh -c sleep 5 (code=exited, status=0/SUCCESS)
Process: 3439 ExecStart=/bin/sh -c /usr/bin/ieee1905 -f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ie)
Main PID: 3440 (ieee1905)
Tasks: 7 (limit: 4713)
Memory: 10.5M
CGroup: /system.slice/ieee1905_em_agent.service
`- 3440 /usr/bin/ieee1905 }
]
},
-f ieee1905::al_sap=trace,ieee1905::cmdu_handler=trace,ieee1905::cmdu_proxy=trace,ieee1905::cmdu_obserr
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; "Index": 1,vendor preset:)
Active: active (running) since Thu "RadioName": "wifi1",
"InterfaceList": [
{
"InterfaceName": "wifi1.1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 3,
"vapName": "mesh_sta_5g"
},
{
"InterfaceName": "wifi1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 2,
"vapName": "private_ssid_5g"
}
]
},
{
"Index": 0,
"RadioName": "wifi0",
"InterfaceList": [
{
"InterfaceName": "wifi0.1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 1,
"vapName": "mesh_backhaul_2g"
},
{
"InterfaceName": "wifi0",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 0,
"vapName": "private_ssid_2g"
}
]
}
]
}
]
} |
5. Copy below content to /usr/ccsp/wifi/onewifi_pre_script.sh.
Code Block |
---|
language | bash |
---|
title | Extender1 onewifi_pre_script.sh |
---|
collapse | true |
---|
|
#!/bin/sh
sleep 5
iw phy phy0 interface add wifi0 type __ap
iw phy phy0 interface add wifi0.1 type __ap
iw phy phy0 interface add wifi1 type __ap
iw phy phy0 interface add wifi2 type __ap
iw phy phy0 interface add wifi1.1 type __ap
#Obtain the wifi0 mac address
wifi_mac="$(cat /sys/class/ieee80211/phy0/macaddress)"
#Strip the : and increment mac by 1 to get wifi1 macaddress
mac=$(echo $wifi_mac | tr -d ':')
mac_incr=$((0x$mac + 8))
wifi0_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#Increment again by 1 to get wifi2 address
mac_incr=$(($mac_incr + 1))
wifi0_1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#Increment again by 1 to get wifi2 address
mac_incr=$(($mac_incr + 1))
wifi1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi1_1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi2_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#print the mac address
echo $wifi0_mac
echo $wifi1_mac
echo $wifi2_mac
#Update the mac address using ip link command
ifconfig wifi0 down
ifconfig wifi0.1 down
ifconfig wifi1 down
ifconfig wifi1.1 down
ifconfig wifi2 down
ip link set dev wifi0 address $wifi0_mac
ip link set dev wifi0.1 address $wifi0_1_mac
ip link set dev wifi1 address $wifi1_mac
ip link set dev wifi1.1 address $wifi1_1_mac
ip link set dev wifi2 address $wifi2_mac
ifconfig wifi0 up
ifconfig wifi1 up
ifconfig wifi1.1 up
ifconfig wifi2 up
exit 0 |
6. Disable the below services
...
systemctl disable ieee1905_em_ctrl.service
systemctl disable em_ctrl
7. copy below contents to /lib/systemd/system/ieee1905_em_agent.service
Code Block |
---|
language | bash |
---|
title | ieee1905_em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=ieee1905 EasyMesh Remote Agent service
After=onewifi.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
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'
ExecStartPre=/bin/sh -c 'sleep 5'
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 &'
Restart=always
[Install]
WantedBy=multi-user.target |
8. copy below contents to /lib/systemd/system/em_agent.service
Code Block |
---|
language | bash |
---|
title | em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=EasyMesh Agent service
After=onewifi.service ieee1905_em_agent.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
ExecStartPre=/bin/sh -c 'sleep 30'
ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
ExecStart=/bin/sh -c '/usr/bin/onewifi_em_agent >> /tmp/em_agent.log &'
Restart=always
[Install]
WantedBy=multi-user.target |
9. copy below contents to /usr/ccsp/EasyMesh/setup_ext_pre.sh and file permission should be 755
Code Block |
---|
language | bash |
---|
title | setup_ext_pre |
---|
collapse | true |
---|
|
#!/bin/sh
#Ensure onewifi is up and running
while [ ! -e /tmp/wifi_initialized ] && [ ! -e /tmp/wifi_dml_complete ] ;
do
sleep 1;
done
#Ensure backhaul connectivity is established
al_mac_addr=`cat /nvram/EasymeshCfg.json | grep AL_MAC_ADDR | cut -d '"' -f4`
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
while [ "$channel_exists" != 1 ] && [ "$ssid_exists" != 1 ] ;
do
sleep 1;
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
done
|
10. Reboot the device
After reboot,
11.Ensure mesh backhaul connectivity is established over 5G through wifi1.1 interface.
...
iw dev wifi1.1 info
12. 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
13. 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)
14. Set static IP for brlan0 interface in Extender1
Code Block |
---|
|
ifconfig brlan0 10.0.0.215 netmask 255.255.255.0 up |
15. Test the connectivity to EM-Controller through backhaul
Code Block |
---|
|
ping 10.0.0.1 -c 5 |
Extender2 (For Daisy-Chain topology)
Prerequisites - One Time Process
- Delete the dnsmasq binary.
Code Block |
---|
|
rm /usr/bin/dnsmasq |
2. Remove default gw entry from routing table since WAN access will be through backhaul connection.
Code Block |
---|
|
route del default gw |
3. Copy below content to /nvram/EasymeshCfg.json file.
Code Block |
---|
language | bash |
---|
title | Extender2 EasymeshCfg.json |
---|
collapse | true |
---|
|
{
"AL_MAC_ADDR": "00:0c:43:26:60:21",
"Colocated_mode": 0,
"Backhaul_SSID": "mesh_backhaul",
"Backhaul_KeyPassphrase": "test-backhaul",
"sta_4addr_mode_enabled": true
} |
4. Copy below content to /nvram/InterfaceMap.json file.
Code Block |
---|
language | bash |
---|
title | Extender2 InterfaceMap.json |
---|
collapse | true |
---|
|
{
"PhyList": [
{
"Index": 0,
"RadioList": [
{
"Index": 2,
"RadioName": "wifi2",
"InterfaceList": [
{
"InterfaceName": "wifi2",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 3,
"vapName": "private_ssid_6g"
}
]
},
{
"Index": 1,
"RadioName": "wifi1",
"InterfaceList": [
{
"InterfaceName": "wifi1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 2,
"vapName": "private_ssid_5g"
}
]
},
{
"Index": 0,
"RadioName": "wifi0",
"InterfaceList": [
{
"InterfaceName": "wifi0.1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 1,
"vapName": "mesh_sta_2g"
},
{
"InterfaceName": "wifi0",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 0,
"vapName": "private_ssid_2g"
}
]
}
]
}
]
} |
5. Copy below content to /usr/ccsp/wifi/onewifi_pre_script.sh.
Code Block |
---|
language | bash |
---|
title | Extender2 onewifi_pre_script.sh |
---|
collapse | true |
---|
|
#!/bin/sh
sleep 5
#To update al_mac_addr in EasyMeshCfg.json to avoid onewifi restarting during fresh boot-up
#wan_mac="$(cat /sys/class/ieee80211/phy0/macaddress)"
#old_al_mac_addr=`cat /nvram/EasymeshCfg.json | grep AL_MAC_ADDR | cut -d '"' -f4`
#if [ "$old_al_mac_addr" == "00:00:00:00:00:00" ]; then
# sed -i "s/$old_al_mac_addr/$wan_mac/g" /nvram/EasymeshCfg.json
#fi
iw phy phy0 interface add wifi0 type __ap
iw phy phy0 interface add wifi0.1 type __ap
iw phy phy0 interface add wifi1 type __ap
iw phy phy0 interface add wifi2 type __ap
#Obtain the wifi0 mac address
wifi_mac="$(cat /sys/class/ieee80211/phy0/macaddress)"
#Strip the : and increment mac by 1 to get wifi1 macaddress
mac=$(echo $wifi_mac | tr -d ':')
mac_incr=$((0x$mac + 16))
wifi0_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi0_1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#Increment again by 1 to get wifi2 address
mac_incr=$(($mac_incr + 1))
wifi2_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#print the mac address
echo $wifi0_mac
echo $wifi0_1_mac
echo $wifi1_mac
echo $wifi2_mac
#Update the mac address using ip link command
ifconfig wifi0 down
ifconfig wifi0.1 down
ifconfig wifi1 down
ifconfig wifi2 down
ip link set dev wifi0 address $wifi0_mac
ip link set dev wifi0.1 address $wifi0_1_mac
ip link set dev wifi1 address $wifi1_mac
ip link set dev wifi2 address $wifi2_mac
ifconfig wifi0 up
ifconfig wifi1 up
ifconfig wifi2 up
exit 0 |
6. Disable the below services
Code Block |
---|
|
systemctl disable ieee1905_em_ctrl.service
systemctl disable em_ctrl |
7. copy below contents to /lib/systemd/system/ieee1905_em_agent.service
Code Block |
---|
language | bash |
---|
title | Ext2 ieee1905_em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=ieee1905 EasyMesh Remote Agent service
After=onewifi.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
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'
ExecStartPre=/bin/sh -c 'sleep 5'
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 &'
Restart=always
[Install]
WantedBy=multi-user.target |
8.copy below contents to /lib/systemd/system/em_agent.service
Code Block |
---|
language | bash |
---|
title | Ext2 em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=EasyMesh Agent service
After=onewifi.service ieee1905_em_agent.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
ExecStartPre=/bin/sh -c 'sleep 30'
ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
ExecStart=/bin/sh -c '/usr/bin/onewifi_em_agent >> /tmp/em_agent.log &'
Restart=always
[Install]
WantedBy=multi-user.target |
9. copy below contents to /usr/ccsp/EasyMesh/setup_ext_pre.sh and file permission should be 755
Code Block |
---|
language | bash |
---|
title | Ext2 setup_ext_pre |
---|
collapse | true |
---|
|
#!/bin/sh
#Ensure onewifi is up and running
while [ ! -e /tmp/wifi_initialized ] && [ ! -e /tmp/wifi_dml_complete ] ;
do
sleep 1;
done
#Ensure backhaul connectivity is established
al_mac_addr=`cat /nvram/EasymeshCfg.json | grep AL_MAC_ADDR | cut -d '"' -f4`
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
while [ "$channel_exists" != 1 ] && [ "$ssid_exists" != 1 ] ;
do
sleep 1;
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
done |
10. Reboot the device
After reboot,
11. Ensure mesh backhaul connectivity is established over 2.4G through wifi0.1 interface.
Code Block |
---|
|
iw dev wifi0.1 info |
12. Verify mesh backhaul connection in Extender1 side as well.
Code Block |
---|
|
iw dev wifi0.1.sta<i> info
iw dev wifi0.1.sta<i> station dump ## This command gives information on connected client ie Extender2. |
13. 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)
14. Set static IP for brlan0 interface in Extender2
Code Block |
---|
|
ifconfig brlan0 10.0.0.210 netmask 255.255.255.0 up |
15. Test the connectivity to EM-Controller through backhaul
Code Block |
---|
|
ping 10.0.0.1 -c 5 |
Test the connectivity with wireless clients.
Extender2 (For Star Topology)
Prerequisites - One Time Process
- Delete the dnsmasq binary.
Code Block |
---|
|
rm /usr/bin/dnsmasq |
2. Remove default gw entry from routing table since WAN access will be through backhaul connection.
Code Block |
---|
|
route del default gw |
3. Copy below content to /nvram/EasymeshCfg.json file.
Code Block |
---|
language | bash |
---|
title | Extender2 EasymeshCfg.json |
---|
collapse | true |
---|
|
{
"AL_MAC_ADDR": "00:0c:43:26:60:2a",
"Colocated_mode": 0,
"Backhaul_SSID": "mesh_backhaul",
"Backhaul_KeyPassphrase": "test-backhaul",
"sta_4addr_mode_enabled": true
} |
4. Copy below content to /nvram/InterfaceMap.json file.
Code Block |
---|
language | bash |
---|
title | Extender2 InterfaceMap.json |
---|
collapse | true |
---|
|
{
"PhyList": [
{
"Index": 0,
"RadioList": [
{
"Index": 2,
"RadioName": "wifi2",
"InterfaceList": [
{
"InterfaceName": "wifi2",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 3,
"vapName": "private_ssid_6g"
}
]
},
{
"Index": 1,
"RadioName": "wifi1",
"InterfaceList": [
{
"InterfaceName": "wifi1.1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 2,
"vapName": "mesh_sta_5g"
},
{
"InterfaceName": "wifi1",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 1,
"vapName": "private_ssid_5g"
}
]
},
{
"Index": 0,
"RadioName": "wifi0",
"InterfaceList": [
{
"InterfaceName": "wifi0",
"Bridge": "brlan0",
"vlanId": 0,
"vapIndex": 0,
"vapName": "private_ssid_2g"
}
]
}
]
}
]
} |
5. Copy below content to /usr/ccsp/wifi/onewifi_pre_script.sh.
Code Block |
---|
language | bash |
---|
title | Extender2 onewifi_pre_script.sh |
---|
collapse | true |
---|
|
#!/bin/sh
sleep 5
iw phy phy0 interface add wifi0 type __ap
iw phy phy0 interface add wifi1 type __ap
iw phy phy0 interface add wifi2 type __ap
iw phy phy0 interface add wifi1.1 type __ap
#Obtain the wifi0 mac address
wifi_mac="$(cat /sys/class/ieee80211/phy0/macaddress)"
#Strip the : and increment mac by 1 to get wifi1 macaddress
mac=$(echo $wifi_mac | tr -d ':')
mac_incr=$((0x$mac + 24))
wifi0_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#Increment again by 1 to get wifi2 address
mac_incr=$(($mac_incr + 1))
wifi1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi1_1_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
mac_incr=$(($mac_incr + 1))
wifi2_mac=$(printf "%012x" $mac_incr | sed 's/../&:/g;s/:$//')
#print the mac address
echo $wifi0_mac
echo $wifi1_mac
echo $wifi2_mac
#Update the mac address using ip link command
ifconfig wifi0 down
ifconfig wifi1 down
ifconfig wifi1.1 down
ifconfig wifi2 down
ip link set dev wifi0 address $wifi0_mac
ip link set dev wifi1 address $wifi1_mac
ip link set dev wifi1.1 address $wifi1_1_mac
ip link set dev wifi2 address $wifi2_mac
ifconfig wifi0 up
ifconfig wifi1 up
ifconfig wifi1.1 up
ifconfig wifi2 up
exit 0 |
6. disable the below services
Code Block |
---|
|
systemctl disable ieee1905_em_ctrl.service
systemctl disable em_ctrl |
7. copy below contents to /lib/systemd/system/ieee1905_em_agent.service
Code Block |
---|
language | bash |
---|
title | Ext2 ieee1905_em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=ieee1905 EasyMesh Remote Agent service
After=onewifi.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
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'
ExecStartPre=/bin/sh -c 'sleep 5'
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 &'
Restart=always
[Install]
WantedBy=multi-user.target |
8.copy below contents to /lib/systemd/system/em_agent.service
Code Block |
---|
language | bash |
---|
title | Ext2 em_agent |
---|
collapse | true |
---|
|
[Unit]
Description=EasyMesh Agent service
After=onewifi.service ieee1905_em_agent.service
[Service]
Type=forking
WorkingDirectory=/usr/ccsp/EasyMesh
2022-04-28 17:44:00 UTC; 2min 57s ago
Process: 3283 ExecStartPre=/bin/sh -c 'sleep 30'
(code=exited, status=0/SUCCESS)
Process: 3621 ExecStartPre=/bin/sh -c '/usr/ccsp/EasyMesh/setup_ext_pre.sh'
(code=exited, status=0/SUCCESS)
Process: 3640 ExecStart=/bin/sh -c '/usr/bin/onewifi_em_agent >> /tmp/em_agent.log &'
Restart=always
[Install]
WantedBy=multi-user.target |
9. copy below contents to /usr/ccsp/EasyMesh/setup_ext_pre.sh and file permission should be 755
Code Block |
---|
language | bash |
---|
title | Ext2 setup_ext_pre |
---|
collapse | true |
---|
|
#!/bin/sh
#Ensure onewifi is up and running
while [ ! -e /tmp/wifi_initialized ] && [ ! -e /tmp/wifi_dml_complete ] ;
do
sleep 1;
done
#Ensure backhaul connectivity is established
al_mac_addr=`cat /nvram/EasymeshCfg.json | grep AL_MAC_ADDR | cut -d '"' -f4`
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
while [ "$channel_exists" != 1 ] && [ "$ssid_exists" != 1 ] ;
do
sleep 1;
channel_exists=`iw dev | grep $al_mac_addr -A 4 | grep channel | wc -l`
ssid_exists=`iw dev | grep $al_mac_addr -A 4 | grep ssid | wc -l`
done |
10. Reboot the device
.log & (code=exited, status=0/SUCCESS)
Main PID: 3641 (onewifi_em_agen)
Tasks: 9 (limit: 4713)
Memory: 10.8M
CGroup: /system.slice/em_agent.service
`- 3641 /usr/bin/onewifi_em_agent
|
2.Ensure mesh backhaul connectivity is established over 5G through wifi1.1 interface.
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
|
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
Code Block |
---|
|
ping 10.0.0.1 -c 5 |
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
411. Ensure mesh backhaul connectivity is established over 5G through wifi1.1 interface.
Code Block |
---|
|
iw dev wifi1.13 info |
125. Verify mesh backhaul connection in EM-Controller Extender1 side as well.
Code Block |
---|
|
iw dev wifi1.1.sta<i> info
iw dev wifi1.1.sta<i> station dump ## This command gives information on connected client ie Extender2. |
136. 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)
14. Set static IP for brlan0 interface in Extender2
Code Block |
---|
|
ifconfig brlan0 10.0.0.205 netmask 255.255.255.0 up |
157. Test the connectivity to EM-Controller through backhaul
...