在本周的最后一个工作日的最后一个小时里,一个困扰了我几天的问题在近乎绝望的调试中突然通过了!人生真是充满惊喜啊
本来已经接近放弃了,抱着最后一试的打算,居然成功了。阳光果然就在50米开外的拐角处啊,坚持到底不放弃,奇迹就会出现!
======================================================== 正文 ========================================================
因为现在的无线wifi网络大多是wpa加密。所以需要移植wpa_supplicant工具。 一、下载源码 下载wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的补丁) #tar xvfz wpa_supplicant-0.7.3.tar.gz 下载www./source/openssl-0.9.8e.tar.gz #tar zxvf openssl-0.9.8e.tar.gz 二、编译openssl库 在/usr/local/ssl目录下安装了ssl库 后面编译wpa_supplicant要依赖openssl中的lib和include 三、编译wpa_supplicant
/*注:这里可能出现很多编译错误!不过不要慌张,认真看下到底是什么错误!基本上都是缺少函数声明, 不知道作者为什么会犯这样的错误。比如在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={
另外要注意的是,无线路由中的模式应该设为 : 11bg mixed 否则会出现些脑残情况!
五、测试 insmod zd1211rw.ko ifconfig wlan0 up iwconfig wlan0 essid max wpa_passphrase ssid名 密码 >> /etc/wpa_supplicant.conf
之后wpa_supplicant.conf中会添加以下内容,然后把最后面的经过加密的密码修改到上面去,再把下面的内容删掉! network={ 如: network={ ssid="max" //填写无线网络的的用户名 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 plaincopy
经过无比煎熬的google,终于发现一个阿根廷人和一个德国人的对话,说这完全是正常情况,只是debug信息! 看到这里,我重新编译内核,将zd1211的debug选项去掉,再执行连接,发现顺利通过了!!
|
|