嵌入式Liunx移植USB随身WIFI(STA模式)

在开发嵌入式Linux设备的时候,设备连接外网一般通过有线或无线的模式。有线简单只要连接网线并正确设备相关参数即可。如何让嵌入式Linux设备像手机一样连接WIFI进行上网呢?这需要Linux设备具有USB外设接口,无线网卡等。本篇将介绍在ARM-Linux平台下移植MT7601U的无线网卡驱动。

1.USB无线网卡的识别
由于一般的嵌入式Linux设备本身没有自带无线网卡,我们需要外部接入一个无线网卡的设备来连接WIFI。在此处我选择了360随身WIFI充当无线网络,插入嵌入式Linux设备后,查看USB设备是否被识别。查看命令【lsusb】,结果如下:
嵌入式Liunx移植USB随身WIFI(STA模式)_第1张图片2.MT7601U驱动移植
该源码下载路径:https://pan.baidu.com/s/1Fjjh4rnScPu8z7uA_WwUrw,提取码:44yi
下载该源码并解压,为适应嵌入式Linux设备,如要调整的源码部分如下:

1.Makefile文件调整
	a.选择编译架构
		注销第30行,#PLATFORM = PC
		取消第49行注销,PLATFORM = SMDK
	b.设置交叉编译器
		第275行
			ifeq ($(PLATFORM),SMDK)
			LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
			CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
		修改为
			ifeq ($(PLATFORM),SMDK)
			LINUX_SRC = /home/dengaj/Desktop/ARM/kernel-3.2
			CROSS_COMPILE = arm-arago-linux-gnueabi-
		其中 LINUX_SRC 为内核源码的路径;CROSS_COMPILE 为交叉编译器

2.修改无线网卡名称
	include/rtmp_def.h,找到1604行
	修改:
		#define INF_MAIN_DEV_NAME		"ra"
		#define INF_MBSSID_DEV_NAME		"ra"
	修改为:
		#define INF_MAIN_DEV_NAME		"wlan"
		#define INF_MBSSID_DEV_NAME		"wlan"

3.改动支持ID
	common/rtusb_dev_id.c,找到42行:
	修改:
		USB_DEVICE_ID rtusb_dev_id[] = {
		#ifdef RT6570
			{USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */
		#endif /* RT6570 */
			{USB_DEVICE(0x148f, 0x7650)}, /* MT7650 */
		#ifdef MT7601U
			{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */
			{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
		#endif /* MT7601U */
			{ }/* Terminating entry */
		};
	修改为:
		USB_DEVICE_ID rtusb_dev_id[] = {
		#ifdef RT6570
			{USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */
		#endif /* RT6570 */
			{USB_DEVICE(0x148f, 0x7650)}, /* MT7650 */
		#ifdef MT7601U
			{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */
			{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
			{USB_DEVICE(0x2955,0x0001)}, /* XiaoDu Wifi */
			{USB_DEVICE(0x2955,0x1001)}, /* XiaoDu Wifi */
			{USB_DEVICE(0x148f,0x760b)}, /* 360 Wifi */
		#endif /* MT7601U */
			{ }/* Terminating entry */
		};
	注:MT7601U(小度wifi,360随身wifi 2代)linux驱动 使用lsusb命令可以获取USB设备ID。小度wifi为2955:0001或2955:1001 
		360WIFI2为148F:760B 二者均使用Mediatek Ralink MT7601芯片。

3.无线网卡驱动加载
在目录下执行make命令,最终在 os/linux 生成一个 mt7601Usta.ko 驱动文件,拷贝到嵌入式Linux板卡上加载驱动,如下:
嵌入式Liunx移植USB随身WIFI(STA模式)_第2张图片
从内核查看驱动加载打印信息,运行命令dmesg,结果如下:
嵌入式Liunx移植USB随身WIFI(STA模式)_第3张图片
4.嵌入式Linux连接WIFI热点
配置WIFI网卡,步骤如下:

1.创建/etc/Wireless/RT2870STA目录,把MT7601驱动源码下的RT2870STA.dat复制到该目录下 
2.修改 /etc/wpa_supplicant.conf配置路由器的密码等信息,根据自己的情况配置 
		#PSK/TKIP 
		ctrl_interface=/var/run/wpa_supplicant 
		network={
		        ssid="chen"                  #接入WIFI的名称
		        scan_ssid=1
		        key_mgmt= WPA-PSK            #接入WIFI的认证方式
		        pairwise=TKIP CCMP
		        group=CCMP TKIP WEP104 WEP40
		        psk="18855953237"             #接入WIFI的密码
		}

连接WIFI热点,步骤如下:

1.启动无线网卡
	ifconfig wlan0 up
2.连接无线网络
	wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
3.查看连接状态
	wpa_cli -i wlan0 status           

dmesg命令查看,无线网络启动成功如下图:
嵌入式Liunx移植USB随身WIFI(STA模式)_第4张图片
dmesg命令查看,连接WIFI成功如下图:
嵌入式Liunx移植USB随身WIFI(STA模式)_第5张图片
查看WIFI连接情况,【wpa_cli -i wlan0 status 】,如下图:
嵌入式Liunx移植USB随身WIFI(STA模式)_第6张图片
最后可以通过ifconfig设置wlan0无线网卡的IP,route命令增加默认路由,设备即可通过无线网卡wlan0上网了。

你可能感兴趣的:(Linux)