在开发嵌入式Linux设备的时候,设备连接外网一般通过有线或无线的模式。有线简单只要连接网线并正确设备相关参数即可。如何让嵌入式Linux设备像手机一样连接WIFI进行上网呢?这需要Linux设备具有USB外设接口,无线网卡等。本篇将介绍在ARM-Linux平台下移植MT7601U的无线网卡驱动。
1.USB无线网卡的识别
由于一般的嵌入式Linux设备本身没有自带无线网卡,我们需要外部接入一个无线网卡的设备来连接WIFI。在此处我选择了360随身WIFI充当无线网络,插入嵌入式Linux设备后,查看USB设备是否被识别。查看命令【lsusb】,结果如下:
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板卡上加载驱动,如下:
从内核查看驱动加载打印信息,运行命令dmesg,结果如下:
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命令查看,无线网络启动成功如下图:
dmesg命令查看,连接WIFI成功如下图:
查看WIFI连接情况,【wpa_cli -i wlan0 status 】,如下图:
最后可以通过ifconfig设置wlan0无线网卡的IP,route命令增加默认路由,设备即可通过无线网卡wlan0上网了。