wpa_cli 是wpa_supplicant的客户端,通过与wpa_supplicant通信实现对802.11相关协议栈的控制。要想使用wpa_cli实现对Wifi功能的相关控制,必须先启动wpa_supplicant进程。如下:
首先进入 adb shell,再执行命令 : wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B ,其中参数分别指定驱动类型、网卡、wpa_supplicant的配制文件,-B表示以守护进程启动。在此之前,请确保驱动已正确加载,如未加载请执行下面命令加载驱动程序:/etc/init.d/wlan start sta,ap (具体命令与平台有关,该命令针对高通平台的WLAN解决方案,其中启动了两个虚拟网卡,一个作为STA,一个作为AP,该平台不支持 STA only 模式)。
wpa_supplicant 启动后,可以开启wpa_cli,如下:
在wpa_cli中,可以通过help查看帮助,如下:
用法比较简单,在此只讲解常用的命令。
scan : 扫描附近AP
scan_result :列出最近一次扫描的结果
list_networks : 列出添加的所有AP
add_network :添加一个AP
set_network :设置指定AP的相关参数,如 ssid、密码等,具体可参考文件:wpa_supplicant.conf
enable_network : 连接指定AP,成功执行该命令后,将会连接到指定的AP,如果未成功连接,请检查AP参数是否有误。
通过wpa_cli连接到指定AP后,此时是不能上网的,因为还未分配正确的IP地址,要分配正确IP地址,最简单的方式是执行如下命令:
如无意外,至此,便可正常上网了。如下:
PS : wpa_clli 和 wpa_supplicant 是针对802.11协议栈中 STA 部份,如果要使设备作为接入点(AP),需要使用 hostapd 和 hostapd_cli,这些实现都在开源项目wpa_supplicant_8中,关于具体实现将在后续分析。第一次写博文,接触WIFI的时间也不长,有不对的地方,欢迎大家一起探讨,谢谢。。。
转载请注明出处:http://blog.csdn.net/redheavenliu/article/details/53634500