1. 概述

wpa_supplicant是wifi客户端(client)加密认证工具,和iwconfig不同,wpa_supplicant支持wep、wpa、wpa2等完整的加密认证,而iwconfig只能支持wep。

和wpa_supplocant相对应的,ap端的加密认证工具为hostapd。

wpa_supplicant运行于后台,它需要借助控制台工具wpa_cli来进行手动操作。

  1. wpa_supplicant配置文件

    1. Config文件

在wpa_supplicant源码目录下,存在参考的配置文件wpa_supplicant.conf,几乎包含里所有的配置项。

我们的配置文件不需要这么复杂,开始测试阶段,我只写最简单的配置文件,其它手动操作先。

在/etc/下建立配置文件wpa_supplicant.conf,内容如下:

ctrl_interface=/var/run/wpa_supplicant

update_config=1

其中,update_config=1使能配置更改。

    1. wpa_supplicant参数

wpa_supplicant可以通过如下命令查看其所有操作参数:

#wpa_supplicant --help

wpa_supplicant: invalid option -- -

wpa_supplicant v0.8.x

Copyright (c) 2003-2011, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it

under the terms of the GNU General Public License version 2.

Alternatively, this software may be distributed under the terms of the

BSD license. See README and COPYING for more details.

usage:

wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] [-g<global ctrl>] \

-i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \

[-b<br_ifname>] [-f<debug file>] [-e<entropy file>] \

[-o<override driver>] [-O<override ctrl>] \

[-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \

[-p<driver_param>] [-b<br_ifname>] ...]

drivers:

athr = Atheros Linux driver

options:

-b = optional bridge interface name

-B = run daemon in the background

-c = Configuration file

-C = ctrl_interface parameter (only used if -c is not)

-i = interface name

-d = increase debugging verbosity (-dd even more)

-D = driver name (can be multiple drivers: nl80211,wext)

-e = entropy file

-g = global ctrl_interface

-K = include keys (passwords, etc.) in debug output

-t = include timestamp in debug messages

-h = show this help text

-L = show license (GPL and BSD)

-o = override driver parameter for new interfaces

-O = override ctrl_interface parameter for new interfaces

-p = driver parameters

-P = PID file

-q = decrease debugging verbosity (-qq even less)

-v = show version

-W = wait for a control interface monitor before starting

-N = start describing new interface

example:

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf

其中最常用的为:-i 指定端口,-c 指定配置文件,-D 指定使用的wifi驱动

我们这里只指定端口和配置文件,驱动使用默认的。

wpa_supplicant启动操作命令如下:

#wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf &

注意:启动wpa_supplicant之前wifi必须先启动,wpa_supplicnat使用在wifi client端口上。

在测试过程中,如果出现问题,可以在wpa_supplicant启动时使用参数使其输出更多的debug信息:

#wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf -dddd

  1. 手动操作

wpa_supplicant启动后,就可以通过wpa_cli来操作设置了。

wpa_cli操作有两种方法,一是直接进入CLI控制台操作,如下:

#wpa_cli

# wpa_cli

wpa_cli v0.8.x

Copyright (c) 2004-2011, Jouni Malinen <j@w1.fi> and contributors

This program is free software. You can distribute it and/or modify it

under the terms of the GNU General Public License version 2.

Alternatively, this software may be distributed under the terms of the

BSD license. See README and COPYING for more details.

Selected interface 'ath0'

Interactive mode

> add

0

> list_network

network id / ssid / bssid / flags

0 any [DISABLED]

>

另一种是直接在终端中敲击完整的命令行操作,如下:

# wpa_cli -i ath0 set_network 0 ssid '"206"'

OK

这两种方法的效果是一样的,主要区别如下:

  • wpa_cli控制台中写的命令行要简单些,不需要指定端口(如wpa_cli –i ath0),但写错了不能回退,需要重新完整写入

  • 终端写入的命令行长写,但写错里可以回退重新写。

  • 对于ssid和密码,终端中操作时需要使用单引号把双引号的字符包括起来,而cli控制台中只需要双引号,如下:

> set_network 0 psk "12345678"

OK

wpa_cli支持的所有命令可以通过help操作来查看

> help

  1. 扫描于连接

以下是我的一个完整的扫描连接过程:

  1. 启动wpa_supplicant和wpa_cli.

# wpa_supplicant -i ath0 -c /etc/wpa_supplicant.conf &

# wpa_cli

  1. 扫描ap

使用scan命令扫描网络,结束后使用scan_results命令查看网络。

> scan

OK

> driver_atheros_event_wireless: scan result event - SIOCGIWSCAN

<3>CTRL-EVENT-SCAN-RESULTS

<3>WPS-AP-AVAILABLE

> > scan_results

bssid / frequency / signal level / flags / ssid

00:23:68:26:40:c8 2412 36 [ESS] CMCC

00:26:5a:26:33:ac 2437 38 [WPA-PSK-TKIP][WPA2-PSK-TKIP][WPS][ESS] LZ205

>

  1. 增加网络

使用add_network命令增加一个网络,可以使用list_network查看增加的网络信息。

> add_network

0

> list_network

network id / ssid / bssid / flags

0 any [DISABLED]

  1. 设定网络连接的ssid和密码

使用set_network命令设定连接的ap的用户名和密码

> set_network 0 ssid "LZ205"

OK

> set_network 0 psk "20100208"

OK

  1. 使能网络连接

使用enable_network命令使能网络连接

> enable_network 0

OK

> driver_atheros_event_wireless: scan result event - SIOCGIWSCAN

ath0: Trying to associate with 00:26:5a:26:33:ac (SSID='LZ205' freq=2437 MHz)

<3>CTRL-EVENT-SCA ieee80211_ioctl_setmlme: os_opmode=1

[ieee80211_ioctl_setmlme] set desired bssid 00:26:5a:26:33:ac

N-RESULTS

<3>WPS-AP-AVAILABLE

<3>Trying to associate with 00:26:5a:26:33:ac (SSID='LZ205' freq=2437 MHz)

ath_paprd_cal PAPRD excessive failure disabling PAPRD now

ath0: Associated with 00:26:5a:26:33:ac

<3>Associated with 00:26:5a:26:33:ac

vap-0: mlme_sta_swbmiss_timer_handler: SW Beacon miss!!

vap-0: mlme_sta_swbmiss_timer_handler: SW Beacon miss!!

vap-0: ieee80211_vap_iter_beacon_miss: Beacon miss, will indicate to OS!!

ath0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect

<3>WPA: 4-Way Handshake failed - pre-shared key may be incorrect

ath0: CTRL-EVENT-DISCONNECTED bssid=00:26:5a:26:33:ac reason=0

<3>CTRL-EVENT-DISCONNECTED bssid=00:26:5a:26:33:ac reason=0

ieee80211_ioctl_setmlme: os_opmode=1 sult event - SIOCGIWSCAN

[ieee80211_ioctl_setmlme] set desired bssid 00:26:5a:26:33:ac

<3>CTRL-EVENT-SCAN-RESULTS

<3>WPS-AP-AVAILABLE

ath0: Trying to associate with 00:26:5a:26:33:ac (SSID='LZ205' freq=2437 MHz)

<3>Trying to associate with 00:26:5a:26:33:ac (SSID='LZ205' freq=2437 MHz)

ath0: Associated with 00:26:5a:26:33:ac

<3>Associated with 00:26:5a:26:33:ac

ath0: WPA: Key negotiation completed with 00:26:5a:26:33:ac [PTK=TKIP GTK=TKIP]

<3>WPA: Key negotiation completed with 00:26:5a:26:33:ac [PTK=TKIP GTK=TKIP]

ath0: CTRL-EVENT-CONNECTED - Connection to 00:26:5a:26:33:ac completed (auth) [id=0 id_str=]

<3>CTRL-EVENT-CONNECTED - Connection to 00:26:5a:26:33:ac completed (auth) [id=0 id_str=]

看到CTRL-EVENT-CONNECTED信息,表示连接完成。

  1. 状态查看

使用status命令可以查看网络状态,使用quit退出CLI后,可以使用iwconfig命令查看ath0连接状态。

> status

bssid=00:26:5a:26:33:ac

ssid=LZ205

id=0

mode=station

pairwise_cipher=TKIP

group_cipher=TKIP

key_mgmt=WPA2-PSK

wpa_state=COMPLETED

address=20:13:08:15:16:13

  1. config保存

使用save命令可以保存当前的连接设置,下次wifi启动时会自动连接此AP.

保存后,wpa_supplicant.conf文件被自动修改为如下内容:

ctrl_interface=/var/run/wpa_supplicant

update_config=1

device_type=0-00000000-0

network={

ssid="LZ205"

psk="20100208"

}

  1. 自动连接

若希望wifi启动后自动连接到预先设置的ap,只需按如下设置脚本即可以,如果预先设置里多个ap则每个网络需要设置优先级参数priority。

ctrl_interface=/var/run/wpa_supplicant

update_config=1

network={

ssid="LZ205"

psk="20100208"

priority=2

}

wpa_supplicant 配置与应用的更多相关文章

  1. wpa_supplicant 移植及 linux 命令行模式配置无线上网

    本文涉及内容为linux 命令行模式配置无线上网 及 wpa_supplicant 移植到开发板的过程,仅供参考. 1.源码下载 wpa_supplicant 源码下载地址 :http://hosta ...

  2. 【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant

    wpa_supplicant是一个跨平台的无线安全管理软件,这里需要用它来对无线网络进行配置,wpa_supplicant相关工具已经移植好,包含在我们提供的文件系统中. 配置无线网络 wpa_sup ...

  3. 让 FreeBSD 和 Gentoo Linux 在 ZFS 存储卷上共存

    自我回归到 Librem 15 已经有段时间了.我一般会选择 FreeBSD 来处理所有的事情,但有时会要访问一个运行在 Librem 平台上的 Linux OS,以便用它来帮助我对一些遗留的设备驱动 ...

  4. 开始使用gentoo linux——gentoo安装笔记(下)

    gentoo安装笔记(下) 上一章,已经对操作系统安装做了充分准备,并且已经从livecd(u盘系统)切换进入了gentoo安装环境中. 不过现在才是真正的开始!打起精神!这可不是在装ubuntu! ...

  5. Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动

    前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...

  6. (原创)AP6212移植到AM335X自主开发板上

    转载请指明出处. 参考<关于AM335X移植SDIO WIFI的简易教程> http://www.deyisupport.com/question_answer/dsp_arm/sitar ...

  7. FL2440 rt3070模块station模式移植

    ---------------------------------------------------------------------------------------------------- ...

  8. 4412 使用小度wifi

    本文转载至:https://blog.csdn.net/robertsong2004/article/details/42985223 作者:刘老师,华清远见嵌入式学院讲师. FS_4412可以同链接 ...

  9. linux 无线网络配置工具wpa_supplicant与wireless-tools

    4.a. 介绍目前您可以使用我们提供的wireless-tools 或wpa_supplicant工具来配置无线网络.请记住重要的一点是,您对无线网络的配置是全局性的,而非针对具体的接口.wpa_su ...

随机推荐

  1. 仿主题广告轮播js

    function SlideShow(c) { var a = document.getElementById("slide"); var f = document.getElem ...

  2. 基于SSM框架的简易的分页功能——包含maven项目的搭建

    新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...

  3. 操作系统之进程篇(4)--经典进程间通信(IPC)问题

    1. 哲学家进餐问题: 问题描述: 五个哲学家在一个圆桌上进餐,每人的面前放了一盘意大利面,两个盘子之间有一个叉子,但是由于盘子里面的面条十分光滑,需要两个叉子才能进行就餐行为.餐桌的布局如下图所示: ...

  4. Java面向对象程序设计--泛型编程

    1. 为何要进行泛型编程? 泛型变成为不同类型集合提供相同的代码!省去了为不同类型而设计不同代码的麻烦! 2. 一个简单泛型类的定义: public class PairTest1 { public ...

  5. C#事件作用和用法

    例如有下面的需求需要实现:程序主画面中弹出一个子窗口.此时主画面仍然可以接收用户的操作(子窗口是非模态的).子窗口上进行某些操作,根据操作的结果要在主画面上显示不同的数据. 即如下图所示: 大多数我们 ...

  6. HTML 表格的书写方式:

    首先要进行reset  table{border-collapse:collapse;border-spacing:0;}th{text-align:inherit;} 1. caption标签对整个 ...

  7. 服务器端启动soket多线程

    方法一: Socket socket=null try{ ServerSocket serversocket=nwe ServerSocket(8080) while(true){ socket=se ...

  8. (转载)将DELPHI数据库连接写进INI配置文件中

    将DELPHI数据库连接写进INI配置文件中 procedure TDM.DataModuleCreate(Sender: TObject); var piececonfg:Tinifile; pat ...

  9. Python里隐藏的 " 诗 "

    在 Python 的Lib目录里有一个:this.Py (或者在交互式解释器中输入import this) 它其实是隐藏的一首诗 The Zen of Python, by Tim Peters &l ...

  10. 2014年度辛星html教程夏季版第三节

    接下来我们继续学习HTML中的标签,希望大家能够再接再厉,同时辛星也会支持大家,我们一起努力,一起加油.我们本小节来认识另外几个标签. *************空格和换行************** ...