x210移植wifi(三):WIFI网卡的配置过程(wpa_supplicant)

WIFI网卡的配置有两种:

一:用iwconfig,不过这个已经不常用了

如果要安装编译可以参考:

linux下移植wifi之安装libnl-3(三)

hisi平台Wireless_tools、libnl、wpa_supplicant和openssl移植

wireless-tools移植和交叉编译

二:wpa_supplicant配置文件

1 下载源码

下载openssl

链接:https://pan.baidu.com/s/1loq558gdcJGSS39aBKin_g 
提取码:l9ud 

下载wpa_supplicant

https://w1.fi/releases/

二、编译openssl库

将wpa_supplicant中的补丁拷贝到openssl中 

 cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/(但是这个版本的openssl不需要)

开始配置

        #cd openssl-0.9.8e
        #mkdir /home/liu/ARM/test/openssl-0.9.8za/tmp_ssl
        #vim Makefile
                CC= arm-linux-gcc
                AR= arm-linux-ar $(ARFLAGS) r
                RANLIB= arm-linux-ranlib
                INSTALLTOP=/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl
                OPENSSLDIR=/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl
        #make 
        #make install  //执行这一步可能会出错,说什么/usr/bin/pod2man错误,只要删除这个文件就好了

make install  //执行这一步可能会出错,说什么 /usr/bin/pod2man 错误。

第一种方法:只要删除这个文件就好

第二种方法:进入Makefile,把这句话install: all install_docs install_sw   改为   install: install_sw,也就是不生成man手册,反正我们也不用man手册

在/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl目录下安装了ssl库

root@liu-virtual-machine:/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl# ls
bin  certs  include  lib  man  misc  openssl.cnf  private

后面编译  wpa_supplicant   要依赖openssl中的lib和include

3 编译wpa_supplicant 

进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:

#cp defconfig        .config
#vim .config
    CC=arm-linux-gcc -L/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl/lib/
    CFLAGS += -I/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl/include/
    LIBS += -L/home/liu/ARM/test/openssl-0.9.8za/tmp_ssl/lib/
#make

经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:

wpa_supplicant和wpa_cli。

wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

4 配置wpa_supplicant

(1)首先拷贝wpa_supplicant和wpa-psk-tkip.conf到开发板根文件系统中

cp wpa_cli /home/liu/ARM/rootfs/rootfs2/bin/
cp wpa_supplicant /home/liu/ARM/rootfs/rootfs2/bin/
cp wpa_cli wpa_passphrase /home/liu/ARM/rootfs/rootfs2/bin/
cp examples/wpa-psk-tkip.conf  /home/liu/ARM/rootfs/rootfs2/etc/wpa_supplicant.conf (更改文件名)

(2)设置配置文件

创建一个文件夹

mkdir -p /etc/Wireless/RT2870STA/  (开发板)
root@liu-virtual-machine:/home/liu/ARM/test/wifi_source# cp RT2870STA.dat 
                                            /home/liu/ARM/rootfs/rootfs2/etc/Wireless/RT2870STA/RT2870STA.dat

(开发板)         /etc# vim    wpa_supplicant.conf      

由于我的手机热点为WPA2-PSK,这个wpa好像有不支持WPA2-PSK,所以我手机热点就没有用密码

# WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={
	ssid="vivo Y51A"
	key_mgmt=WPA-PSK
#	proto=WPA
#	pairwise=TKIP
#	group=TKIP
	psk="zaq852xsw"
}

由于WiFi运行要一个运行文件,因此要创建一个文件:

mkdir  -p     /var/run/wpa_supplicant

然后:

insmod mt7601Usta.ko            //安装驱动程序
ifconfig ra0 up                 //开启无线网卡
ifconfig wlan0 192.168.0.233

ifconfig

ra0     Link encap:Ethernet  HWaddr 0E:4B:88:00:87:9D  
          inet addr:192.168.0.233  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:492 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:121403 (118.5 KiB)  TX bytes:0 (0.0 B)

连接网络:同时手机上可以显示已经连接了一个设备

[root@liu ]# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0  	//连接无线网络


[root@liu ]# wpa_cli -i ra0 status
bssid=9c:a5:c0:15:74:1a
ssid=vivo Y51A
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED

ping通外网:

ifconfig ra0 192.168.43.20 	//手动配置ip,同一网段
route add default gw 192.168.43.1 dev ra0  				//配置网关
ping -I ra0 192.168.43.1   			//指定网卡 ra0 ping 网关
ping -I ra0 8.8.8.8        			//ping 外网
ping -I ra0 202.108.22.5           //ping 百度的ip地址
vi /etc/resolv.conf  			//配置dns
      nameserver 192.168.43.1  
ping -I ra0 www.baidu.com

1、使用interfaces文件静态配置
(1)

insmod /mt7601Usta.ko            //安装驱动程序
ifconfig ra0 up                 //开启无线网卡
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0  	//连接无线网络
wpa_cli -i ra0 status       	//查看连接状态

(2)interface文件
第一步,编辑好interface文件
第二步,使interface文件生效(重启网卡),方法是先ifdown ra0然后ifup ra0
总结:使用/etc/network/interfaces文件其实就是替代了手工配置时的ifconfig分配本地ip地址,和route添加网关这两步。


2、使用dhcp动态分配IP
(1)原理:路由器中有个dhcp服务器,本地有dhcp客户端
(2)前导步骤

insmod mt7601Usta.ko            //安装驱动程序
ifconfig ra0 up                 //开启无线网卡
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0  	//连接无线网络
wpa_cli -i ra0 status       	//查看连接状态

(3)当前状态就是:wifi网卡已经启动并且连接上路由器了,但是本地没有ip地址,所以没法ping通路由器。怎么办?使用dhcp分配一个本地ip。
方法1:命令行使用udhcpc命令来分配
方法2:使用interface文件选择dhcp模式然后重启网卡


3、让开发板开机自动连上路由器上网
改/etc/init.d/rcS及其相关文件

insmod /mt7601Usta.ko
ifconfig ra0 up
mkdir -p /var/run/wpa_supplicant
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0
ifconfig ra0 192.168.43.20
route add default gw 192.168.43.1 dev ra0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(项目学习)