wpa

参考:https://blog.csdn.net/u011003120/article/details/90175648

2 libnl编译
2.1 下载
下载链接:
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html

2.2 编译
解压进入主目录,使用如下命令编译:

#mkdir _install
#./configure –host=arm-himix200-linux –prefix=/home/leon/Workspace/opensshd/output
#make
#make install

3 wpa_supplicant
3.1 下载
下载链接:http://w1.fi/releases/
http://w1.fi/releases/wpa_supplicant-2.9.tar.gz

3.2 编译
解压并进入主目录
使用如下命令编译

#cd wpa_supplicant/
#cp defconfig .config

CFLAGS += -I/home/leon/Workspace/opensshd/output/include/
LIBS += -L/home/leon/Workspace/opensshd/output/lib
CFLAGS += -I/home/leon/Workspace/opensshd/output/include/libnl3
LIBS += -L/home/leon/Workspace/opensshd/output/lib

make CC=arm-himix200-linux-gcc

出现:
Package libnl-3.0 was not found in the pkg-config search path

mkdir -p /data/misc/wifi
./wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -O/data/misc/wifi/sockets &

如果出现以下问错误,是因为内核RFKILL选项没有打开

rfkill: Cannot open RFKILL control device
D/wpa_supplicant( 1152): nl80211: RFKILL status not available

在内核目录make menuconfig
networking support–>
RF switch subsystem support–>
<>GPIO RFKILL driver
打开后重新编译烧录内核即可

获取wifi状态
wpa_cli status -iwlan0 -p/data/misc/wifi/sockets

bssid=e4:95:6e:40:34:4c
freq=2462
ssid=OCEIOT
id=1
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.8.225
address=08:ea:40:fc:38:a5

断开连接
wpa_cli disconnect -iwlan0 -p/data/misc/wifi/sockets
重新连接
wpa_cli reconnect -iwlan0 -p/data/misc/wifi/sockets

#!/bin/sh

#ifconfig eth0 up

#udhcpc

export LD_LIBRARY_PATH=’/usr/local/lib:/usr/lib’

insmod /komod/mt7601u.ko

export

sleep 1

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -O/data/misc/wifi/sockets &

sleep 2

count=1
while true
do
cmdRet=`wpa_cli status -iwlan0 -p/data/misc/wifi/sockets | grep wpa_state`
cmdRet=${cmdRet:10}

echo $cmdRet

#count=$(($count+1));
let count++
if [ $count -gt 10 ];then
break;
elif [ “$cmdRet” = “COMPLETED” ];then
echo “wifi connected!”;
break;
fi
sleep 1
done

mount /dev/mmcblk0p1 /mnt/sd/

if [ “$cmdRet” = “COMPLETED” ];then
udhcpc -i wlan0
cmdRet=`ifconfig wlan0 | grep “inet addr”`
echo $cmdRet
if [ -n “$cmdRet” ];then
mount -t nfs -o nolock 192.168.8.200:/media/server_disk/nfs /mnt/nfs
else
echo “failed to get ip”
fi
fi