zoukankan      html  css  js  c++  java
  • 嵌入式开发之工具移植--wpa_suppliant工具的移植和使用

    wpa_suppliant工具的移植和使用

    前言:本文主要讲解了wpa_suppliant的两种移植方法,和wpa配置文件的使用,以及wpa_suppliant,wpa_cli参数使用方法,最后讲解了wpa_suppliant如何使用配置文件或使用wpa_cli方式与无线模块进行关联。

            目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。wireless_tools的缺点是不支持WPA认证,wpa_supplicant支持WPA认证。

    一.wpa_suppliant不依赖openssl方式

    1.解压缩厂家提供的驱动RS.GENR.LNX.SD.3.2.6.rar,进入到wpa_supplicant目录中.

    2.修改.config文件

    #cp  defconfig  .config

    #vim .config

    首先在第一行添加交叉编译链
    CC = $(CROSS_COMPILE)gcc
    然后屏蔽以下选项
    #CFLAGS +=-I/usr/local/openssl/
    #CFLAGS +=-I/usr/local/ssl/include/
    #LIBS   +=-L/usr/local/openssl/lib/
    然后将CONFIG_TLS=openssl修改成 CONFIG_TLS=internal
    CONFIG_TLS=internal
    最后将以下注释的语句改为不注释CONFIG_INTERNAL_LIBTOMMATH=y
    ifndef CONFIG_INTERNAL_LIBTOMMATH
    LTM_PAHT=/usr/src/libtommath-0.39
    CFLAGS += -I$(LTM_PATH)
    LIBS += -L$(LTM_) 
    LIBS_p +=-L$(LTM_PATH)
    endif
    

    3.执行make操作进行编译,生成wpa_suppliant,wpa_cli,wpa_passphrase等可执行工具。

    #make

    4.使用strip工具,将wap_suppliant,wpa_cli等工具调试信息去掉,减少可执行文件的大小。

    #arm-none-linux-gnueabi-strip wpa_suppiant

    #arm-none-linux-gnueabi-strip wpa_cli

    #arm-none-linux-gnueabi-strip wpa_passphrase

    将生成的wpa_supplicant 、wpa_cli和wpa_passphrase复制到根文件系统的/sbin/目录下

    二. Wpa_suppliant依赖openssl方式

    如果wpa_suppliant使用openssl库时,在进行移植wap_suppliant前,我们先要移植好openssl。

    (注意:关于openssl的移植可以参考:http://blog.csdn.net/tigerjibo/article/details/12784871

    1.解压缩厂家提供的驱动RS.GENR.LNX.SD.3.2.6.rar,进入到wpa_supplicant目录中.

    2.修改.config文件

    #cp  defconfig  .config

    #vim .config

    首先在第一行添加交叉编译链
    CC = $(CROSS_COMPILE)gcc –L/usr/local/ssl/lib/
    

    3.执行make操作进行编译,生成wpa_suppliant,wpa_cli,wpa_passphrase等可执行工具。

    #make

    4.使用strip工具,将wap_suppliant,wpa_cli等工具调试信息去掉,减少可执行文件的大小。

    #arm-none-linux-gnueabi-strip wpa_suppiant

    #arm-none-linux-gnueabi-strip wpa_cli

    #arm-none-linux-gnueabi-strip wpa_passphrase

    将生成的wpa_supplicant 、wpa_cli和wpa_passphrase复制到根文件系统的/sbin/目录下

    三.wpa_suppliant配置文件

         wpa_suppliant使用wpa.cfg文件对无线模块进行关联设置。其支持无密码验证方式,WEP开放式,WPA-PSK,WPA2-PSK,WPA-PSK/WPA2-PSK配置文件。

    开放系统配置方式:

    ctrl_interface=/var/run/wpa_supplicant
    network={
         ssid = “tigerjibo”
         key_mgmt=NONE
         priority=2
    }
    

    WEP开放式配置文件

    ctrl_interface=/var/run/wpa_supplicant
    network={
         ssid = “tigerjibo”
         key_mgmt=NONE
         wep_key0=”123456”
         wep_tx_keyidx=0
         priority=21
    }
    

    WPA-PSK配置文件

    ctrl_interface=/var/run/wpa_supplicant
    network={
         ssid = “tigerjibo”
         proto=WPA
         key_mgmt=WPA-PSK
         pairwise=TKIP
         group=TKIP
         psk=”123456”
         priority=20
    }
    

    WPA2-PSK配置

    ctrl_interface=/var/run/wpa_supplicant
    network={
         ssid = “tigerjibo”
         proto=WPA2
         key_mgmt=WPA-PSK
         pairwise=TKIP
         group=TKIP
         psk=”12345678”
         priority=20
    }
    

    WPA-PSK/WPA2-PSK

    ctrl_interface=/var/run/wpa_supplicant
    network={
         ssid = “tigerjibo”
         psk=”12345678”
         priority=20
    }
    

             将改好的wpa.cfg放到根文件系统的etc目录下。

    Note:

    (1)配置文件中的第一行ctrl_interfac不能修改,或删除,否则不能正常进行匹配工作。第二行ctrl_interface_group要屏蔽掉。

    ctrl_interface=/var/run/wpa_supplicant
    #ctrl_interface_group=root
    

    (2)在配置前要创建/var/run目录,因此常把该命令放在启动脚本中执行。

    四wpa_suppliant使用方法

    1.wpa_suppliant常用参数:

    -i<ifname> : 网络接口名称
    -c<conf>: 配置文件名称
    -C<ctrl_intf>: 控制接口名称
    -D<driver>: 驱动名字
    -p<driver_param>: 驱动参数
    -P<PID file>:通信文件
    -b<br_ifname>: 桥接口名称
    -B :在后台运行 wpa_suppliant等价于在wpa_suppliant命令后加&
    

    2. 使用以下命令即可实现wifi模块与无线路由器的关联。

    (1)不加调试信息 

     # ./wpa_supplicant-iwlan0 -Drsi -c dummy.cfg &

    (2)加-dd参数在关联时可以打印出调试信息

     # ./wpa_supplicant-iwlan0 -Drsi -c dummy.cfg  -dd &

    此处使用的是rsi无线驱动。

    五.wpa_cli使用方法

         wpa_suppliant软件包中包含客户端程序wpa_cli,通过它可以动态设置参数进行无线网络关联,不需要采用静态wpa_suppliant配置文件设置无线网络关联。

    1.wpa_cli使用方法:

    (1)启动wpa_suppliant

    以daemon方式启动wpa_suppliant:

    # wpa_supplicant -B –iwlan0 -Drsi  -c/etc/wpa.cfg

    参数-B代表后台运行, 其中的-i指定无线网卡设备名为wlan0。-D 指定驱动名字,不指定驱动名字,默认为wext。-c指定配置文件是/etc/wpa.cfg,其中不包含要连接的无线网络的配置信息。

    (2) wpa.cfg文件“

    最简单的配置文件只包含一句配置语句即可:

    ctrl_interface=/var/run/wpa_supplicant

    (3)启动wpa_cli进行交互配置

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置密码
    #wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
    //设置加密方式
    #wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
    #wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
    #wpa_cli  -iwlan0  set_network  netid  group      TKIP
    #wpa_cli  -iwlan0  set_network  netid  proto       WPA
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    其他常见无线关联方式使用方法

    连接无加密的AP

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置加密方式
    #wpa_cli  -iwlan0  set_network  netid  key_mgmt  NONE
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    连接WEP加密AP

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置加密方式
    #wpa_cli  -iwlan0  set_network  netid  key_mgmt  NONE
    //设置共享密码
    #wpa_cli  -iwlan0  set_network  wep_key0  ‘”123456”’
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    WPA-PAK/WPA2-PSK加密方式

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置密码
    #wpa_cli  -iwlan0  set_network  psk  ‘”123456”’
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    WPA-PSK加密方式

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置密码
    #wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
    //设置加密方式
    #wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
    #wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
    #wpa_cli  -iwlan0  set_network  netid  group      TKIP
    #wpa_cli  -iwlan0  set_network  netid  proto       WPA
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    WPA2-PSK加密方式

    //搜索无线网
    # wpa_cli  –iwlan0  scan 
    //显示搜索结果
    # wpa_cli  –iwlan0  scan_results 
    //查看网络连接状态
    #wpa_cli   -iwlan0  status     
    该命令会返回新增加的网络的ID,一般是0.
    #wpa_cli   -iwlan0  add_network
    //设置ssid
    #wpa_cli   -iwlan0  set_network  netid  ssid ‘“tigerjibo”’
    //设置密码
    #wpa_cli   -iwlan0  set_network  netid  psk ‘“password”’
    //设置加密方式
    #wpa_cli  -iwlan0  set_network  netid  key_mgmt  WPA-PSK
    #wpa_cli  -iwlan0  set_network  netid  pairwise    TKIP
    #wpa_cli  -iwlan0  set_network  netid  group      TKIP
    #wpa_cli  -iwlan0  set_network  netid  proto       WPA2
    //使能,进行匹配
    #wpa_cli   -iwlan0  enable_network  netid
    

    Note:

            如果系统内只有一个无线网卡,则-i wlan0参数可省略,-iwlan0是wpa_cli和wpa_supplicant进行unix方式进行进程间通信的文件名。wpa_supplicant执行时会在/data/system/wpa_supplicant目录下创建eth1文件,所以就能通信了。

    ssidpsk后面参数是字符串,在使用的时候不仅要加双引号,还要在添加单引号,否则会提示执行错误。

  • 相关阅读:
    solr和mongodb比较
    IKAnalyzer原理分析
    maven项目java包名的路径问题
    solr的EmbeddedSolrServer原理深入探讨
    团队冲刺第二阶段06
    构建之法读书笔记06——敏捷流程
    团队冲刺第二阶段05
    团队冲刺第二阶段04
    团队冲刺第二阶段03
    团队冲刺第二阶段02
  • 原文地址:https://www.cnblogs.com/phisy/p/3373703.html
Copyright © 2011-2022 走看看