mt7610u mt7601u wifi 调试

一、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增加平台

PLATFORM = ARM
ifeq ($(PLATFORM), ARM)
LINUX_SRC = /home/share/ ARMl/osdrv/kernel/linux-3.0.y
CROSS_COMPILE = arm-hisiv100-linux-
endif

2、 rt_profile.c:26: fatal error: rt_config.h: No such file or directory 类似找不到头文件的报错
解决:在config.mk增加
ifeq ($(PLATFORM), ARM)
EXTRA_CFLAGS := -D__KERNEL__ -DMODULE $(WFLAGS)
export EXTRA_CFLAGS
endif

3、 cc1: error: unrecognized command line option "-m64"
cc1: error: unrecognized command line option "-mno-red-zone"
cc1: error: unrecognized command line option "-mcmodel=kernel"
cc1: error: unrecognized command line option "-maccumulate-outgoing-args"
报错。
解决: make ARCH=arm



 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

            2)编译:#make ARCH=arm

            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


共享wifi AP 热点流程:

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并能访问外网。



你可能感兴趣的:(嵌入式linux)