介绍设备通过零配方式配网过程中遇到的常见问题和解决方法。
背景信息
零配中的待配网设备只需实现一种管理帧(Probe Request)的发送和监听WiFi报文的能力,即可对接完成。
Wireshark抓包方法
Windows系统会过滤一些 WiFi 报文不传递给自己的应用程序,从而导致 WireShark 软件抓不到包。所以一般用 MAC系统抓包。
- 在Mac电脑安装Wireshark软件。
单击齿轮状的Capture Options进行设置。
- 配置 Wireshark 软件为抓包模式。
反向选择其他所有Interface,仅仅保留wifi interface,并且勾选其中的 Promiscuous 和 Monitor 两种抓包模式。
零配请求帧发送排查
自行实现HAL_Wifi_Send_80211_Raw_Frame接口来进行零配请求帧的发送,SDK通过发送这种帧寻找主配设备。
- 实现
HAL_Wifi_Send_80211_Raw_Frame()
,检查其报文打印是否符合上面的二进制数组。
- 下载测试工具源码TestProbeTx.c。
- 根据实际情况将程序中的local_mac替换为自己的 MAC地址。
- 周期性地调用测试程序中的verify_raw_frame函数。
- 通过WireShark软件抓包,查看是否抓到探测请求帧,以及抓到的报文过滤后是否符合要求。
按
(wlan.da == ff:ff:ff:ff:ff:ff) && (wlan.tag.vendor.oui.type == 170)
过滤条件,筛选WireShark软件抓包到的帧。
其中,Vendor为自定义的OUI。发送方向,OUI的类型为170。
零配应答帧排查
SDK需要用户自行实现HAL_Awss_Open_Monitor,接口来进行零配应答帧的接收,SDK通过回调函数得到的报文解析SSID和密码。
- 实现
HAL_Awss_Open_Monitor()
,确保设备进入监听模式。
- 下载以下测试工具源码,并与待测设备的其他代码一起编译。
- 调用
verify_raw_frame()
函数,确保待配网设备发出符合要求的零配请求帧。
- 调用
verify_rx_mng_raw_frame()
函数,监听主配设备是否对零配请求回复。
- 查看设备端日志,如果出现
verify got zeroconfig reply
日志,说明成功收到主配设备回复的零配应答报文。
其中,接收方向OUI的类型为171。