WiFi相关功能使用教程(wpa_supplicant及wpa_cli)
在之前的博客文中,我们已经成功交叉编译了wpa_supplicant和wpa_cli相关文件。
此篇文章中我们将介绍如何使用和配置WiFi模块。
先将生成的可执行文件拷贝到设备里
采用TFTP的方式拷贝到设备中并全都加上可执行权限
tftp -gl wpa_supplicant 10.112.218.13
拷贝wpa_supplicant.conf 到/etc/目录想
cp wpa_supplicant.conf /etc/
执行:
-D 驱动程序名称(可以是多个驱动程序:nl80211,wext)
-i 网络接口名称
-c 配置文件
-B 在后台运行守护进程
-d:增加调试信息
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B -d
报错如下:
提示没有这个库,
我们找到之前生成的成果物libnl的库中需要用到的动态库都将其拷贝过来并通过tftp拷贝到设备里
将这几个文件全都加上可执行权限
然后把这些动态库都拷贝到设备中的/lib/目录下
cp libnl-* /lib/
再次执行命令在后台启动wpa_supplicant
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf –B -d
配置文件 /etc/wpa_supplicant.conf文件里,添加下面代码:
ctrl_interface=/var/run/wpa_supplicant #必须配置
update_config=1 #强制更新覆盖配置
ap_scan=1 #AP扫描(默认为0),=1是工作在nl80211的优化工作。为了寻找隐藏了的网络
network={
ssid="userxxx" #接入点名称
psk="passwdxxx" #接入点密码
priority=0 #优先级组,(默认为0)优先级数值越大,就越早在扫描结果中得到匹配,如果优先级组相同,则将会根据安全规则、信号强度等来作为选择的依据。
}
出现如上错误,再次打开/etc/wpa_supplicant.conf文件,将文件中Example blocks下的所有样例全都注释掉,仅保留自己新增的WiFi链接信息
然后重新使用TFTP工具更新设备中的wpa_supplicant.conf文件并拷贝到/etc/目录下
执行命令前需要进入到/var/目录下新建一个run子目录(若已经存在则忽略该步骤,原因是启动wpa_cli客户端的时候 会去链接该目录下生成的wpa_supplicant文件夹目录下的节点(该文件启动wpa_supplicant服务器的时候会自动生成)),若不存在该目录直接启动wpa_supplicant会失败
最后再次执行该命令
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B -d
执行结果如下执行结果如下
查看/var/run目录,发现自动生成一个文件夹和wlan0节点
执行完这个命令后实际上设备就已经成功连接上Wifi热点
查看手机热点发现设备已连接成功,能显示出来连接设备的Mac地址
通过串口输入命令ifconfig –a查看设备Wifi网卡的wlan0地址,可以发现能对上
上图中可以看到我们的wlan0仅有IPV6的地址没有IPV4
我们通过串口输入如下命令,使用DHCP自动分配IP地址
udhcpc -i wlan0
再次查看我们的网络情况 ifconfig –a
如上图所示,现在我们的Wifi网卡有ipv4的地址了
输入如下命令查看我们网关信息
route –n
如上图所示我们的默认网关用的还是有线IP的网关,输入如下命令删除我们原有的网关,改用wlan0的网关
route del default gw 10.112.218.254
至此设备连接Wifi热点实现无线通信的配置结束