现使用的系统已经支持了当前使用的wifi模块,内含驱动,所以没有做任何更改,假设各位驱动已支持或移植完成。
wpa_supplicant是什么?
wpa_supplicant是适用于Linux,BSD,Mac OS X和Windows的WPA请求者,支持WPA和WPA2(IEEE 802.11i / RSN)。它适用于台式机/笔记本电脑和嵌入式系统,就是一个无线网卡的管理工具。
使用wpa_cli命令前,必须先开启 wpa_supplicant服务,使用命令:
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
命令参数说明如下:
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>] \
[-o<override driver>] [-O<override ctrl>] \
[-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
[-p<driver_param>] [-b<br_ifname>] ...]
各个选项及其含义:
-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) //驱动名称
-g = global ctrl_interface //全局网口配置
-K = include keys (passwords, etc.) in debug output //在debug输出中包含keys
-t = include timestamp in debug messages //将各个debug信息前输出时间标签
-h = show this help text //显示帮助信息
-L = show license (GPL and BSD) //显示license
-o = override driver parameter for new interfaces //覆盖driver参数
-O = override ctrl_interface parameter for new interfaces //覆盖ctrl_interface参数
-p = driver parameters //携带驱动参数
-P = PID file //进程文件
-q = decrease debugging verbosity (-qq even less) //在debug中不输出指定参数
-v = show version //显示版本信息
-W = wait for a control interface monitor before starting //启动前等待控制接口
-N = start describing new interface //启动对新接口的描述
其中 -D(驱动):
nl80211 = 802.11 netlink cfg80211取代wext
wext = Linux wireless extensions (generic)
hostap = Host AP driver (Intersil Prism2/2.5/3)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wired = Wired Ethernet driver
其中,-c选项的配置文件保存了wifi的信息,包括账户、密码、加密方式、优先级等:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
key_mgmt=WPA-PSK //(NONE/WEP/WPA(WPA2)这三种加密方式)
ssid="CTC"
psk="12345678"
priority=7
}
此时,wpa_supplicant就算配置好了,就可以使用wpa_cli命令进行配置,wpa_cli有交互式和命令行式两种:
命令行操作如下:
- rfkill unblock all //开启射频
- ip link set wlan0 up //开启wifi
- wpa_cli //进入交互模式
- > scan //扫描可接入网络
- > scan_result //返回扫描结果
- > add_network //添加新的网络,会回复一个编号,之后的操作都针对这个编号操作,比如此时回复 1 ,下面操作都使用1
- > set_network 1 "ssid" //"网络名"
- > set_network 1 "psk" //"网络密码"
- > list_networks //列出当前配置网络
- > select_network 1 //根据编号选择想要连接的网络
- > remove_network 0 //移出不使用的网络
- > enable_network 1 //使能这个网络配置
- > status //查看当前网络状态
- > save_config //保存当前网络配置
- > quit //退出交互模式
- $ udhcpc -i wlan0 //连接上AP后,自动获取网络
- 后续操作:
- > reconnect //重连当前选择wifi
- > disconnect //断开当前选择wifi的连接
- > disable_network //关闭wifi
在使用命令行模式时,要特别注意对账号密码的处理。
- 网络和密码需要添加双引号,双引号还要加斜杠或者单引号
- wpa_cli -i wlan0 set_network 1 ssid '"CTC"' (-i wlan0 只有一个wifi网络时可加可不加)
- wpa_cli set_network 1 ssid \"CTC\"
- wpa_cli set_network 0 psk '"12345678"'
- wpa_cli set_network 0 psk \"12345678\"
- 如果有特殊符号,特殊符号也需要处理,比如网络账户为:cc's net
- 那么使用命令行就需要这样处理:wpa_cli set_network 1 ssid \"cc\'s net\"
至此,无线网络就可以正常使用。