wpa_supplicant移植与使用

上一篇文章讲述了如何在内核中配置RT5370驱动,配置完了之后便是使用。当无线网络是 WPA/WPA2 加密方式时,WIFI 客户端也需要用此加密方式才能连接上网络。连接WPA/WPA2 加密网络方法是修改无线网络配置文件后直接连接网络。

要连接WPA/WPA2 加密方式的路由需要使用wpa_supplicant工具,需要对它进行移植。

先说一下软件环境:

上位机:虚拟机中使用ubuntu12.04

移植代码版本:wpa_supplicant-0.7.3  下载地址:http://download.csdn.net/detail/andylauren/9597596

    openssl-0.9.8e      下载地址:http://download.csdn.net/detail/andylauren/9597598

在启动RT5370网卡时需要的固件文件:rt2870.bin  下载地址:http://download.csdn.net/detail/andylauren/9597594


然后我们就开始我们的移植工作

wpa_supplicant的其他版本可以访问官方网站进行下载:http://w1.fi/releases/

1、首先解压wpa_supplicant-0.7.3,在解压得到的文件夹中找到patches目录,这里面存放的是openssl的补丁文件,里面有很多个补丁,也就是与wpa_supplicant-0.7.3匹配的openssl版本,可以在官方网站进行选择,ftp://ftp.openssl.org/source/old/0.9.x/

我这里选择的是openssl-0.9.8e版本。

2、知道了openssl的版本后,下载openssl并解压,把wpa_supplicant-0.7.3里面的patches文件夹下的openssl-0.9.8e-tls-extensions.patch文件拷贝到openssl-0.9.8e目录下,运行:pathc–p1<openssl-0.9.8e-tls-extensions.patch

简单解释一下,pathc是打补丁命令,后面的-p1是忽略补丁中的第一级目录。

3、编译openssl

首先建立openssl的安装目录,建议安装在openssl-0.9.8e目录下,因为生成的库等只在交叉编译wpa_supplicant时使用,这样可以保持系统干净。我建立的目录为openssl-arm。

进入openssl-0.9.8e目录修改Makefile,修改如下:
CC=arm-linux-gcc
AR=arm-linux-ar$(ARFLAGS) r
RANLIB=arm-linux-ranlib
INSTALLTOP=刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错
OPENSSLDIR=刚才你建立的安装目录,要使用绝对路径,不然在make install的时候会出错

我的配置为

INSTALLTOP=/home/linux/arm/wpa-supplicant/openssl-arm

# Do not edit this manually. Use Configure --openssldir=DIR do change this!
OPENSSLDIR=/home/linux/arm/wpa-supplicant/openssl-arm

然后执行make和make install

会在openssl-arm目录中生成我们移植wpa_supplicant需要的头文件和库文件。

4、编译wpa_supplicant

首先进入wpa_supplicant目录,建立配置文件:
cp defconfig .config
然后修改.config,增加以下内容:

CC=arm-linux-gcc -L/home/linux/arm/wpa-supplicant/openssl-arm/lib
CFLAGS+= -I/home/linux/arm/wpa-supplicant/openssl-arm/include
LIBS+= -L/home/linux/arm/wpa-supplicant/openssl-arm/lib
CC是指定交叉编译链,并且通过-L指定刚刚编译好的openssl的库文件目录

CFLAGS是通过-I指定刚刚编译好的openssl的头文件目录

LIBS通过-L指定刚刚编译好的openssl的库文件目录
设置好了之后就可以保存退出,进行make

make后会在该文件夹下生成我们需要的二进制可执行文件,需要我们拷贝到开发板的/bin目录下。其中有3个需要拷贝的文件:

wpa_supplicant,wpa_cli,wpa_passphrase

将这三个文件想办法弄到开发板的/bin目录下。

5、编写wpa_supplicant.conf文件

在该文件夹下有无线网卡配置文件wpa_supplicant.conf需要我们修改后并拷贝到开发板的/etc目录下。

修改内容如下:

ctrl_interface=/var/run/wpa_supplicant


update_config=1

network={
     ssid="mingzi"
     key_mgmt=WPA-PSK
     psk="mimamimamima"
}     

修改完成后就可以保存退出,将该文件想办法拷贝到开发板的/etc目录下。


6、使用wpa_supplicant

现在我们在开发板上可以使用wpa_supplicant进行无线网卡的连接了,前提是已经将无线网卡的驱动加载并将无线网卡插在了开发板上。

然后可以使用
wpa_supplicant -ira0 -Dwext -c/etc/wpa_supplicant.conf -dd &
wpa_supplicant -ira0 -Dwext -c/etc/wpa_supplicant.conf &
这两条指令中的任意一个,-dd的会输出更过的信息。


如果使用的是我上一节中讲到的内核自带驱动,会出现一个rt2x00lib_request_firmware: Error - Failed to request Firmware.问题。

意思是找不到无线网卡的固件,这个问题很好解决,只需要在网上下载到无线网卡的固件,并放到开发板的/lib/firmware目录下即可。

如果使用的是RT5370无线网卡可以下载我上面提供的固件,已经经过我验证是可以的。也可以在官方下载:http://rt2x00.serialmonkey.com/pipermail/users_rt2x00.serialmonkey.com/2013-January/005610.html

这个下载后需要改名为rt2800.bin

然后我们就可以执行wpa_supplicant命令了。

但是像我这样移植后的wpa_supplicant会出现无法启动网卡的错误,只需要手动up无线网卡即可,可能这里你不会遇到这个问题,因为这可问题可能是由于linux内核驱动的原因,我在移植无线网卡官方驱动时,也就是不使用linux内核自带驱动情况下是不需要手动up的。

执行wpa_supplicant -ira0 -Dwext -c/etc/wpa_supplicant.conf -dd &命令后当看到如下输出说明无线网卡已经启动起来了。

wpa_driver_wext_set_operstate: operstate 0->1 (UP)
netlink: Operstate: linkmode=-1, operstate=6
EAPOL: External notification - portValid=1
EAPOL: External notification - EAP success=1
EAPOL: SUPP_PAE entering state AUTHENTICATING
EAPOL: SUPP_BE entering state SUCCESS
EAP: EAP entering state DISABLED
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: Supplicant port status: Authorized
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed successfully
RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
EAPOL: startWhen --> 0
EAPOL: disable timer tick
之后可以配置静态IP或者使用udhcpc -i wlan0进行动态申请IP。

root@SBC8600:/# udhcpc -i wlan0
udhcpc (v1.11.3) started
Sending discover...
Sending select for 192.168.1.105...
Lease of 192.168.1.105 obtained, lease time 7200
adding dns 10.10.0.1
adding dns 124.207.160.106
这之后就可以使用无线网络了,移植工作完成。






  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值