OpenWrt下 2.4G/5G Wifi 最优信道选择,use lua and ubus
2020-09-29:
- 实现很简单,就是路由器 scan 附近的所有 2.4G wifi 信道,然后对比所有主要频段的信号强度,选择当中高强度信号最少的频段(干扰最小)的,进行选择
- 如果附近最强的信号不超过 -50dbm ,则默认用 -50dbm 进行信道对比。 可以通过 find_best_channel_24g 函数进行调整
- 默认使用 1 6 11 13 这几个主要频段,最终结果也是对比并采用这几个频段
- 因为部分路由器采用了非标准频段,即非 1 6 11 13 频段,所以也将邻频干扰稍微考虑了下
暂不考虑 5G 的自动选择频段
2020-10-13:
- 增加对5G网络的监测,默认支持 149 153 157 161 165 等多区域支持的频段,也可以调整源码,增加 36 40 44 48 等几个常用频段
- 为增强稳定性,2.4G 修改为仅支持 1 6 11 频段,因 13 频段在部分区域内不支持
- 增加命令行参数,参数 1 可以是 all 2.4g 5g 三种,确定扫描频段;参数 2 如果是 true ,则进行最优信道的调整,否则不调整
2020-10-14:
- ubus 调用 hostapd.wlan 的 switch_chan 方法时,因为参数问题,会导致仅能使用 20mhz 频段带宽,所以暂时调整为使用 uci 进行设置,wifi 会短暂中断。
2020-10-27:
- ubus 调用的 hostapd.wlan 的 switch_chan 方法,增加 bandwidth=20 和 ht=true 两个参数。该方法wifi中断时长较短,不介意带宽的可以使用。
2021-01-06:
- 针对所有 2.4G 所有频点均纳入邻频干扰监测
很简单的算法,效果尚可,可以放在 crontab 中定时执行
做实验时发现部分信道或者国家区域调整后 OpenWrt 的 2.4G 或者 5G 无线网络一直无法启动,后 Google 得一个解决方案:
国家代码设置为 US ,2.4G 信道设置为 11 , 5G 信道设置为 149 ,重启后基本无线网络就正常了。
应该是不同国家对频段不同要求导致,所以这个脚本进行了默认频段的调整,尽可能选用各个国家区域都支持的频段作为默认频段。