wpa_supplicant的移植和可能遇到的问题

24 篇文章 0 订阅
7 篇文章 0 订阅
 

wpa_supplicant的移植和可能遇到的问题

(转:http://blog.csdn.net/ti_tantbx/article/details/7037741)

分类: 嵌入式各种移植 linux开发环境常见问题集   2098人阅读  评论(5)  收藏  举报

在本周的最后一个工作日的最后一个小时里,一个困扰了我几天的问题在近乎绝望的调试中突然通过了!人生真是充满惊喜啊


本来已经接近放弃了,抱着最后一试的打算,居然成功了。阳光果然就在50米开外的拐角处啊,坚持到底不放弃,奇迹就会出现!


========================================================

正文

========================================================


因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具。

一、下载源码
        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-gnu-gcc
                AR= arm-linux-gnu-ar $(ARFLAGS) r
                RANLIB= arm-linux-gnu-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_supplicant

在板子根目录nfsroot/etc中建立wpa_supplicant.conf文件


文件内容如下

ctrl_interface=/var/run/wpa_supplicant


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

注意要与你的无线路由中的设置对应。


另外要注意的是,无线路由中的模式应该设为 :  11bg mixed

否则会出现些脑残情况!


五、测试

insmod zd1211rw.ko

ifconfig wlan0 up

iwconfig wlan0 essid  max

wpa_passphrase ssid名 密码 >> /etc/wpa_supplicant.conf


之后wpa_supplicant.conf中会添加以下内容,然后把最后面的经过加密的密码修改到上面去,再把下面的内容删掉!

network={
      ssid="max"
      #psk="1234567890"
      psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba
}

如:

network={

                ssid="max"     //填写无线网络的的用户名
                key_mgmt=WPA-PSK
                proto=WPA
                pairwise=TKIP
                group=TKIP

                psk=4b2bc7cbb3710e9ea43f09e8d57e8bdb3b2a2127af44960d73216c3612f6baba                

                #psk="1234567890" //填写密码
}


链接AP

wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B

当时我遇到的问题就是怎么都连不上,会打出以下信息

cfg80211: Calling CRDA to update world regulatory domain

不断的反复的出现

用dmesg查看后台,发现有该信息打出:

[plain]  view plain copy
  1. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0100077 bits 24  
  2. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0200998 bits 24  
  3. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x034644d bits 24  
  4. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0025f98 bits 24  
  5. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0025f9a bits 24  
[plain]  view plain copy
  1. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0100077 bits 24  
  2. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0200998 bits 24  
  3. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x034644d bits 24  
  4. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0025f98 bits 24  
  5. zd1211rw 2-1:1.0: zd_usb_rfwrite() value 0x0025f9a bits 24  

经过无比煎熬的google,终于发现一个阿根廷人和一个德国人的对话,说这完全是正常情况,只是debug信息!

看到这里,我重新编译内核,将zd1211的debug选项去掉,再执行连接,发现顺利通过了!!


在执行udhcpc -i wlan0 可以顺利获取ip

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值