mt7601(360二代)wifi-STA移植到itop4412

时间:2024-04-10 10:07:51

一、移植准备

  1. 基本概念

  移植之前首先搞清两个概念 AP和STA,并且在下载wifi驱动源码时注意是STA还是 AP。

       Wifi模块包括两种形式的拓扑结构:Infra(基础网)和Adhoc(自组网)。

  • AP:也就是无线接入点,是一个无线网络创建者,是网络的中心节点。由AP组建,众 多 STA加入的无线网络就是Infra(基础网)。这种网络以AP为中心,网络中所有的通 信 都通过AP来转发。

  • STA:连接到无线网络的站点。由两个及以上STA组建,网络中无AP的无线网络叫做 Adhoc(自组网)。所有的STA都可以直接进行通信。

下面我们的移植是以STA为例。

2.注意事项

在移植之前另一个要他特别注意的就是,网卡选择,市面上的无线网卡驱动(如TP-link)大多是不开源的,所以在选择一款无线网卡时一定要注意它是否有对应的驱动,驱动可以在github上找,如果找不到或者怕折腾就按照我下面的步骤,选择MTK原厂的驱动。原厂驱动支持的无线网卡:我是测过的是360二代,mt7601u,是支持的。TP-link不支持,360三代也不支持。

原厂驱动在官网可以下载:http://www.mediatek.com/。也可以在CSDN上下载http://download.csdn.net/detail/pchl33/7424755,需要3C币貌似....。


二、移植步骤

1.从官网http://www.mediatek.com/zh-CN/downloads/mt7601u-usb/下载驱动文件(国内可能比较慢),并copy到工作路径,然后解压,进去源码路径。

mt7601(360二代)wifi-STA移植到itop4412

mt7601(360二代)wifi-STA移植到itop4412


2.修改makefile文件

  ①注释第30行,取消PC平台。

  mt7601(360二代)wifi-STA移植到itop4412

②取消注释第49行,SMDK代表 三星开发板平台。

 mt7601(360二代)wifi-STA移植到itop4412

③第275行,修改linux源码路径以及指定交叉编译器。

 mt7601(360二代)wifi-STA移植到itop4412

注意此处linux内核源码一定要是经过编译的,不然会报错,androidQtKernel源码是一样的,编译方法也相似只需修改配置文件在这里不详细说明如何编译Kernel

 

3.打开include/rtmp_def.h,修改1604 1605 行为下面。

 mt7601(360二代)wifi-STA移植到itop4412

4.打开common/rtusb_dev_id.c修改第42行,添加usb网卡的产品id和设备ID关于如何查看网卡的id,插上网卡,在命令行中输入lsusb,可以看到设备的id,找到网卡的即可。并仿照其他的格式,在下图添加属于你的无线网卡的id就可以了。

 mt7601(360二代)wifi-STA移植到itop4412

 

5.查看“os/linux/config.mk”文件,确保“config.mk”文件中WPA_SUPPLICANT配置 如下图所示。

mt7601(360二代)wifi-STA移植到itop4412 

 

6.DPO_MT7601U_LinuxSTA_3.0.0.4_20130913目录下执行以下命令编译源码,分别 输入“make clean,make -j2”命令。编译成功后如下图,生成可mt7601u.ko

 mt7601(360二代)wifi-STA移植到itop4412

7./DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.ko”拷贝到 开发板任意位置(建议跟RT2870STA放在一起)。在开发板的根文件系统中创建目录/etc/Wireless/RT2870STA/ ,将源码目录中的 RT2870STA.dat拷贝到刚才创建的etc/Wireless/RT2870STA/目录中。

 mt7601(360二代)wifi-STA移植到itop4412


 8.插上无线网卡看到打印如下

 mt7601(360二代)wifi-STA移植到itop4412

 

9.加载驱动程序mt7601Usta.ko”,如下图。命令:insmod mt7601Usta.ko

 mt7601(360二代)wifi-STA移植到itop4412

 

10 关闭以太网0,打开wlan0.

 mt7601(360二代)wifi-STA移植到itop4412

11  iwlist wlan0 scan查看附近无线网络。

 mt7601(360二代)wifi-STA移植到itop4412

可以开cell10 中看到ESSID = hhw”的wifi,这是我自己用手机开的一个热点wifi.我们可以看到它的各项信息。包括MAC地址,协议,频段为2.4GHZ,采用WPA2加密(这个信息很重要,后面会用到)。

 

12得知wifi的相关信息后,我们开始准备连接wifi.修改/etc/wpa_supplicant.conf文件中的内容。根据上一步得到的信息配置无线网络。关于wpa_supplicant.conf如何写,可以百度参考官方历程,我这里只简单配置一下。

ctrl_interface=/var/run/wpa_supplicant

update_config=1

network={

        proto=RSN

        key_mgmt=WPA-PSK

        ssid="hhw"

        #psk="19951105"

        psk=3bd7469add2a9b69f39f8a852e2cc6ad99ebae5d99d16ad502c4999172a9200a

}

关于上面的配置简单介绍一下:

Network里面是具体配置,SSIDwifi名字,可以通过wpa_passphrase工具来添加,也可以手动编写。

但是wpa2加密的psk(密码)必须通过wpa_passphrase来生成。

proto   WPA2必须选择RSN,WPA 选WPA;

key_mgmtWPA-PSK

wpa_passphrase格式如下。

wpa_passphrase <yourAPssid> <yourpassphrase> > /etc/wpa_supplicant/wpa_supplicant.conf


13.执行命令wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf 执行命令udhcpc -i wlan0获取动态IP网关DNS。 到此,就可以pingwww.baidu.com了。

wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

 mt7601(360二代)wifi-STA移植到itop4412

udhcpc -i wlan0

 mt7601(360二代)wifi-STA移植到itop4412

Ping baidu.com:

 mt7601(360二代)wifi-STA移植到itop4412

 

 14.可以看到,系统会不停打印一些消息,会影响我们输入命令,因此需要用如下命令设置一下

系统打印等级:

echo "4 4 1 7" >/proc/sys/kernel/printk

 mt7601(360二代)wifi-STA移植到itop4412

 三:自动配置

以上就完成了所有的配置过程,但是每次我们连接wifi都需要完成以下几个步骤:

1.挂载驱动 #insmod mt7601Usta

2.关闭以太网0 #ifconfig eth0 down

3.打开wlan0 #ifconfig wlan0 up

4.加载配置文件 #wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

5.动态分配IP #udhcpc -i wlan0

这样很麻烦,所以我们可以把这几个命令写入etc/init.d/rcS文件中。这样每次开机就会自动执行以上配置命令。

 mt7601(360二代)wifi-STA移植到itop4412

可以看到rcS脚本中的代码片段如上。我们只需增加一个脚本(关于如何编写shell脚本自行百度,这里只简单介绍一下)mt7601,然后添加到图中wifi setting 位置下的这个路径 /etc/init.d/mt7601

 mt7601(360二代)wifi-STA移植到itop4412

 mt7601(360二代)wifi-STA移植到itop4412

 添加路径完成后,可以把eh0的启动脚本屏蔽,不屏蔽也没关系,因为我们的自动配置脚本会关闭eth0。

mt7601   Shell脚本内容如下

#!/bin/sh    

echo “starting wifi driver......”

insmod /lib/modules/mt7601/mt7601Usta.ko    

sleep 1

ifconfig eth0 down

sleep 1

ifconfig wlan0 up

sleep 1

wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

sleep 15

udhcpc -i wlan0

    

这样我们重启的时候就会发现wifi自动连上了,虽然很方便但是如果重启时无线网卡没有插入,那么会像下面一样报错。

 mt7601(360二代)wifi-STA移植到itop4412

以上就是所有过程,AP模式的编译和STA相似,就是配置有区别,有时间在更新。