【wifi移植 2】 移植wpa_supplicant
参考文章:
http://bbs.eeworld.com.cn/thread-447273-1-1.html(加精作品)
1. 下载源码
下载wpa_supplicant-2.2.tar(openssl用到0.9.8提供的补丁)
http://hostap.epitest.fi/wpa_supplicant/
下载openssl-0.9.8e.tar
https://www.openssl.org/source/
--------------------------------------------------------------------------------------------
2. 打补丁
拷贝wpa_supplicant-2.2/patches/openssl-0.9.8e-tls-extensions.patch 到 openssl-0.9.8e目录下
~$ cd openssl-0.9.8e/
~/openssl-0.9.8e$ patch -p1 < openssl-0.9.8e-tls-extensions.patch
3. 编译openssl库
#cd openssl-0.9.8e
#sudo mkdir /opt/openssl_install
#vim Makefile
CC= arm-linux-gnueabihf-gcc
AR= arm-linux-gnueabihf-ar $(ARFLAGS) r
RANLIB= arm-linux-gnueabihf-ranlib
INSTALLTOP=/opt/openssl_install
OPENSSLDIR=/opt/openssl_install
4. make
5. sudo make install
6. 编译wpa_supplicant
进入wpa_supplicant-2.2/wpa_supplicant目录中:
#cp defconfig .config
#vim .config
CC=arm-linux-gnueabihf-gcc -L/opt/openssl_install/lib/
CFLAGS += -I/opt/openssl_install/include
LIBS += -L/opt/openssl_install/lib
LIBS_p += -L/opt/openssl_install//lib
#make
报错,缺少驱动CONFIG_DRIVER_NL80211,需要libnl库的支持。
下载安装libnl
如果不需要nl80211驱动,注释掉该配置宏即可。
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。 wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后
台运行wpa_supplicant,使用wpa_cli 来搜索、设置、和连接网络。
7. 配置wpa_supplicant
(1) 首先拷贝wpa_supplicant-2.2/wpa_supplicant/wpa_supplicant 到 开发板目录 /bin/
拷贝wpa_supplicant-2.2/wpa_supplicant/examples/wpa-psk-tkip.conf 到 开发板目录 /etc/ 并改名成wpa_supplicant.conf(路径可指定)
(2) 修改wpa_supplicant.conf配置文件
#vim /data/wpa_supplicant.conf
# WPA-PSK/TKIP
ctrl_interface=/data/wlan0(路径可指定)
network={
ssid="HWAP" //填写无线网络的的用户名
key_mgmt=WPA-PSK
proto=WPA
pairwise=TKIP
group=TKIP
psk="123456789" //填写密码
}
第一次使用这个配置文件连接,连不上,也没有找到问题所在;仔细看文档后发现下边的配置,很简单 很暴力,直接搞定。
# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers(文档内说明)
#vim /data/wpa_supplicant.conf(编辑配置文件)
# WPA-PSK/TKIP
fast_reauth=1
ctrl_interface=/data/wlan0
update_config=1
ap_scan=1
ctrl_interface_group=0
network={
ssid="HWAP"
psk="123456789"
priority=5
}
8. 测试
(1) 开发板执行
#mkdir -p /data/wlan0(与配置文件保持一致,可以不创建,执行下边命令会自动创建)
(2) 启动wpa_supplicant连接无线网络
#wpa_supplicant -Dwext -iwlan0 -c/data/wpa_supplicant.conf -dd &
有问题,连不上呀。
ioctl[SIOCSIWMODE]: Operation not permitted
换用新配置文件后,也成功。
wifi驱动加载的cfg80211.ko,应该换用nl80211驱动。
#wpa_supplicant -Dnl80211 -iwlan0 -c/data/wpa_supplicant.conf -dd &
换用新配置文件后,成功。
可以正确加载,扫描了,但是不能自动获取IP,继续搞。。
-------------------------------------------------------------------------------
以下为第一次编译情况,用的最新版本,但是需要库文件,由于不能联网,放弃操作。
------------------------------------------------------------------------------
2. 编译openssl库
$ ./config
$ make
$ make install
2.1 $ ./config
将wpa_supplicant中的补丁拷贝到openssl中
#cd openssl-0.9.8zh
#mkdir /usr/local/ssl
./config no-asm shared //配置编译选项
#vim Makefile
CC= arm-linux-gnueabihf-gcc
AR= arm-linux-gnueabihf-ar $(ARFLAGS) r
ARD= arm-linux-gnueabihf-ar $(ARFLAGS) d
RANLIB= arm-linux-gnueabihf-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ss
2.2 $ make
2.3 $ make install
在/usr/local/ssl目录下安装了ssl库
后面编译wpa_supplicant要依赖openssl中的lib和include
3. 编译wpa_supplicant
进入wpa_supplicant-2.5/wpa_supplicant目录中:
#cp defconfig .config
#vim .config
CC=arm-linux-gnueabihf-gcc -L/usr/local/ssl/lib/
CFLAGS += -I/usr/local/ssl/include
LIBS += -L/usr/local/ssl/lib
#make
使用高版本的程序(wpa_supplicant-2.5.tar和openssl-0.9.8zh.tar),会出现如下问题:
出现错误:
../src/drivers/driver_nl80211.c:25:31: fatal error: netlink/genl/genl.h: No such file or directory
compilation terminated.
make: *** [../src/drivers/driver_nl80211.o] Error 1
解决:网上说需要安装libnl-dev 和libpopt-dev后。
【wifi移植 2】 移植wpa_supplicant的更多相关文章
- WIFI驱动的移植 realtek 8188
一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为例到官网下载相应的驱动, 解压后可以 ...
- Android wifi驱动的移植 realtek 8188
Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...
- LINUX为什么要进行内核移植 内核移植的作用
LINUX为什么要进行内核移植 内核移植的作用,不移植能用么? LZ的问题应该是为什么要重新编译内核吧.既然你已经可以跑了,证明你现在用的内核已经移植到你用的硬件上,自然你也不需要做什么移植.通常 ...
- 嵌入式Linux USB WIFI驱动的移植
硬件平台:飞思卡尔MX258开发板 操作系统:Linux2.6.31 WIFI: RT2860 USB WIFI模组 交叉编译环境:gcc version 4.1.2 调试步骤: 第一步:测试U ...
- 1.ok6410移植bootloader,移植u-boot,学习u-boot命令
ok6410移植u-boot 既然是移植u-boot当然首先需要u-boot源码,这里的u-boot代码是由国嵌提供的. 一.配置编译u-boot A. 解压 u-boot 压缩文件 B. 进入解压生 ...
- ok6410 u-boot-2012.04.01移植七完善u-boot移植(u-boot移植结束)
继ok6410 u-boot-2012.04.01移植六后,开发板已支持MLC NAND.DM9000等.但还需要完善比如环境变量.mtdpart分区.裁剪.制作补丁等.下面的工作就是完善移植的u-b ...
- Linux移植之移植步骤
在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤.移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序.移植的步骤如下: 1.将网上下载的内核源码文件linux-2.6.2 ...
- (笔记)CANOpen移植(CanFestival移植)
在网上下载CanFestival源码最新版本CanFestival-3-884a60cbb83e建立以下文件夹:inc文件夹:放LM3S8962硬件相关以及驱动部分的头文件,adc.h.hw_adc. ...
- X-010 FriendlyARM tiny4412 uboot移植之移植网卡驱动TFTP用起来
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- Android WiFi 扫描流程分析(wpa_supplicant选择网络)
扫描流程 1.如果之前就已经有相关记录,优化扫描,扫描记录部分的频率信道. 2.如果1中的扫描没有结果,清除黑名单中的进行选择. 3.如果2中没有结果,进行所有频率的信道进行扫描 相关log参考: h ...
随机推荐
- 关于虚拟机可以ping通本机,本机可以ping通虚拟机,但是虚拟机就是不能上网
1 需要确定虚拟的防火墙已经关闭 2 修改vi /etc/sysconfig/network-scripts/ifcfg-eth0配置文件 增加以下参数 BOOTPROTO=none------- ...
- 自动化部署 jenkins 插件简介
一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...
- RocketMQ之四:RocketMq事务消息
事务消息 通过消息的异步事务,可以保证本地事务和消息发送同时执行成功或失败,从而保证了数据的最终一致性. 发送端执行如下几步: 发送prepare消息,该消息对Consumer不可见 执行本地事务(如 ...
- linux系统目录权限实践及结论
总结测试结论:Linux目录的读.写.执行权限说明:
- zping ping包工具20180524.exe测试版
由于经常遇到需要长时间监测网络延迟的情况,pingplotter工具虽好但是要收费.于是我决定自己写个ping工具名字暂定zping.短期目标输出带时间信息的txt或Excel日志文件.便 ...
- 快速排序的js实现
该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. var ...
- Tcpdump移植
摘要: tcpdump对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.n ...
- Javascript - BOM 对象
浏览器相关的对象.获取浏览器相关的信息,可以设置和修改浏览器属性. 0. web-app 版 TodoList 小程序 用以下内容可以自己手写一个 TodoList 小程序,再添加几行代码就可以用手机 ...
- selenium登录豆瓣网
登录流程: 实例化一个driver,然后driver.get()发送请求 最重要的:切换iframe子框架,因为豆瓣的网页中的登录那部分是一个ifrme,必须切换才能寻找到对应元素 利用seleniu ...
- 线段树维护最后一个0的位置(Restore Permutation)Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)
题意:https://codeforc.es/contest/1208/problem/D 给你长度为n的序列,s[i]的值为p[1]到p[i-1]中比p[i]小的数的和,让你求出p序列. 思路: 首 ...