前言:本文主要讲解了wpa_suppliant的两种移植方法,和wpa配置文件的使用,以及wpa_suppliantwpa_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

#make

4.使用strip工具,将wap_suppliantwpa_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_cliwpa_passphrase复制到根文件系统的/sbin/目录下

. Wpa_suppliant依赖openssl方式

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

(注意:关于openssl的移植可以参考:http://tigerjibo.blog.51cto.com/7718010/1309570


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_suppliantwpa_cliwpa_passphrase等可执行工具。

#make

4.使用strip工具,将wap_suppliantwpa_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_cliwpa_passphrase复制到根文件系统的/sbin/目录下

.wpa_suppliant配置文件

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

开放系统配置方式:

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

WEP开放式配置文件

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

WPA-PSK配置文件

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

WPA2-PSK配置

ctrl_interface=/var/run/wpa_supplicant
network={
     ssid = “edanb”
     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 = “edanb”
     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 : 网络接口名称
-c: 配置文件名称
-C: 控制接口名称
-D: 驱动名字
-p: 驱动参数
-P:通信文件
-b: 桥接口名称
-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 ‘“edanb”’
//设置密码
#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 ‘“edanb”’
//设置加密方式
#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 ‘“edanb”’
//设置加密方式
#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 ‘“edanb”’
//设置密码
#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 ‘“edanb”’
//设置密码
#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 ‘“edanb”’
//设置密码
#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参数可省略,-iwlan0wpa_cliwpa_supplicant进行unix方式进行进程间通信的文件名。wpa_supplicant执行时会在/data/system/wpa_supplicant目录下创建eth1文件,所以就能通信了。

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