前面虽然将 VNT6656 的网卡移植ok,但如果无线路由设了密码,就连不上了,所以还需要移植一个 wpa_supplicant 的工具。
so , what is "wpa_supplicant"?
:它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。
移植环境:
移植环境:
host (个人pc + 虚拟机) :
fedora 9, 内核版本: Linux localhost.localdomain 2.6.25-14.fc9.i686
编译工具:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)
gcc version 4.4.3 (ctng-1.6.1)
target:
FriendlyARM mini2440 开发板;
内核: Linux FriendlyARM 2.6.32.2-FriendlyARM #2 Sat Dec 1 12:06:04 CST 2012 armv4tl unknown
网卡:VNT6656AU
移植步骤:;
一、下载源码
http://hostap.epitest.fi/wpa_supplicant/
下载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-gcc -L/usr/local/ssl/lib/
#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
CFLAGS += -I/usr/local/ssl/include
#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
LIBS += -L/usr/local/ssl/lib
#make
/*注:这里可能出现很多编译错误!不过不要慌张,认真看下到底是什么错误!基本上都是缺少函数声明,
不知道作者为什么会犯这样的错误。比如在wpa_supplicant.c中对某个函数没有定义,这时应该用grep
或者cscope等工具查找该函数名,找到在头文件里的定义,然后将头文件写入该文件中就可以了!
*/
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。还有wpa_passphrase, 来加密明文密码。将这3个文件拷贝到开发板的 /var/run 目录下。
四、配置wpa_supplicant
在板子根目录/etc中建立wpa_supplicant.conf文件
文件内容如下
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="TP-LINK_5C5472" //填写无线网络的的用户名
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk="xray030907" //填写密码
}
注意要与你的无线路由中的设置对应。
另外要注意的是,无线路由中的模式应该设为 : 11bg mixed
否则会出现些脑残情况!
五、测试
insmod vntwusb.ko
ifconfig eth1 up
iwconfig eth1 essid TP-LINK_5C5472
wpa_passphrase TP-LINK_5C5472 密码 >> /etc/wpa_supplicant.conf
之后wpa_supplicant.conf中会添加以下内容,然后把最后面的经过加密的密码修改到上面去,再把下面的内容删掉!
network={
ssid="TP-LINK_5C5472 "
#psk="1234567890"
psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}
如:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xray030907"
}
链接AP
wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -B
再执行udhcpc -i eth1 可以顺利获取ip
目前许多WIFI都采用 AES的加密方法,所以 pairwise group 两个选项中要加 CCMP 选项,来支持 AES加密,所以最终的样子应该如下:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xxxxxxxx"
}
移植过程主要参考了: http://blog.youkuaiyun.com/ti_tantbx/article/details/7037741 的方法,多谢 ti_tantbx 的热心分享!
so , what is "wpa_supplicant"?
:它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。
移植环境:
移植环境:
host (个人pc + 虚拟机) :
fedora 9, 内核版本: Linux localhost.localdomain 2.6.25-14.fc9.i686
编译工具:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)
gcc version 4.4.3 (ctng-1.6.1)
target:
FriendlyARM mini2440 开发板;
内核: Linux FriendlyARM 2.6.32.2-FriendlyARM #2 Sat Dec 1 12:06:04 CST 2012 armv4tl unknown
网卡:VNT6656AU
移植步骤:;
一、下载源码
http://hostap.epitest.fi/wpa_supplicant/
下载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-gcc -L/usr/local/ssl/lib/
#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
CFLAGS += -I/usr/local/ssl/include
#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
LIBS += -L/usr/local/ssl/lib
#make
/*注:这里可能出现很多编译错误!不过不要慌张,认真看下到底是什么错误!基本上都是缺少函数声明,
不知道作者为什么会犯这样的错误。比如在wpa_supplicant.c中对某个函数没有定义,这时应该用grep
或者cscope等工具查找该函数名,找到在头文件里的定义,然后将头文件写入该文件中就可以了!
*/
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。还有wpa_passphrase, 来加密明文密码。将这3个文件拷贝到开发板的 /var/run 目录下。
四、配置wpa_supplicant
在板子根目录/etc中建立wpa_supplicant.conf文件
文件内容如下
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="TP-LINK_5C5472" //填写无线网络的的用户名
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk="xray030907" //填写密码
}
注意要与你的无线路由中的设置对应。
另外要注意的是,无线路由中的模式应该设为 : 11bg mixed
否则会出现些脑残情况!
五、测试
insmod vntwusb.ko
ifconfig eth1 up
iwconfig eth1 essid TP-LINK_5C5472
wpa_passphrase TP-LINK_5C5472 密码 >> /etc/wpa_supplicant.conf
之后wpa_supplicant.conf中会添加以下内容,然后把最后面的经过加密的密码修改到上面去,再把下面的内容删掉!
network={
ssid="TP-LINK_5C5472 "
#psk="1234567890"
psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}
如:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xray030907"
}
链接AP
wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -B
再执行udhcpc -i eth1 可以顺利获取ip
目前许多WIFI都采用 AES的加密方法,所以 pairwise group 两个选项中要加 CCMP 选项,来支持 AES加密,所以最终的样子应该如下:
network={
ssid="TP-LINK_5C5472"
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=1afb28b0c256957de410fa84239a95fe03fb9991c4e5eb581bb1c7ee4132563d
#psk="xxxxxxxx"
}
移植过程主要参考了: http://blog.youkuaiyun.com/ti_tantbx/article/details/7037741 的方法,多谢 ti_tantbx 的热心分享!