wpa supplicant 移植
最近移植wifi,WIFI芯片使用rtl8723。在文件系统生成了设备节点。需要移植工具进行测试:
iwconfig:没有密码的或者wep加密的wifi,使用iwconfig就已经够用。
wpa_supplicant: 对于wpa/wpa2加密的就需要使用wpa_supplicant进行。在android上底层也是使用wpa_supplicant进行wifi的连接测试等。
移植iwconfig很快就成功,连接无密码的wifi也能成功。
而wpa_supplicant,无论是连接wpa/wpa2还是没有密码的WIFI都是连上了之后就马上断开,然后又从新连接。
网上关于wpa_supplicant移植的很多,也看了很多的资料,收集了起来做个总结。
安装wpa_supplicant之前需要移植
libnl
openssl
TomMath
TomMath是否必须我没有进一步验证,看到有文档要安装,所以就一并安装了。libnl和openssl是必须的。
参考链接
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/wpa_supplicant.html
http://wiki.beyondlogic.org/index.php?title=Cross_Compiling_iw_wpa_supplicant_hostapd_rfkill_for_ARM
http://blog.chinaunix.net/uid-29165999-id-4447034.html
http://blog.chinaunix.net/uid-26921272-id-3416832.html
http://www.arm9home.net/simple/index.php?t20393.html
http://www.linuxidc.com/Linux/2011-10/45202.htm
http://blog.csdn.net/hinyunsin/article/details/6029403
http://blog.csdn.net/dropping_1979/article/details/9621593
libnl移植
1、设置目录用于安装libnl。
cd libnl-3.2.25
mkdir install
2、配置
./configure --prefix=/home/Qt/tool/libnl-3.2.25/install CC=arm-linux-gcc LD=arm-linux-ld --enable-shared --enable-static --host=arm-linux
3、编译
make
4、安装
make install
5、将install/lib/下的libnl-3.so.200,libnl-genl-3.so.200放到开发板的/lib目录。
openssl 移植
1、设置目录用于安装openssl。
cd openssl-1.0.1e/
mkdir install
2、更改Makefile的内容。
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
# 要是用绝对路径,否者会出错
INSTALLTOP=/home/Qt/tool/openssl-1.0.1e/install
OPENSSLDIR=/home/Qt/tool/openssl-1.0.1e/install
3、编译
make
4、安装
make install
5、将install/lib/下的 libcrypto.a和libssl.a 添加到开发板的/lib目录。
tommath 移植
cd libtommath-1.0
make CC=arm-linux-gcc
产生的libtommath.a放到开发板的/lib目录。
wpa_supplicant 移植
1、生成文件配置
cd wpa_supplicant-2.0/wpa_supplicant
cp defconfig .config
2. 更改.config内容
CFLAGS += -I/home/Qt/tool/openssl-1.0.1e/install/include/
LIBS += -L/home/Qt/tool/openssl-1.0.1e/install/lib/
CC=arm-linux-gcc -L/home/Qt/tool/openssl-1.0.1e/install/lib/
CONFIG_DRIVER_NL80211=y
CONFIG_LIBNL32=y
CFLAGS += -I/home/Qt/tool/libnl-3.2.25/install/include/libnl3
LIBS += -L/home/Qt/tool/libnl-3.2.25/install/lib
CONFIG_DRIVER_WEXT=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_FAST=y
CONFIG_WPS=y
CONFIG_EAP_WPS=y
CONFIG_TLS=openssl
CONFIG_TLS=internal
CONFIG_INTERNAL_LIBTOMMATH=y
ifndef CONFIG_INTERNAL_LIBTOMMATH
LTM_PATH=/home/Qt/tool/libtommath-1.0
CFLAGS += -I$(LTM_PATH)
LIBS += -L$(LTM_PATH)
LIBS_p += -L$(LTM_PATH)
endif
3. 编译
make
4. 将生成的wpa_supplicant等工具添加到/bin目录。
cp wpa_supplicant/examples/wpa-psk-tkip.conf rootfs/etc/wpa_supplicant.conf
连接的时候更新开发板的/etc/wpa_supplicant.conf中的内容。
运行wpa_supplicant -B -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf
错误总结
1.一开始编译wpa_supplicant编译不过。
错误:
fatal error: netlink/genl/genl.h: No such file or directory
安装了libnl也不行,一开始没有指定libnl的库。
网上有说可以将 注释 CONFIG_DRIVER_NL80211=y
注释之后,编译。但是又遇到了2的问题。
2.在开发板运行,使用-D指定nl80211设备的时候出错。
wpa_supplicant -B -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf
所以就只能使用 -D wext或者 -Dwired
wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
wpa_supplicant -B -Dwired -i wlan0 -c /etc/wpa_supplicant.conf
也许使用wext/wired对于某些设备可行,但是对与我的设备。出现错误,wifi连上几秒钟又断开,然后又重新连接。
root@freescale ~$ RTL871X: set bssid:8c:be:be:01:54:d2
RTL871X: set ssid [chinanet] fw_state=0x00000088
RTL871X: start auth
RTL871X: auth success, start assoc
RTL871X: assoc success
RTL871X: OnDisassoc(wlan0) reason=7, ta=8c:be:be:01:54:d2
RTL871X: OnDeAuth(wlan0) reason=7, ta=8c:be:be:01:54:d2, ignore=0
RTL871X: set bssid:00:00:00:00:00:00
RTL871X: set bssid:b0:d5:9d:81:eb:92
RTL871X: set ssid [Aplex_CCC] fw_state=0x00000088
RTL871X: start auth
RTL871X: auth success, start assoc
RTL871X: assoc success
RTL871X: rtw_aes_decrypt(wlan0) no_gkey_bc_cnt:0, no_gkey_mc_cnt:2
RTL871X: rtw_aes_decrypt(wlan0) no_gkey_bc_cnt:0, no_gkey_mc_cnt:1
RTL871X: OnDisassoc(wlan0) reason=7, ta=b0:d5:9d:81:eb:92
RTL871X: OnDeAuth(wlan0) reason=7, ta=b0:d5:9d:81:eb:92, ignore=0
RTL871X: set bssid:00:00:00:00:00:00
RTL871X: set bssid:8c:be:be:01:54:d2
3.所以从新编译wpa_supplicant,在.config添加CONFIG_DRIVER_NL80211=y,并指定nl的路径。详见本文的libnl移植。
Tony Liu
2016-12-8
wpa supplicant 移植的更多相关文章
- wifi测试相关(iwconfig,WPA Supplicant用法)
iwconfig用法 1.打开无线网卡电源 iwconfig wlan0 txpower no 2.列出区域内的无线网络 iwconfig wlan0 scan 3.假设要连接到网络myhome(即e ...
- WPA Supplicant 用法
本文译至:https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29 ...
- wpa supplicant 保存 wifi 设置
wpa suppliclant使用wpa gui连接wifi后,下次开机的时,不能保存,需要从新手动进行连接. 自动保存方法: 配置文件/etc/wpa_supplicant.conf 添加 upda ...
- Android系统如何移植wpa_supplicant及wifi驱动
一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ...
- wpa gui
wpa gui是wpa_supplicant的ui工具. wpa_supplicant源码中包含了wpa_gui, 在目录wpa_gui-qt4中. 先运行wpa supplicant,再运行wpa ...
- wap_supplicant介绍
目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口. wpa_supplicant是一个较好 ...
- hostapd与wpa_supplicant
hostapd与wpa_supplicant hostapd hostapd includes IEEE 802.11 access point management (authentication ...
- linux 无线网络配置工具wpa_supplicant与wireless-tools
4.a. 介绍目前您可以使用我们提供的wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,您对无线网络的配置是全局性的,而非针对具体的接口.wpa_su ...
- FreeBSD 10 发布
发行注记:http://www.freebsd.org/releases/10.0R/relnotes.html 下文翻译中... 主要有安全问题修复.新的驱动与硬件支持.新的命名/选项.主要bug修 ...
随机推荐
- Javascript小括号“()”的多义性
摘要:本文主要介绍JavaScript中小括号有五种语义. Javascript中小括号有五种语义 语义1,函数声明时参数表 function func(arg1,arg2){ // ... } 语义 ...
- Ext中Grid重新load设置URL
一.前言 Extjs中grid网格有时候需要重新加载,加载的时候对应不同的URL,什么情况出现:有需要我们在添加附件的时候,添加完成了附件,需要把另一个show添加的数据重新加载到grid中,而 ...
- HDU 3090 (贪心)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3090 题目大意:一共n段路.每段路每千米都会被抢劫一定数量,可以雇佣武士护卫m千米.问最少被抢劫数量 ...
- 封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。
在实际工作中,你肯定会经常的对树进行遍历,并在树和集合之间相互转换,你会频繁的使用递归. 事实上,这些算法在逻辑上都是一样的,因此可以抽象出一个通用的算法来简化工作. 在这篇文章里,我向你介绍,我封装 ...
- Crystal Reports 2008(水晶报表) 启动时检查更新
在安装好了Crystal Reports后,每次打开的是都会出现以下提示: 服务器正在运行中 由于另一个程序正在运行中,此操作无法完成.请选择“切换到”来激活正在运行中的程序,并更正问题. 碰到这样的 ...
- Java_Servlet 中文乱码问题及解决方案剖析
一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得 ...
- Json数据格式事例查看
最简单的一种: [{"ProvinceID":1,"ProvinceName":"北京市","DateCreated": ...
- js通过sessionStorage实现的返回上一页
通常,我们都会使用比较熟悉的javascript:history.go(-1)来实现返回上一页,此种方法有一个问题就是返回上一页后不能刷新当前页面,给我们的开发带来了一定的不便,显然有时这种方法就不是 ...
- JS中的window.setTimeout()详解
相关用法: setTimeout (表达式,延时时间)setInterval (表达式,交互时间)其中延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTimeout 在执行时,是在载入 ...
- spark reduce类操作
reduce类函数分析: ---------------------------------------------------------------------------- 待补全 ------ ...