米家设备掉线问题 cover

米家设备掉线问题

一个黑盒问题

终于解决了困扰已久的米家设备掉线问题。

网络环境 AC66U B1/AC86U(前后都有问题)+UBNT-AC-PRO,表现就是部分米家设备(也就是空净2代、米家网关、净水器、PM2.5检测仪)不定期掉线,掉线时单纯重置网络无效,必须先连接到另一个 Wi-Fi 再连回原 Wi-Fi(后来发现路由器中 DHCP 分配一个新的固定 IP,AP 侧发起 reconnect 也可以修复)。掉线期间从路由器和 AP 侧看连接是一切正常的。

由于华硕路由器是关掉无线使用的,所以网上所有调整路由器无线设置的教程无效。也检查了 AP 的设置,信道什么都没问题。尝试固定 IP+设置为不出国,似乎有缓解但没有根治。由于出现极其没有规律,所以一直没找到原因,百思不得其解。

唯一的办法就是每次出现问题时候,查上次肯定是正常的时间-出现问题时间的路由器 log,看能不能缩小范围定位原因。近期连续出现两次,怀疑出问题的期间都有路由器重新拨号的记录(运营商的定期重新拨号机制),然后再拿关键词进行了一些搜索,终于找到了一个帖子里的解法。

答案就是关闭系统管理->系统设置中的“开启 WAN 中断的浏览器导页通知”。

猜测原因是当 WAN 口重新拨号期间,如果打开了这个选项,米家设备访问网络时就会拿到 HTTP 200 ok 的标志(返回了一张网页),然后部分米家设备的 Wi-Fi 芯片/软件机制对这种情况处理得不够好,导致发生问题。这也解释了为什么看上去是“随机”出现问题,因为需要同时满足 WAN 口重新拨号+这些设备正好在期间请求网络。那为什么这次终于找到了原因呢?从 log 看,今天非常凑巧:在我出门锁门(设置了会触发一系列智能规则)时候路由器断网重新拨号了。

想起了在上家公司时候遇到的一个 bug,也是一个随机行为里会触发一个错误的逻辑,导致最终出现的问题表现没有规律可言。总得来说,排查问题时候最恶心的便是这类“观察一个黑盒”的 case,因为只能看到毫无规律的最终结果,要查清黑盒里的具体逻辑和出错点总是需要不少的时间和一点点运气。