前言:
高通支持Wi-Fi EasyMesh功能。将装置分为CAP以及RE两个角色。透过IEEE 1905协议,彼此交互传递讯息。随著WiFi6、WiFi7规格的进程,EasyMesh也需要对6G Band以及MLO等功能进行支持。初始设定也有些许的修改。列出Miami-RDP468/RDP441 MLO[BH: 5+6; FH: 5+6] 的设定供大家参考。
范例 CAP:
/usr/sbin/wifimeshconfig map
sleep 5
uci set wireless.qcawifi=qcawifi
uci set wireless.qcawifi.samessid_disable=1
uci set wireless.qcawifi.ema_ap_support_wps_in_6ghz=1
uci set wireless.qcawifi.ema_ap_vendor_ie_size_low=0x55556666
uci set wireless.qcawifi.ema_ap_vendor_ie_size_high=0x55555555
#uci set wireless.qcawifi.enable_6ghz_sp_pwrmode_supp=1
#uci set wireless.qcawifi.afc_reg_no_action=1
uci set wireless.wifi2.band='3'
uci commit wireless
wifi load
sleep 5
uci set network.lan.ipaddr='192.168.1.201'
uci set network.lan.netmask='255.255.255.0'
uci set network.lan.multicast_querier=1
uci set network.lan.igmp_snooping=1
uci commit network
/etc/init.d/network restart
/etc/init.d/dnsmasq restart
sleep 2
uci set wireless.wifi0.htmode=EHT40+
uci set wireless.wifi1.htmode=EHT320
uci set wireless.wifi2.htmode=EHT320
uci set wireless.wifi0.repacd_create_ctrl_fbss=1
uci set wireless.wifi0.repacd_create_ctrl_bbss=1
uci set wireless.wifi1.repacd_create_ctrl_fbss=1
uci set wireless.wifi1.repacd_create_ctrl_bbss=1
uci set wireless.wifi2.repacd_create_ctrl_fbss=1
uci set wireless.wifi2.repacd_create_ctrl_bbss=1
uci set wireless.wifi1.mloenabled=1
uci set wireless.wifi2.mloenabled=1
#uci set wireless.wifi2.regdomain='0x90000'
#uci set wireless.wifi2.dcs_afc_random_chan_en=1
uci commit wireless
uci set ezmesh.MultiAP.EnableChannelSelection=1
uci set ezmesh.MultiAP.BkScanIntervalMin=0
uci set ezmesh.MultiAP.ChannelSelectionDelaySec=360
uci set ezmesh.MultiAP.ChannelSelectionOnGlobalPref=0
uci set ezmesh.MultiAP.UseCBSRankForHomeChan='1'
uci set ezmesh.MultiAP.EnableChanPrefQuery=0
uci set ezmesh.MultiAP.UseCACResultForChanSelection=1
uci set ezmesh.MultiAP.EnableTopologyOpt=1
uci set ezmesh.MultiAP.TopologyOptMinIncreasePercentage='5'
uci set ezmesh.MultiAP.TopologyOptMaxIdleWaitSecs='450'
uci set ezmesh.Monitor.DisableSteeringMax11kUnfriendlyClients='0'
uci set ezmesh.MultiAP.ControllerChanSelection320MHz='1'
uci set ezmesh.MultiAP.ControllerChanSelection240MHz='1'
uci set ezmesh.MultiAP.ControllerChanSelection160MHz='1'
uci set ezmesh.MultiAP.ControllerChanSelection40MHzOn2G='1'
uci set ezmesh.MultiAP.AgentChanSelection320MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection240MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection160MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection40MHzOn2G='1'
uci set ezmesh.MultiAP.EnableTopologyOptBstaMetricsAveraging='1'
uci set ezmesh.MultiAP.EnableLastTxRateStatsAveraging='1'
uci commit ezmesh
uci set ezlbd.APSteer.DisableSteering11kUnfriendlyClients='0'
uci set ezlbd.APSteer.DisableMonitoringLegacyClients='0'
uci set ezlbd.APSteer.DisableSteeringInactiveLegacyClients='0'
uci set ezlbd.APSteer.DisableSteeringActiveLegacyClients='0'
uci set ezlbd.IAS.MaxPollutionTime='150'
uci set ezlbd.SteerExec.SteeringProhibitTime='60'
uci set ezlbd.Estimator_Adv.11kProhibitTimeLong='60'
uci set ezlbd.APSteer.LowRSSIAPSteerThreshold_SIG='35'
uci set ezlbd.APSteer.APSteerMaxRetryCount='120'
uci set ezlbd.config.InactDetectionFromTx='1'
uci set ezlbd.StaDB.MarkAdvClientAsDualBand=1
uci set ezlbd.SteerExec_Adv.StartInBTMActiveState=1
uci set ezlbd.Estimator_Adv.EnableRcpiTypeClassification=0
uci set ezlbd.StaDB.EnableBSSMetricAveragingForMLO='1'
uci set ezlbd.config.EnableMulti11kRequest=1
uci set ezlbd.Estimator_Adv.Delayed11kRequesttimer='1'
uci set ezlbd.config_Adv.AgeLimit=10
uci set ezlbd.config.PreferredSteeringBand=2
uci commit ezlbd
uci set repacd.repacd.Enable=1
uci set repacd.repacd.ConfigREMode='son'
uci set repacd.MAPConfig.Enable=1
uci set repacd.repacd.Ezmesh='1'
uci set repacd.repacd.Ezmesh6GEnable='1'
uci set repacd.MAPConfig.FirstConfigRequired=1
uci set repacd.MAPConfig.BSSInstantiationTemplate='scheme-d.conf'
uci set repacd.MAPConfig.FronthaulAuthType=1
uci set repacd.MAPConfig.FronthaulAuthTypeNwOne=1
uci set repacd.MAPConfig.FronthaulAuthTypeNwTwo=1
uci set repacd.MAPConfig.FronthaulAuthTypeNwThree=1
uci set repacd.MAPConfig.BackhaulAuthType=1
uci set repacd.MAPConfig.MapVersionEnabled=2
uci set repacd.MAPConfig.MapTrafficSeparationEnable=1
uci set repacd.MAPConfig.NumberOfVLANSupported=3
uci set repacd.MAPConfig.FronthaulSSID='MLO-BK-fbss'
uci set repacd.MAPConfig.FronthaulKey='map-fbss'
uci set repacd.MAPConfig.FronthaulSSIDNwOne='MLO-BK-fbss-one'
uci set repacd.MAPConfig.FronthaulKeyNwOne='map-fbss-one'
uci set repacd.MAPConfig.FronthaulSSIDNwTwo='MLO-BK-fbss-Two'
uci set repacd.MAPConfig.FronthaulKeyNwTwo='map-fbss-Two'
uci set repacd.MAPConfig.BackhaulSSID='MLO-BK-bbss'
uci set repacd.MAPConfig.BackhaulKey='map-bbss'
uci set repacd.MAPConfig.EnableSmartMonitorMode=1
uci set repacd.MAPConfig.BridgeProtoNwOne='static'
uci set repacd.MAPConfig.BridgeIPAddressNwOne='192.168.2.201'
uci set repacd.MAPConfig.BridgeProtoNwTwo='static'
uci set repacd.MAPConfig.BridgeIPAddressNwTwo='192.168.3.201'
uci set repacd.MAPConfig.MLDConfig="mld0:5G 6G,mld1:5G 6G"
uci set repacd.MAPConfig.FronthaulMld='mld1'
uci set repacd.MAPConfig.BackhaulMld='mld0'
uci set repacd.MAPConfig.EnableMLO='1'
uci set repacd.MAPConfig.R1AgentAssocDisAllowed=1
uci set repacd.MAPConfig.R2AgentAssocDisAllowed=0
uci set repacd.MAPConfig.CombinedR1R2Backhaul=0
uci set repacd.MAPConfig.VlanIDNwPrimary=10
uci set repacd.MAPConfig.VlanIDNwOne=20
uci set repacd.MAPConfig.VlanIDNwTwo=30
uci set repacd.MAPConfig.TSUseSameBridgeMAC='0'
#uci set repacd.MAPConfig.AdditionalFH="New_fbss1:11111111:1,New_fbss2:22222222:1,New_fbss3:33333333:0"
uci set repacd.MAPConfig.MapFastOnboarding=1
uci set repacd.MAPConfig.EnableSLO='1'
uci set repacd.MAPConfig.mld_mac_addr="00:2A:F5:22:14:31"
uci set repacd.MAPConfig.EnableSingleNetdev='1'
uci commit repacd
uci set wsplcd.config.EnableMLO=1
uci set wsplcd.config.MapMaxBss=8
uci set wsplcd.config.EnableSLO=1
uci commit wsplcd
uci commit
/etc/init.d/repacd start
范例RE:
/usr/sbin/wifimeshconfig map
sleep 5
uci set wireless.wifi2.band='3'
uci set wireless.qcawifi=qcawifi
uci set wireless.qcawifi.samessid_disable=1
uci set wireless.qcawifi.ema_ap_support_wps_in_6ghz=1
uci set wireless.qcawifi.ema_ap_vendor_ie_size_low=0x55556666
uci set wireless.qcawifi.ema_ap_vendor_ie_size_high=0x55555555
uci commit wireless
wifi load
sleep 5
uci set dhcp.lan.ignore=1
uci delete dhcp.lan1
uci set dhcp.lan1=dhcp
uci set dhcp.lan1.ignore=1
uci delete dhcp.lan2
uci set dhcp.lan2=dhcp
uci set dhcp.lan2.ignore=1
uci commit dhcp
uci set network.lan.proto=dhcp
uci delete network.wan;
uci commit network
/etc/init.d/network restart
/etc/init.d/firewall restart
/etc/init.d/dnsmasq restart
sleep 5
uci set wireless.wifi1.repacd_map_bsta_preference=1
uci set wireless.wifi0.repacd_map_bsta_preference=2
uci set wireless.wifi2.repacd_map_bsta_preference=3
uci set wireless.wifi0.repacd_create_ctrl_fbss=1
uci set wireless.wifi1.repacd_create_ctrl_fbss=1
uci set wireless.wifi2.repacd_create_ctrl_fbss=1
uci set wireless.wifi1.mloenabled=1
uci set wireless.wifi2.mloenabled=1
uci set wireless.wifi0.htmode=EHT40+
uci set wireless.wifi1.htmode=EHT320
uci set wireless.wifi2.htmode=EHT320
uci set wireless.wifi2.channel=117
uci commit wireless
uci set ezmesh.MultiAP.EnableChannelSelection=1
uci set ezmesh.MultiAP.EnableTopologyOpt=1
uci set ezmesh.MultiAP.TopologyOptMinIncreasePercentage='5'
uci set ezmesh.MultiAP.AgentChanSelection320MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection240MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection160MHz='1'
uci set ezmesh.MultiAP.AgentChanSelection40MHzOn2G='1'
uci commit ezmesh
uci set ezlbd.APSteer.DisableMonitoringLegacyClients='0'
uci set ezlbd.APSteer.DisableSteeringInactiveLegacyClients='0'
uci set ezlbd.APSteer.DisableSteeringActiveLegacyClients='0'
uci set ezlbd.StaDB.MarkAdvClientAsDualBand=1
uci set ezlbd.SteerExec_Adv.StartInBTMActiveState=1
uci set ezlbd.StaDB.EnableBSSMetricAveragingForMLO='1'
uci set repacd.repacd.Enable=1
uci set repacd.repacd.ConfigREMode='son'
uci set repacd.MAPConfig.FirstConfigRequired=1
uci set repacd.MAPConfig.Enable=1
uci set repacd.MAPConfig.MapVersionEnabled=2
uci set repacd.MAPConfig.MapTrafficSeparationEnable=1
uci set repacd.MAPConfig.NumberOfVLANSupported=3
uci set repacd.MAPConfig.EnableSmartMonitorMode=1
uci set repacd.MAPConfig.EnableMapTSLogs=1
uci set repacd.MAPConfig.TSUseSameBridgeMAC='0'
uci set repacd.MAPConfig.MapFastOnboarding=1
uci set repacd.MAPConfig.StartWithHighestPrefSTA=1
uci set repacd.MAPConfig.EnableMLO='1'
uci set repacd.repacd.Ezmesh='1'
uci set repacd.repacd.Ezmesh6GEnable='1'
uci set repacd.MAPConfig.EnableSingleNetdev='1'
uci set repacd.MAPConfig.EnableSLO='1'
uci set repacd.MAPConfig.mld_mac_addr="00:3A:F5:62:24:31"
uci commit repacd
uci set wsplcd.config.MapMaxBss=8
uci set wsplcd.config.EnableMLO=1
uci set wsplcd.config.EnableSLO=1
uci commit wsplcd
uci commit
/etc/init.d/repacd start
Onboarding :
使用WPS功能做Onboarding。 直接按WPS button或用WPS command模拟按WPS button的动作
==============
env -i ACTION="pressed" BUTTON="wps" /sbin/hotplug-call button; sleep 1; env -i ACTION="released" BUTTON="wps" /sbin/hotplug-call button
解析:
- 首先使用/usr/sbin/wifimeshconfig map 指令,将程式集链结到mesh。
- 设定network。 CAP是路由器,RE是Repeater
- 设定wireless。确保6G band可以使用
uci set wireless.qcawifi.ema_ap_support_wps_in_6ghz=1
uci set wireless.wifi2.band='3'
使用mlo的界面
uci set wireless.wifi1.mloenabled=1
uci set wireless.wifi2.mloenabled=1
- 设定ezmesh,基本都是预设值,不需要更改
- 设定ezlbd﹑,基本都是预设值,不需要更改
- 设定repacd, repacd是最主要的启动程序。会自动去修改wireless中的设定,比如ssid, password等等。
- 设定wpslcd,这个设定是针对clone行为的参数,所以BSS的数量很重要要特别设定 uci set wsplcd.config.MapMaxBss=8
- 最后/etc/init.d/repacd start 用来当作mesh的entry point。进行一系列的设定跟初始化。
结论:
高通Wi-Fi EasyMesh,透过repacd来实现自动设定。在uci中做一些关键性的设定。脚本会自行对wireless区动作设置,虽然uci的设定看起来很复杂,但是执行起来也是很直观的。毕竟高通已经提供了相当完整的脚本应用。
提问:
1.使用mesh与不使用mesh的差异?
Ans: 使用mesh的时候 wireless会被repacd脚本做重新配置,所以不可以自己去建立uci wireless 的内容。
2.为什么要执行/usr/sbin/wifimeshconfig map?
Ans: 过去高通有SON的功能,使用的hyd等程式相对于ezmesh是相同的功能。这个指令就是做SON, MAP的切换。
3.Wi-Fi 6G的使用一定要启动MLO吗?
Ans: MLO是WiFi 7的规格之一,高通的Easymesh同样可以支持WiFi 6E 所以MLO并不是一定要启动的。
4.ezmsh、wsplcd、ezlbd这些程式的功能?
Ans: ezmesh : 是建立mesh topology的主程式。 ezlbd : 主要实现wifi load balance的功能。 wsplcd: 住要实现wifi clone的功能。
5.一定要使用WPS来做Onboarding吗?
Ans: WPS,DDP都是使用来Onboarding的方法。