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. Hive的安装和配置

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

  2. php利用webuploader实现超大文件分片上传、断点续传

    PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...

  3. MongoDB空间分配

    Mongodb占据的磁盘空间比MySQL大得多,可以理解文档数据如Json这种格式,存在许多冗余数据,但空间占用大得不正常,甚至是传统数据库的三四倍,不太契合工程实践,应该有改善的余地. 查阅了一些资 ...

  4. 从输入URL到浏览页面的过程

    之前我们已经讨论过浏览器的渲染原理,今天我们来讨论下更广泛的从输入URL到渲染出页面的过程. 1. 查询该URL是否有缓存 如果有,则直接返回,没有的话,下一步 2. 查询URL对应的IP 首先,到 ...

  5. 怎么写一个带 bin 的 npm 包

    只需要2步: 1. 在package.json 定义 一下 : { "name": "my-cli", ..., "bin": { &quo ...

  6. CF2B The least round way(贪心+动规)

    题目 CF2B The least round way 做法 后面\(0\)的个数,\(2\)和\(5\)是\(10\)分解质因数 则把方格中的每个数分解成\(2\)和\(5\),对\(2\)和\(5 ...

  7. AGC022E Median Replace

    题意 给出一个长度为奇数\(n\)的残缺01串,问有多少种补全方法,每次将连续三个位替换为它们的中位数后,能有一种方案使它变为1. \(n \le 3*10^5\) 思路 左边表示栈顶. 将操作简化为 ...

  8. python3 系统监控脚本(2) (监控CPU,内存等信息)

    #!/usr/bin/env python3 #create at 2018-12-04 'this is a system monitor scripts' __author__="yjt ...

  9. Tkinter 之RadioButton单选框标签

    一.参数说明 语法 作用 Radiobutton(root,text='xxxx') 单选框文本显示内容 Radiobutton(root,variable=color) 单选框索引变量,通过变量的值 ...

  10. LUA table中函数的调用

    1 lua中函数作为表中元素时有三种定义方式 采用‘:’来定义,实际上隐藏了一个形参的声明,这个形参会截获调用函数时的第一个实参并把它赋值给self 2 调用方式,点号和冒号 functb:hello ...