X210移植MTK7601无线网卡驱动(上)

1、MTK7601

联发科的低成本wifi解决方案。


2、无线网卡的配置和使用

(1)常用无线网卡工具介绍:iwconfig、iwlist、iwpriv、wpa_supplicant

(2)常见WIFI加密格式介绍和路由器端查看:WEP、WPA

(3)wpa_supplicant使用详解

(4)配置本地IP地址、网关、dns等并确认外网连接


3、确认环境

首先要拿到开发板提供的官方linux+QT4.8镜像,这个内核之前我们做了很多修改(改了屏幕参数和更换触摸屏驱动),根文件系统则使用九鼎bsp提供的根文件

进入文件系统之后,输入ifconfig

                                        

会发现没有设置好开发板的ip地址

这时候输入ifconfig eth0 192.168.1.10(只要和ubuntu在同个网段就好)

最后将ubuntu的nfs文件夹挂载到开发板文件系统中的opt文件夹下:

mount -t nfs -o nolock 192.168.1.141:/home/aston/rootfs /opt

lsusb查看网卡的VID和PID

Bus 001 Device 003: ID 148f:7601

VID和PID主要功能就是用来识别设备,并挂接相应的驱动。


4、编译和移植

首先将下载好的DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

(点击此处下载https://download.csdn.net/download/tainjau/10425809)文件放在ubuntu中。

在ubuntu中解压完压缩包后,执行make clean清理一下残留的编译文件。

这个源码文件是已经修改过的了,所以我们仅需检查一下几个内容即可。

4.1、确认源码包中rtusb_dev_id.c文件

文件路径在DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/common目录下。

                       

其中第二行的USB_DEVICE(0x148f,0x7601) 对应上了我们之前看到的网卡的VID和PID。

4.2、修改Makefile

修改主目录中的makefile

(1)平台换成:三星

PLATFORM = SMDK

                                     

(2)内核源码树路径设置

LINUX_SRC = /home/work/x210/kernel //linux内核源码树

                              

(3)交叉工具链路径设置

CROSS_COMPILE = //交叉编译环境

                      

4.3、修改网卡名字(可选)

(1)常用无线网卡名称:rax、wlanx

(2)修改include/rtmp_def.h文件

#define INF_MAIN_DEV_NAME "ra"

#define INF_MBSSID_DEV_NAME "ra"

4.4、添加wpa_supplicant支持

将来要使用wpa_supplican工具使wifi进行联网,就需要配置这个选项。

文件路径在DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/

确保config.mk文件中WPA_SUPPLICANT=y

                      

4.5、编译生成驱动模块

make clean && make -j2

生成os/linux/mt7601Usta.ko就是驱动模块


5.WIFI网卡的配置过程

5.1挂载驱动

首先将usb网卡插入开发板上的usb接口中。

然后再将之前编译好的mt7601Usta.ko文件放在开发板的文件系统中,执行insmod mt7601Usta.ko加载网卡驱动

之后执行命令ifconfig -a 可以看到我们的网卡信息,虽然这时候网卡还不能被启动。

                                   

5.2wpa_supplicant配置文件

首先在开发板中的etc文件夹里面建立这几个文件。

/etc/Wireless/RT2870STA/RT2870STA.dat

使用mkdir -p /etc/Wireless/RT2870STA 创建RT2870STA文件夹

其中配置文件RT2870STA.dat在之前的驱动源码里面有,在源码的根目录中。将RT2870STA.dat文件拷贝到/etc/Wireless/RT2870STA/文件夹中。

               

复制完成之后,还需要修改/etc/wpa_supplicant.conf文件。

其中key_mgmt是加密方式

ssid和psk则是wifi的账号和密码

                                       

5.3、网卡配置命令序列(手动)

insmod mt7601Usta.ko //安装驱动程序

ifconfig ra0 up //开启无线网卡

wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 //连接无线网络

连接完无线网络之后,可以输入wpa_cli -i ra0 status 查看网络连接状态,如果有出现下图,就说明连接正常。

                                    

接下来设置开发板的ip地址,配置网关之后,ping内外网就能通了。

ifconfig ra0 192.168.1.200 //手动配置ip,同一网段
route add default gw 192.168.1.1 dev ra0 //配置网关
ping 192.168.1.1 //ping 网关
ping 8.8.8.8 //ping 外网

如果想ping域名的话,就需要配置dns,首先打开etc下的resolv.conf文件,添加nameserver 192.168.1.1 即可。

vi /etc/resolv.conf //配置dns
nameserver 192.168.1.1

注意:

1、ra0的配置和上网前,一定要先关掉eth0(ifconfig eth0 down),否则你ping或者设置等等都是默认使用的eth0而不是ra0.

2、当我们wifi网卡连接上路由器后,想要ping通路由器(网关),必须本地wifi网卡有一个和网关同一网段的ip地址才可以。这个本地的ip地址可以dhcp分配,也可以手工配置一个。

3、本地有了ip地址,并且wifi网卡通过wpa_supplicant配置连上路由器后,就能ping通网关了。但是这时还不能ping通外网,因为本地还没有添加网关配置。添加网关配置有2种方法:通过route命令动态添加,或者通过/etc/network/interfaces文件添加。

4、添加网关后就能ping通外网IP了,但是还ping不通www.baidu.com等域名,因为还没有dns。

至此,手动配置wifi模块上网就基本完成了。如果还要更方便点上网,就参考接下来的。

5.4、使用interfaces文件静态配置

之前使用的是手动配置,接下来使用interfaces文件进行配置

首先还是跟一开始一样

insmod mt7601Usta.ko //安装驱动程序

ifconfig ra0 up //开启无线网卡

wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 //连接无线网络

wpa_cli -i ra0 status //查看连接状态

然后在终端使用vi打开开发板文件系统中的/etc/network/interfaces,增加以下配置。

                                    

最后使interface文件生效(重启网卡),方法是先ifdown ra0然后ifup ra0

                                  

总结:使用/etc/network/interfaces文件其实就是替代了手工配置时的ifconfig分配本地ip地址,和route添加网关这两步。

5.5、使用dhcp动态分配IP

路由器中有个dhcp服务器,本地有dhcp客户端,嵌入式设备的文件系统中的busybox内也带了dhcp功能。

前导步骤:使用dhcp动态分配ip前,需要执行以下步骤

insmod /home/mt7601Usta.ko //安装驱动程序

ifconfig ra0 up //开启无线网卡

wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0 //连接无线网络

wpa_cli -i ra0 status //查看连接状态

当前状态就是:wifi网卡已经启动并且连接上路由器了,但是本地没有ip地址,所以没法ping通路由器。怎么办?使用dhcp分配一个本地ip。

方法1:命令行使用udhcpc命令来分配

输入命令:udhcpc -i ra0

之后就可以得到dhcp分配好的地址。

方法2:使用interface文件选择dhcp模式然后重启网卡


6、让开发板开机自动连上路由器上网

改/etc/init.d/rcS及其相关文件.

首先在开发板文件系统中的/etc/init,d/目录下创建一个S41Wifi文件

添加进之前配置的东西。

                         

保存后,记得给S41Wifi这个文件加上可执行权限。

chmod a+x S41Wifi

之后重启,就会自动连上路由器上网

猜你喜欢

转载自blog.csdn.net/tainjau/article/details/81412245
今日推荐