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

配置无线网络


wpa_supplicant软件包分为服务端wpa_supplicant和客户端wpa_cli两部分组成。wpa_supplicant为主服务程序,wpa_cli即client的意思,相当于wpa_supplicant的UI。
配置无线网络有两种方式,可以使用wpa_cli客户端手动方式,还可以使用conf配置文件进行自动方式。
wpa_supplicant配置路径:/etc/wpa_supplicant.conf

手动设置

⑴ 启动wpa_supplicant后台服务:
1
#
wpa_supplicant -iwlan0 -Dwext -B -c/etc/wpa_supplicant.conf
⑵ 运行客户端程序,进入wpa_cli控制台:

1
#
wpa_cli -iwlan0
这时将进入wpa_cli的命令行界面,输入如下命令,扫描并显示无线热点:
> scan
> scan_r
扫描结果将类似如下打印:
bssid / frequency / signal level/ flags / ssid
0a:11:b5:25:d8:cb       2412   -61    [WPA-EAP-CCMP+TKIP][WPA2-EAP-CCMP+TKIP][ESS] CMCC-AUTO
0c:82:68:c7:60:28       2447   -58     [WPA2-PSK-CCMP+TKIP][ESS]MYIR-LINK
bc:d1:77:21:11:72       2437   -60     [WEP][ESS] TP-LINK
00:11:b5:19:d2:86       2412   -61     [ESS] CMCC
00:23:89:03:f8:20       2462   -68     [ESS] ChinaNet
这里显示了附近的无线网络,每个无线网络都有5项参数,分别为MAC地址、频率、信号强度、加密类型、SSID。
频率:单位为Hz,同时也知道了其所在频道。例如2412即2.412GHz,就是频道1,2437即2.437GHz,则是频道6。
信号强度:单位为dbm,一般为负值,数值越大,信号越强,例如-60dbm的CMCC比-61dbm的CMCC-AUTO信号要强。
加密类型:[ESS]表示无加密的无线网络,[WEP]表示WEP加密方式,[WPA2-PSK-CCMP+TKIP]表示WPA2加密方式。
⑶ 增加网络
在连接无线网络之前,需要新建一个网络配置,使用add_network命令增加一个网络,可以使用list_network查看增加的网络信息。在wpa_cli的命令行中输入:

1
2
3
4
5
6
>

list_n[
/align]network
id

/

ssid
/

bssid
/

flags
>

add_n
0
>

list_n
network
id

/

ssid
/

bssid
/

flags
0              

any     [DISABLED]
如果之前没有配置过网络,使用“add_n”将返回0号配置,用“add_n <num>”可以建立更多配置。

⑷ 设定连接

① 无加密无线网络
在wpa_cli的命令行中输入:

1
>

set_n
0

ssid
"MYIR-LINK"[/align]>

set_n
0

key_mgmt NONE
② WEP加密的无线网络

假设key为“12345”在wpa_cli的命令行中输入:

1
2
3
>

set_n
0

ssid
"MYIR-LINK-WEP"
>

set_n
0

key_mgmt NONE
>

set_n
0

wep_key
0

"12345"
③ WPA-PSK/WPA2-PSK加密的无线网络
假设key为“Make Your Idea Real”,在wpa_cli的命令行中输入:

1
>

set_n
0

ssid
"MYIR-LINK-WPA2"[/align]>

set_n
0

psk
"Make
Your Idea Real"
⑸ 使能网络连接
使用enable_network命令使能网络连接:

1
>

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

自动设置

将当前的网络配置保存到conf文件,方便以后调用,在wpa_cli的命令行中输入:

1
>

save_c
最后输入“quit”或“CTRL+C” 退出wpa_cli命令行界面。
通过DHCP获取IP地址:

1
#
udhcpc -n -i wlan0
通过ping命令检查网络是否联通,例如:

1
#
ping 192.168.1.1

密文保存

前面为了方便介绍,配置文件采用的是明文方式保存,这里介绍如何使用密文方式加密conf文件中的key参数。在开发板中使用wpa_passphrase工具转换连接密码,将明文key转换为密文,如果key中包含空格需使用斜杠转译字符,例如:

1
#
wpa_passphrase MYIR-LINK Make\ Your\ Idea\ Real
然后终端上会打印出配置文件的密文参数形式,如下图所示:
network={
       ssid="MYIR-LINK"
       #psk="Make Your Idea Real"
psk=31bb00abde903c543e774637489c20938652aa13f804b54fbf3f124336ef16ba
}

附录 wpa_cli 命令

Full command

Short command

Description

status

stat

displays the current connection status

disconnect

disc

prevents wpa_supplicant from connecting to any  access point

quit

q

exits wpa_cli

terminate

term

kills wpa_supplicant

reconfigure

recon

reloads wpa_supplicant with the configuration  file supplied
(-c parameter)

scan

scan

scans for available access points
(only scans it, doesn't display anything)

scan_result

scan_r

displays the results of the last scan

list_networks

list_n

displays a list of configured networks and their  status
(active or not, enabled or disabled)

select_network

select_n

select a network among those defined to initiate  a connection
(ie select_network 0)

enable_network

enable_n

makes a configured network available for  selection
(ie enable_network 0)

disable_network

disable_n

makes a configured network unavailable for  selection
(ie disable_network 0)

remove_network

remove_n

removes a network and its configuration from the  list
(ie remove_network 0)

add_network

add_n

adds a new network to the list. Its id will be  created automatically

set_network

set_n

shows a very short list of available options to  configure a network when supplied with no parameters.
See next section for a list of extremely useful  parameters to be used with set_network and get_network.

get_network

get_n

displays the required parameter for the specified  network. See next section for a list of parameters

save_config

save_c

saves the configuration

【ARM-Linux开发】Wi-Fi 应用工具wpa_supplicant的更多相关文章

  1. 在Ubuntu上建立Arm Linux 开发环境

    我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu.但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦.在此记录一下,一来自己比较健忘, ...

  2. 成功移植SQLite3到ARM Linux开发板

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

  3. minigui移植到arm linux开发板上无法执行

    要保证目录下有该文件 /etc/MiniGUI.cfg 复制过程使用cp –af 强制复制

  4. linux开发node相关的工具

    epel-release yum install epel-release node yum install nodejs mongodb 安装mongodb服务器端 yum install mong ...

  5. Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核

    Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核 标签(空格分隔): Qemu ARM Linux 在上文<Qemu搭建ARM vexpress开发环 ...

  6. arm linux 支持 wifi (wpa_supplicant)

    背景: 公司用的产品主板支持wifi接口,为了加强产品的功能,做wifi的底层支持. 有关知识点:浅谈 Linux 内核无线子系统 概览 主要的流程如下: 内核配置 + 有关驱动的移植 + 软件的移植 ...

  7. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS

    上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来.但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Kernel Panic). 原因是找不到文件 ...

  8. 应聘linux/ARM嵌入式开发岗位

    **************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

  9. arm的开发工具

    网上有free的ide可以开发arm cortex的芯片,可以参考List of ARM Cortex-M development tools,Wikipedia,里面有emIDE,embitz等,虽 ...

随机推荐

  1. [Dart] Dynamic variable in Dart

    First way to create dynamic variable is using 'dymaic' keywrod: dynamic a = 123; a = '123'; Second w ...

  2. Hive的安装和配置

    前提是:hadoop必须已经启动了***         1°.解压hive的安装包            [crxy@master soft]# tar -zxvf apache-hive-0.14 ...

  3. oracle的jdbc.properties文件配置

    ----------Oracle #do Oracle JDBC jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:o ...

  4. Hdu CRB and Queries(整体二分)

    CRB and Queries Time Limit: 6000 MS Memory Limit: 131072 K Problem Description There are N boys in C ...

  5. 在qml中使用model给委托对象MapPolylIne的path属性赋值。

    遇到两个崩溃的问题. 1.A线程中给赋值了变量 listA, 线程B中使用函数Add(QList<GeoPath> &list),由于在其函数中调用了list.at(index), ...

  6. P1021 邮票面值设计——搜索+完全背包

    P1021 邮票面值设计 题目意思是你最多用n张邮票,你可以自己设定k种邮票的面值,每种邮票数量无穷,你最多能用这k种邮票在不超过n张的情况下,组合成的价值要求是从1开始连续的, 求最大能连续到多少: ...

  7. mac 启动mysql

    sudo /usr/local/mysql/support-files/mysql.server stop sudo /usr/local/mysql/support-files/mysql.serv ...

  8. 对list某个条件排序,并实现分页

    package com.jcloud.aioc.api.controller.Test; import com.alibaba.fastjson.JSON; import org.apache.poi ...

  9. 关于bootstrap table 固定列宽

    首先为table 设置 style="table-layout: fixed;" <table id="assessStage" data-height= ...

  10. iOS UILabel镂空特效

    http://stackoverflow.com/questions/18716751/drawing-a-path-with-subtracted-text-using-core-graphics ...