前言:
本文针对的是MT7601 WIFI驱动在linux下的移值,对于MT7601的两种模式STA和AP模式都有说明,包括对支持wifi内核的配置,wireless_tools工具的移值。
一、内核支持配置
1、配置内核支持MT7601 wifi驱动
# make ARCH=arm CROSS_COMPILE=arm-hismall-linux- menuconfig
[*] Networking support --->
[*] Wireless --->
[*]Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
[*] Ralink driver support --->
2、编译内核
# make ARCH=arm CROSS_COMPILE=arm-hismall-linux- uImage
注意:先编译内核,通过之后,再编译wifi驱动
二、编译MT7601(AP模式) 驱动
1、下载驱动源码:https://download.csdn.net/download/u012478275/12664322
2、解压 MT7601U_LinuxAP_3.0.0.1.gz
# tar xvf MT7601U_LinuxAP_3.0.0.1.gz
3、配置编译环境
修改 Makefile,设置平台:PLATFORM = HI3520dV3
#PLATFORM: Target platform
#PLATFORM = PC
PLATFORM = HI3520dV3
#PLATFORM = 5VT
#PLATFORM = IKANOS_V160
...
ifeq ($(PLATFORM),HI3520dV3)
# Linux 3.10.0
LINUX_SRC = /home/system/kernel/linux-3.10.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH=arm
endif
根据需求配置config.mk
# vi os/linux/config.mk
ifeq ($(PLATFORM),HI3520dV3)
HAS_CFG80211_SUPPORT=y
HAS_P2P_SUPPORT=y
HAS_USB_BULK_BUF_ALIGMENT=y
HAS_USB_BULK_BUF_PREALLOC=y
EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
#EXTRA_CFLAGS +=-Wframe-larger-than=4096
#EXTRA_CFLAGS +=-Wno-error=date-time
#EXTRA_CFLAGS +=-Wno-date-time
export EXTRA_CFLAGS
endif
注意:LINUX_SRC = /home/system/kernel/linux-3.10.y 为内核路径;
CROSS_COMPILE = arm-hisiv300-linux- 为交叉编译工具;
4、编译驱动
# make
编译成功生成 os/linux/mt7601Uap.ko 驱动文件
三、编译MT7601(STA模式)驱动
1、下载驱动源码:https://download.csdn.net/download/u012478275/12664316
2、解压 DPA_MT7601U_LinuxSTA_3.0.0.4.tar.gz
# tar xvf DPA_MT7601U_LinuxSTA_3.0.0.4.tar.gz
3、配置编译环境
修改 MODULE/Makefile NETIF/Makefile UTIL/Makefile
设置平台:PLATFORM = HI3520dV3
#PLATFORM: Target platform
#PLATFORM = PC
PLATFORM = HI3520dV3
#PLATFORM = 5VT
#PLATFORM = IKANOS_V160
...
ifeq ($(PLATFORM),HI3520dV3)
# Linux 3.10.0
LINUX_SRC = /home/system/kernel/linux-3.10.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH=arm
endif
根据需求分别配置 MODULE/os/linux/config.mk NETIF/os/linux/config.mk UTIL/os/linux/config.mk
ifeq ($(PLATFORM),HI3520dV3)
HAS_CFG80211_SUPPORT=y
#HAS_P2P_SUPPORT=y
HAS_USB_BULK_BUF_ALIGMENT=y
HAS_USB_BULK_BUF_PREALLOC=y
EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
#EXTRA_CFLAGS +=-Wframe-larger-than=4096
#EXTRA_CFLAGS +=-Wno-error=date-time
#EXTRA_CFLAGS +=-Wno-date-time
export EXTRA_CFLAGS
endif
注意:LINUX_SRC = /home/system/kernel/linux-3.10.y 为内核路径;
CROSS_COMPILE = arm-hisiv300-linux- 为交叉编译工具;
4、编译驱动
# make
编译成功生成 MODULE/os/linux/mt7601Usta.ko NETIF/os/linux/mtnet7601Usta.ko UTIL/os/linux/mtutil7601Usta.ko 三个驱动文件
四、无线网卡设置工具wireless_tools
1、下载工具源码:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wireless_tools.html
2、解压 wireless_tools.29.tar.gz
# tar xvf wireless_tools.29.tar.gz
3、配置编译环境
# vi Makefile
## Compiler to use (modify this for cross compile).
CC = arm-hisiv300-linux-gcc
## Other tools you need to modify for cross compile (static lib only).
AR = arm-hisiv300-linux-ar
RANLIB = arm-hisiv300-linux-ranlib
注意: arm-hisiv300-linux- 为交叉编译工具
4、编译驱动
# make
编译成功生成 iwconfig、iwlist、iwpriv、iwevent、iwgetid、iwspy 等无线网卡设置工具,libiw.so.29等库文件
5、拷贝到开发板,配置环境
把libiw.so.29拷贝到/lib下,iwconfig、iwlist、iwpriv、iwevent、iwgetid、iwspy拷贝到/usr/sbin/下;
五、STA模式实例运行测试
1、检查wifi模块
# lsusb
Bus 001 Device 002: ID 148f:7601
2、驱动加载
# insmod /ko/mtutil7601Usta.ko
# insmod /ko/mt7601Usta.ko
# insmod /ko/mtnet7601Usta.ko
3、启动无线网卡
# ifconfig ra0 up
4、配置wifi模式,连接wifi
# iwpriv ra0 set NetworkType=Infra
# iwpriv ra0 set AuthMode=WPA2PSK
# iwpriv ra0 set EncrypType=AES
# iwpriv ra0 set SSID="TEST"
# iwpriv ra0 set WPAPSK="12345678"
SSID:需要连接wifi的名字,WPAPSK:wifi密码
5、启动udhcpc配置ra0网卡
# udhcpc -i ra0 &
通过STA模式,设备就可以通过wifi模块连接wifi上网了。
六、AP模式实例运行测试
1、检查wifi模块
# lsusb
Bus 001 Device 002: ID 148f:7601
2、驱动加载
# insmod /ko/mt7601Uap.ko
3、启动无线网卡
# ifconfig ra0 up
4、配置wifi模式,连接wifi
# iwpriv ra0 set NetworkType=Infra
# iwpriv ra0 set AuthMode=WPA2PSK
# iwpriv ra0 set EncrypType=AES
# iwpriv ra0 set SSID=13000000000
# iwpriv ra0 set WPAPSK="12345678"
SSID:路由模式wifi名字,WPAPSK:wifi密码
5、启动udhcpd配置ra0网卡
5.1 配置网卡ra0IP和子网掩码
# ifconfig ra0 192.168.200.1 netmask 255.255.255.0 up
5.2 编写udhcpd_wifi.conf配置文件
start 192.168.200.2
end 192.168.200.254
interface ra0
opt router 192.168.200.1
opt subnet 255.255.255.0
opt dns 202.96.134.33
# udhcpd -f /etc/udhcpd_wifi.conf &
通过AP模式,设备就可以通过wifi模块路由出wifi供给其他设备连接,但是这样连的wifi是不能上网的,如果想上网,还需要通过iptables把可以上网的网卡转换到wifi模块网卡,这样就可以上网了,对于iptables的linux下移值和使用,请查看博主其他文章;
至此,linux下MT7601 wifi模块驱动的移值基本完成,如果你需要连接其他wifi上网,就把驱动设置为STA模式,也可以说是客服端模式,如果想要分享wifi给其他设备连接,可以设置为AP模式,也可以说是wifi路由模式,也就是日常的路由器;