参考文章:

  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的更多相关文章

  1. WIFI驱动的移植 realtek 8188

    一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为例到官网下载相应的驱动, 解压后可以 ...

  2. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

  3. LINUX为什么要进行内核移植 内核移植的作用

    LINUX为什么要进行内核移植 内核移植的作用,不移植能用么?   LZ的问题应该是为什么要重新编译内核吧.既然你已经可以跑了,证明你现在用的内核已经移植到你用的硬件上,自然你也不需要做什么移植.通常 ...

  4. 嵌入式Linux USB WIFI驱动的移植

    硬件平台:飞思卡尔MX258开发板 操作系统:Linux2.6.31 WIFI:    RT2860 USB WIFI模组 交叉编译环境:gcc version 4.1.2 调试步骤: 第一步:测试U ...

  5. 1.ok6410移植bootloader,移植u-boot,学习u-boot命令

    ok6410移植u-boot 既然是移植u-boot当然首先需要u-boot源码,这里的u-boot代码是由国嵌提供的. 一.配置编译u-boot A. 解压 u-boot 压缩文件 B. 进入解压生 ...

  6. ok6410 u-boot-2012.04.01移植七完善u-boot移植(u-boot移植结束)

    继ok6410 u-boot-2012.04.01移植六后,开发板已支持MLC NAND.DM9000等.但还需要完善比如环境变量.mtdpart分区.裁剪.制作补丁等.下面的工作就是完善移植的u-b ...

  7. Linux移植之移植步骤

    在这里总结一下我在移植Linux2.6.22.6内核过程时的步骤.移植成功后最终能挂接做好的根文件系统,并且启动第一个init程序.移植的步骤如下: 1.将网上下载的内核源码文件linux-2.6.2 ...

  8. (笔记)CANOpen移植(CanFestival移植)

    在网上下载CanFestival源码最新版本CanFestival-3-884a60cbb83e建立以下文件夹:inc文件夹:放LM3S8962硬件相关以及驱动部分的头文件,adc.h.hw_adc. ...

  9. X-010 FriendlyARM tiny4412 uboot移植之移植网卡驱动TFTP用起来

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  10. Android WiFi 扫描流程分析(wpa_supplicant选择网络)

    扫描流程 1.如果之前就已经有相关记录,优化扫描,扫描记录部分的频率信道. 2.如果1中的扫描没有结果,清除黑名单中的进行选择. 3.如果2中没有结果,进行所有频率的信道进行扫描 相关log参考: h ...

随机推荐

  1. Scala面向对象02

  2. 数据分析电子商务B2C全流程_数据分析师

    数据分析电子商务B2C全流程_数据分析师 目前,绝大多数B2C的转化率都在1%以下,做的最好的也只能到3.5%左右(比如以卖图书为主的当当) 我想,所有的B2C都会关心三个问题:究竟那97%去了哪里? ...

  3. MongoDB导入文件夹(内含json和bson文件)

    1. 使用mongo命令将数据库删除: mongo命令: use db_name; db.dropDatabase() 2. 导入(指定文件夹)数据: linux命令: mongorestore -d ...

  4. Vue 组件中 data 为什么必须是函数

    原文地址 vue组件中的data必须是函数 类比引用数据类型 Object是引用数据类型,如果不用function 返回,每个组件的data 都是内存的同一个地址,一个数据改变了其他也改变了; jav ...

  5. VMware workstation安装Windows Server 2012 R2步骤详解(附下载链接)

    话不多说,直接上链接.所需工具: 1.VMware workstation 14.0(版本无所谓)                   附链接:https://pan.baidu.com/s/1CrH ...

  6. 英特尔®oneAPI简介及动手实验研讨会召集令

    Intel Developer Zone 2019年超级计算大会英特尔正式发布了oneAPI软件行业计划及其beta产品,在上篇文章中我们已为您介绍了oneAPI的基本含义,本文将继续为您介绍oneA ...

  7. centos启动排障

    centos6 启动引导第一阶段破坏 破坏mbr前446字节 先备份 [root@centos6 ~]# dd if=/dev/sda of=/root/mbr bs=1 count=446 破坏 [ ...

  8. CSS实现网页背景图片自适应全屏,自适应背景图片

    一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块露白,简而言之,就是实现能自适应屏幕大小又不会变形 ...

  9. WebContent下新建目录放入jsp,跳转servlet页面出错解决

    为方便分类jsp文件,于是在web-content下新建了一级目录,将jsp文件放入其中,结果原本跳转的servlet出现404错误: 解决如下: 在用eclipse创建的servle会自动生成一个注 ...

  10. 使用PowerShell 自动安装IIS 及自动部署网站

    执行环境:Windows Server 2012 R2 安装iis核心代码,可自定义安装项 注意这里不能使用add-windowsfeature  "Web-Filtering", ...