介绍设备通过零配方式配网过程中遇到的常见问题和解决方法。

背景信息

零配中的待配网设备只需实现一种管理帧(Probe Request)的发送和监听WiFi报文的能力,即可对接完成。

Wireshark抓包方法

Windows系统会过滤一些 WiFi 报文不传递给自己的应用程序,从而导致 WireShark 软件抓不到包。所以一般用 MAC系统抓包。

  1. 在Mac电脑安装Wireshark软件。
    单击齿轮状的Capture Options进行设置。
    配置工具
  2. 配置 Wireshark 软件为抓包模式。
    反向选择其他所有Interface,仅仅保留wifi interface,并且勾选其中的 Promiscuous 和 Monitor 两种抓包模式。
    配置抓包模式

零配请求帧发送排查

自行实现HAL_Wifi_Send_80211_Raw_Frame接口来进行零配请求帧的发送,SDK通过发送这种帧寻找主配设备。

  1. 实现HAL_Wifi_Send_80211_Raw_Frame(),检查其报文打印是否符合上面的二进制数组。
  2. 下载测试工具源码TestProbeTx.c
  3. 根据实际情况将程序中的local_mac替换为自己的 MAC地址。
  4. 周期性地调用测试程序中的verify_raw_frame函数。
  5. 通过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和密码。

  1. 实现HAL_Awss_Open_Monitor(),确保设备进入监听模式。
  2. 下载以下测试工具源码,并与待测设备的其他代码一起编译。
  3. 调用verify_raw_frame()函数,确保待配网设备发出符合要求的零配请求帧。
  4. 调用verify_rx_mng_raw_frame()函数,监听主配设备是否对零配请求回复。
  5. 查看设备端日志,如果出现 verify got zeroconfig reply 日志,说明成功收到主配设备回复的零配应答报文。

    筛选接收帧

    其中,接收方向OUI的类型为171