wpa_supplicant移植与使用 (YFW)

一、下载’

下载wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的补丁)

  解压:   #tar xvfz wpa_supplicant-0.7.3.tar.gz

下载www.openssl.org/source/openssl-0.9.8e.tar.gz

  解压:    #tar zxvf openssl-0.9.8e.tar.gz

二、编译openssl

将wpa_supplicant中的补丁拷贝到openssl中

# cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
#cd openssl-0.9.8e
#mkdir /usr/local/ssl

#vim Makefile
        CC= arm-linux-gcc
        AR= arm-linux-ar $(ARFLAGS) r
        RANLIB= arm-linux-ranlib
        INSTALLTOP=/usr/local/ssl
        OPENSSLDIR=/usr/local/ssl
            
#make 
#make install

在/usr/local/ssl目录下安装了ssl库

 #ls /usr/local/ssl
 #bin  certs  include  lib  man  misc  openssl.cnf  private

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

三、编译wpa_supplicant

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

#cp defconfig        .config
#vim .config
    CC= arm-linux-gnu-gcc -L/usr/local/ssl/lib/
    CFLAGS += -I/usr/local/ssl/include/
    LIBS += -L/usr/local/ssl/lib/
#make

经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。

把wpa_supplicant和wpa_cli。wpa_supplicant 拷贝到 根目录 /sur/bin目录下。

四、配置wpa_supplicant

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

#cp wpa_supplicant /rootfs/filesystem/bin
#cp wpa_supplicant-0.7.3/wpa_supplicant/examples/wpa-psk-tkip.conf  /rootfs/filesystem/etc/wpa_supplicant.conf

(2)修改wpa_supplicant.conf配置文件

#vim /rootfs/filesystem/etc/wpa_supplicant.conf

修改内容如下:

 # WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={
                ssid="c166"     //填写无线网络的的用户名
                key_mgmt=WPA-PSK
                proto=WPA
                pairwise=TKIP
                group=TKIP
                psk="123456" //填写密码
}

五、测试

查看当前网卡:

# ifconfig -a

启用无线网卡

# ifconfig wlan0 up

创建/var/run/wpa_supplicant目录

#mkdir –p /var/run/wpa_supplicant

执行下面指令,让wpa_supplicant 在后台运行

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

扫描wifi(扫描成功会返回OK)

# wpa_cli -i wlan0 scan

显示扫描结果

# wpa_cli -i wlan0 scan_results

扫描如下图所示:
wpa_supplicant移植与使用 (YFW)_第1张图片

# wpa_cli -i wlan0 add_network   //添加一个网络连接,会返回 
# wpa_cli set_network   ssid '"name"'  //ssid名称 
# wpa_cli set_network 1  psk '"123456"'   //密码
# wpa_cli -i wlan0 list_network //查看网络列表
# wpa_cli -i wlan0 select_network 0//选择要连接的网络
# wpa_cli -i wlan0 enable_network 0 //使能网络

连接成功如下:
wpa_supplicant移植与使用 (YFW)_第2张图片
此时只是连接AP成功,并未获取到IP、DNS。可使用udhcpc命令动态获取IP:

udhcpc -i wlan0 -q

wpa_supplicant移植与使用 (YFW)_第3张图片
如下可以看到确实已经获取到IP地址了。
wpa_supplicant移植与使用 (YFW)_第4张图片

六、USB_WIFI 插上自动分配IP

自动连接参考1
1、启用mdev
编辑/etc/rcS文件,加入下面2行。

echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

2、mdev配置文件
创建配置文件

cd /etc
mkdir mdev.conf

修改配置文件

vi mdev.conf 添加如下内容

wlan0 1:1 666 */etc/auto_wifi.sh

修改配置文件权限: chmod 777 mdev.conf

3、auto_wifi.sh 设备wlan0热插拔脚本创建

#!/bin/sh
if [ $ACTION = "add" ]
then
echo "wifi insert!!" >> /dev/ttyS0
   wpa_supplicant  -i wlan0 -c /etc/wpa_supplicant.conf -B
  wpa_cli -a/etc/wpa_action.sh -B
else
echo "wifi leave!!" >> /dev/ttyS0
   killall wpa_supplicant
   killall wpa_cli
   killall dhclient
fi

修改配置文件权限: chmod 777 auto_wifi.sh

4、一连接上WIFI AP, 就自动执行dhclient
创建脚本 wpa_action.sh

#!/bin/sh
IFNAME=$1
CMD=$2
if [ "$CMD" = "CONNECTED" ]; then
   echo connect $IFNAME, udhcpc for it > /dev/ttyS0
   udhcpc -i $IFNAME -n
fi
if [ "$CMD" = "DISCONNECTED" ]; then
   echo disconnect $IFNAME, kill udhcpc for it > /dev/ttyS0
   killall udhcpc
fi

修改配置文件权限: chmod 777 wpa_action.sh

5、测试
1、插入USBwifi
wpa_supplicant移植与使用 (YFW)_第5张图片
2、拔出USBwifi

wpa_supplicant移植与使用 (YFW)_第6张图片

重启设备也可以自动连接并自动获取IP了。

你可能感兴趣的:(wpa_supplicant移植与使用 (YFW))