EZ配网问题排查思路和方法

App开发相关产品技术讨论,包括OEM App、App SDK等话题


Post Reply
yuanhua.liu
Posts: 1

EZ配网——Wi-Fi 快连配网又称 快连模式(Easy-Connect)、SmartConfig 或 EZ 配网。用户将手机连接到路由器后,利用路由器广播报文与设备进行通信配对。对用户操作简单,但对手机和路由器有兼容性要求,成功率低于热点配网。
假设条件——本文基于假设你的工程配置和SDK接入方式都正确并且设备也正常的情况下,还出现EZ配网失败问题时的排查思路和方法。
问题排查思路
EZ配网问题排查思路,按操作由易到难的顺序:
a、检测WiFi名称和密码是否正确
b、对于iOS APP还要确保其本地网络权限已打开
c、对手机进行抓包分析
d、对路由器进行抓包分析

问题排查方法

检测WiFi名称和密码是否正确
WiFi名称和密码是设备联网的必要信息,如果任何一个出现了错误,则会导致设备联网失败,配网必然失败。
对于SDK接入的APP,可以参考涂鸦公版APP,通过自动获取当前手机连接的WiFi名称的方式,减少用户输入WiFi名称的出错概率。
输入WiFi密码时,可以从系统设置中复制当前连接的WiFi的密码回到APP中在粘贴进来,或者手动输入时把密码明文展示出来,确保密码是正确的。

本地网络权限(仅iOS)
对于iOS APP还要确保其本地网络权限已打开,如果本地网络权限已打开,还是EZ配网失败,可以尝试重启手机系统再重新配网。
这里解释一下,为何要重启手机:iOS 系统存在这样一个bug,如果在系统设置中先把APP的本地网络权限开关关闭之后,删除APP,再重新安装并打开,即使允许了本地网络权限,也会导致APP的所有的UDP Socket收不到包也发不出去,必然会导致配网失败。重启手机系统之后恢复正常。
对于SDK接入的APP,可以在配网失败的时候,可以做相应的提示引导。

手机网络抓包分析
这里使用macOS、wireshark对iPhone进行抓包举例,旨在说明如何分析网络包,Android系统的抓包请自行搜索。
1、在macOS上安装wireshark(安装过程自行搜索,此处忽略),如已安装可忽略这步。
2、开启iPhone的虚拟网口
获取iPhone的UDID——用数据线将iPhone与你的MacBook连接上,打开Finder,在侧边栏中选择你的iPhone,单击右侧iPhone名称下面的一行,直到出现UDID,右击该行,可以从快捷菜单中选择拷贝UDID。

uuid获取
uuid获取

开启虚拟网口——打开终端,输入命令:rvictl -s xxxxxxxx-xxxxxxxxxxxxxxxx 并回车,其中“xxxxxxxx-xxxxxxxxxxxxxxxx ”是你的iPhone的UDID,启动虚拟网口,启动成功记住虚拟网口的名称,如下图中的rvi0。

开启虚拟网口
开启虚拟网口

3、在macOS上启动wireshark,选择上一步启动的iPhone的虚拟网口,双击,开始抓包。

wireshark抓包
wireshark抓包

在iPhone上打开APP,开始EZ配网,等配网结束时,停止抓包。

4、网络包分析

查看广播端口(30011)是否有数据——在wireshark中根据udp.port == 30011过滤,看是否有数据发送,正常有数据的,如下图所示。

30011端口数据分析
30011端口数据分析

查看组播端口(30012)是否有数据——在wireshark中根据udp.port == 30012过滤,看是否有数据在发送,正常有数据的,如下图所示。

30012端口数据分析
30012端口数据分析

如果根据条件过滤后没有数据,则APP没有在正常发包,需要排查本地网络权限问题。

路由器抓包分析
如果手机网络抓包分析是正常的,则需要进一步排查路由器有没有转发空中包,对路由器进行抓包。

这里演示如何使用macOS自带的嗅探器对路由器进行抓包和分析。

1、把macOS连接到与手机给设备配网的相同的WiFi。

2、在状态栏中,option+点击WiFi图标,查看WiFi信息以及打开无线诊断。

查看WiFi信息
查看WiFi信息

3、在无线诊断的窗口菜单中,选择嗅探器,嗅探器会自动选择当前连接的WiFi的频道和宽度,点击开始即可进行路由器的空中包抓取。

打开嗅探器
打开嗅探器
嗅探器开始抓包
嗅探器开始抓包
抓包中
抓包中

4、打开APP,开始EZ配网,配网结束后,点击嗅探器的停止,然后到/var/tmp中找到后缀为.pcap格式的抓包文件,双击后会在wireshark中打开。使用你的iPhone的无线局域网地址(可在系统设置查看)进行过滤,如果Broadcast的数据包,则路由器转发正常。

空中包分析
空中包分析

如果没有Broadcast的数据包,则路由器没有转发,此时可以尝试切换路由器的频道(如何设置路由器的频道可以根据具体的路由器的设置说明操作),再次尝试。

如果有Broadcast的数据包,EZ配网还是失败,则需要从设备端进行排查了,不在本文的讨论范围。

Post Reply