前言
最近参与的项目已经到了收尾阶段了,在这个项目中被安排负责WiFi相关的功能开发,由于之前没有接触过这一块的内容,因此花了相当多的一些时间研究了这一块,从今天开始对这一块的内容做一下总结,也方便后续对这块内容的重温。
一、wpa_supplicant和wpa_cli
由于项目到手时,wpa_supplicant已经移植好了,网上关于如何移植wpa_supplicant的资料也是很多的,所以如何移植这里就不做介绍了。对于wpa_supplicant和wpa_cli这两个工具的作用,我们可以这样理解。wpa_supplicant,相当于是一个同底层驱动交接的一个窗口,通过这个窗口的使用,我们可以控制WiFi模组做出各种操作(扫描,连接等)。而wpa_cli,则相当于一个控制工具。简单说,wpa_supplicant是运行于后台的一个服务端,而wpa_cli则是一个客户端,客户端负责提供一个输入的接口给我们操作,并将操作指令发送给服务端,而服务端接收到这些操作指令后,通过底层驱动做出对应的响应。
二、wpa-supplicant 和 wpa-cli的使用
1.启动wpa_supplicant服务
#/usr/bin/wpa_supplicant -i wlan0 -D nl80211 -c /tmp/wpa.cfg &
2.进入wpa_cli命令行模式
#wpa_clil
>scan //扫描
>scan_results //扫描结果
>add_network //增加一个网络,返回一个net_id
>set_network 0 ssid “555555” //输入WiFi名
>set_network 0 psk “qqq123456” //输入WiFi密码
>enable_network 0 //使能
>remove_network 0 //断开连接
>status //连接成功后用此命令可查看WiFi连接状态(如下)
bssid=72:77:6a:ed:bb:e9
ssid=555555
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.43.49
address=14:ae:db:f8:a7:f5
signal_level=-58
>signal_poll //获取信号相关参数(如下)
RSSI=-58
LINKSPEED=72
NOISE=9999
FREQUENCY=0
>save_config //保存信息到配置文件 /tmp/wpa.cfg
>quit //退出
3.调用udhcpc服务动态获取IP地址
#udhcpc -s /etc/udhcpc.script -i wlan0 –b
总结
今天就先简单介绍到这里,后续再如何通过代码编程实现这部分的相关功能。