下载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
将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-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目录下。
(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_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 //使能网络
连接成功如下:
此时只是连接AP成功,并未获取到IP、DNS。可使用udhcpc命令动态获取IP:
udhcpc -i wlan0 -q
自动连接参考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
重启设备也可以自动连接并自动获取IP了。