一、mt7610u wifi 驱动编译报错:
rt_linux.c:1768:11: error: ‘struct net_device’ has no member named ‘wireless_handlers’
出现这个错误的原因是因为内核WIRELESS_EXT没有选上,而要选上这个选项,内核目录make menuconfig,我们需要勾选Device Drivers -> Network device support -> Wireless LAN里面的IEEEE802.11 for Host Ap(Prism2/2.5/3 and WEP/TKIP/CCMP) 。重新编译.
二、mt7601u编译:
1、在Makefile增加平台
1)解压驱动文件包修改目录下的makefile文件,指定内核路径和交叉编译器位置
PLATFORM = PC
ifeq ($(PLATFORM),PC)
LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
LINUX_SRC = /home/Hi3520D_SDK_V1.0.3.0/osdrv/kernel/linux-3.0.y
CROSS_COMPILE = arm-hisiv100nptl-linux-
endif
3)复制RT2870AP.dat到目标板的/etc/RT2870AP目录下, mt7601Uap.ko到设备任意位置,加载驱动#insmod /mt7601Uap.ko
因为mt7601驱动本身不支持ieee80211协议,所以在管理wifi热点信息(ssid,key...)时,不使用网上通用的hostapd软件包,直接通过RT2870AP.dat文件直接配置。
4)启用无线网卡ifconfig ra0 192.168.xx.xx #手机可以搜索到wifi但是链接不上
5)启用dhcp服务程序,如果设备上不带dhcp请自行下载dhcp移植编译或通过busybox编译,这里不详细讲解,udhcpd -f /var/udhcpd.conf&
其中udhcpd.conf配置文件如下:
start 192.168.200.2 #wifi分配起始ip地址
end 192.168.200.254 #wifi分配结束ip地址
interface ra0 #网卡名称
opt dns 210.21.196.6 #DNS,如果不能访问外网一般是DNS错误
opt router 192.168.200.1
opt subnet 255.255.255.0
6)启动iptables 实现eth0的流量共享,如果设备上不带iptables工具,请自行移植。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ra0 -m state --state RELATED,ESTABLISH -j ACCEPT
iptables -A FORWARD -i ra0 -o eth0 -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
insmod /mt7601Uap.ko
ifconfig eth0 192.168.1.112 #设备设置本地有线网络,该网络应该具有访问外网能力
route add default gw 192.168.1.1 #添加网关
ping www.baidu.com,如果成功继续往下执行,不成功则需要先检测你设备的本地网络功能(主要是DNS)
ifconfig ra0 192.168.200.1 netmask 255.255.255.0 up
udhcpd -f /var/dvr/udhcpd.conf &
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ra0 -m state --state RELATED,ESTABLISH -j ACCEPT
iptables -A FORWARD -i ra0 -o eth0 -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
使用手机链接wifi,wifi热点名称和密码在RT2870AP.dat中,成功链接wifi并能访问外网。