首页 > 代码库 > openwrt mt7620n双SSID实现原理

openwrt mt7620n双SSID实现原理

转载请注明出处: 【钱国正的专栏http://blog.csdn.net/qianguozheng/article/details/37574373】


前言


为了满足客户需要,需要建立私有专用SSID,和共有共用SSID,这就需要用到双SSID.


原理


无线网卡驱动支持多SSID,通过不同的SSID可以划分不同的用户使用范围,但是不同的SSID的测试带宽、性能等同样需要考究。


技术困难


实现多SSID本来是不难的,但是对于一个新手来说还是有一定的挑战性,尤其是对于要到一个新的平台上openwrt, 使用的是qdk放在github上的源码,这个本来是很好的,但是使用过程中发现,系统在firstboot的时候,第二个SSID无法正常启动。任何一次恢复出厂设置后都会存在这种问题。


解决方法


通过分析发现,openwrt系统在启动的过程中是通过/sbin/procd启动一些进行,init, askfirst, ubus, ubox等执行启动过程,在脚本之中会有wifi detect 来初始化无线驱动相关的信息,而之后的done脚本中会有switch2jffs这个link 指向mount_root,从ubox里面编译出来,用来mount根文件系统/ 为jffs文件系统,/rom为squashfs分区, 从而实现文件系统的读写功能。 就在第一次之星switch2jffs的时候可能会卡住或者出现broken的脚本执行过程,这个事我目前不能完全理解的,还需要进一步学习。我的怀疑是这个过程导致了,无线驱动寻找dat文件的时候出错,或者使用过程中出错。

直接建立文件/etc/Wireless/RT2860/RT2860.dat来实现这个目的,这样,在恢复出厂设置的时候,无线驱动就起来了。


意外收获


通过这个调试,我发现luci的页面是通过/etc/config/wireless文件是否存在来决定是否显示无线配置页面的。


总结


这个问题耗费了我三天的时间,加上双SSID,其实这个问题没有想象中的那么困难,只不过是使用过程中需要主要各个程序或者驱动的依赖项,我曾经试图移植最新的openwrt官网上关于启动相关的信息,发现不行。最终是在想到系统启动的时候或者是调试无线驱动的时候都需要用console,否则真的难以辨别问题所在。虽然至今不能输入,但是我还是有了许多需要看到的信息。


转载请注明出处: 【钱国正的专栏http://blog.csdn.net/qianguozheng/article/details/37574373】