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. Centos命令和Shell脚本问题集合

    1.cat 错误写法 cat >> somefile.txt << EOF something EOF 原因:EOF 之后一定要是 ENTER(回车) 不能是空格或者其他.EO ...

  2. js中特殊的宏任务

    一.setImmediate 目前只有IE10+和NodeJS支持该API. 立即触发回调函数,使其进入宏任务队列(macro task queue) 语法: // 只有一个参数 setImmedia ...

  3. CF1051D Bicolorings 递推

    考试T2,随便推一推就好了~ code: #include <bits/stdc++.h> #define N 1015 #define mod 998244353 #define ll ...

  4. [转] C++ STL中map.erase(it++)用法原理解析

    总结一下map::erase的正确用法. 首先看一下在循环中使用vector::erase时我习惯的用法: for(vector<int>::iterator it = vecInt.be ...

  5. Intellij IDEA常用配置记录

    换个IDE试试. 一个地址 http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com/key.php TO ...

  6. Java基础系列 - 数组、二维数组、对象数组

    package com.test2; public class demo2 { public static void main(String[] args) { /** * 一维数组使用 */ //数 ...

  7. Go by Example-循环

    Go By Example-循环语句 Go和其他大多数语言不太一样,没有While和Do-Whiile形式的循环,只有一个for,来实现循环. 基本结构 for循环的基本结构是这个样子 for 变量; ...

  8. 如何获取UA?

    代码: function whatBrowser() { document.Browser.Name.value = navigator.appName; document.Browser.Versi ...

  9. matlab中x.^2与x^2有什么区别?

    .^2是矩阵中的每个元素都求平方,^2是求矩阵的平方或两个相同的矩阵相乘,因此要求矩阵为方阵,且看下面的例子x=1:4x = 1 2 3 4 x.^2 ans = 1 4 9 16 x^2 Error ...

  10. 环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools

    Apache Thrift - Centos 6.5 Install http://thrift.apache.org/docs/install/centos Building Apache Thri ...