网上关于在openwrt上使用mt7620的官方wifi驱动的文章已经,但在亲自实践中总是有些不足,本文记录下调试过程,供有需要的人参考。
1.驱动版本
mtk是有提供官方的openwrt版本的,网上能找到的最新的是mtk-openwrt-sdk-20160324-8f8e4f1e.tar.bz2
2.驱动移植
将mtk-openwrt的package/ramips完整拷贝的cc版本的package/ramips下,参照https://github.com/nextLVL/openwrt_CC_miwifi_mini中将mt720的驱动补丁更新。完成后make menuconfig,在MTK Properties->Drivers->kmod-mt7620进行驱动配置,我的配置如下:
另外,还需选择MTK Properties->Applications->uci2dat,用于将uci格式的参数转换成mtk wifi驱动的配置文件。
当然,在进行这些配置之前,先要去掉openwrt所使用的开源wifi驱动:
target/linux/ramips/mt7620/target.mk中DEFAULT_PACKAGES += kmod-mt7620,替换原始的DEFAULT_PACKAGES += kmod-rt2800-pci kmod-rt2800-soc,并确定make menuconfig中kernel modules->Wireless Drivers->kmod->rt2800-pci和kmod-rt2800-soc已经没有选择。
之后编译版本烧录即可。
3.apcli配置
网上找的配置apcli的方法如http://blog.csdn.net/jk110333/article/details/39252487,但有些资源没有提供清楚。
1)uci2dat需要修改,mtk openwrt中没有对apcli参数进行转换,参照https://github.com/widora/openwrt_widora/blob/148ebc8b338b65adea0cfc7fd8271790492fd72d/package/mt7628WIFI/src/uci2dat.c修改uci2dat
2)/etc/config/wireless配置如下
config wifi-device 'mt7620'
option type 'mt7620'
option vendor 'ralink'
option band '2.4G'
option channel '0'
option auotch '2'
config wifi-iface
option device 'mt7620'
option ifname 'ra0'
option network 'lan'
option mode 'ap'
option ssid 'mt7620-1234'
option disabled '0'
option encryption 'none'
option ApCliEnable '1'
option ApCliSsid 'APssid'
option ApCliAuthMode 'WPA2PSK'
option ApCliEncrypType 'AES'
option ApCliWPAPSK '12345678'
修改apcli相关参数即可,注意channel必须与ApCliSsid所在信道一样。将network.wan.ifname设置成apcli0并重新生效network。
即使按照上面步骤完成了,也有可能apcli也可能不能成功连接上,console可能会出现类似the BSSID byte5 MUST be the multiple of 2的打印,只需将eeprom中wifi的mac修改成偶数即可。
3)另外,使用wifi命令使可能无法重新生效wifi配置,在package/ramips/drivers/mt7620/files/mt7620.sh修改disable_mt7620()函数,调用disable_ralink_wifi之前先调用ifconfig apcli0 down > /dev/null 2>&1即可