试图拯救 Pixel 的夜间待机耗电,最后发现问题居然是 IPv6

其实本来是没有注意到这个问题的,毕竟这台 Pixel 8 Pro 也用了一年半,过去一直以来它的夜间待机耗电都是差不多是一晚 15%(BetterBatteryStats 测算约 670 mAh,Deep Sleep 时间占比 30%,SuspendControl.TotalSuspendDelay 有五小时)。因为一向如此,所以从来不认为这有什么问题,也已经认定这就是它的正常情况了。毕竟 Reddit 上哀嚎 Battery Drain 那可是一晚能跑 30%,相比之下这可是温柔多了。

但是月初出门游玩、晚上连着酒店的 Wi-Fi 待机时,第二天早上醒来发现夜间待机只耗电了 4%!当然,仔细查看了 BBS 测算的电量后发现其实也只是 416 mAh,差距没有那么大。可是关键在 SuspendControl.TotalSuspendDelay 只有 17 分钟。

当时留下的唯一一张截图,也成为了日后对比电量消耗的基准。

于是之后几天一直在折腾家里的 Wi-Fi 网络和代理软件等,但是无论如何调整参数都无果,唯一能让 Deep Sleep 正常上去的方式要么是开飞行模式、要么是断开 Wi-Fi(不过 Pixel 的 5G 待机更耗电,一晚能走 28% - 1262 mAh)。

红色箭头处关闭了飞行模式,黄色箭头处打开了 Surfboard。所以排除了耗电和 Surfboard 的关联。

前前后后折腾了半个月,排除了 Surfboard / FlClash / sing-box 的软件差异,关于耗电的问题一直摸不着头脑。直到其中一晚不知道什么时候为什么 Wi-Fi 突然 IP 配置失败了导致自动断开连接,在 5G 待机下耗电非常可怕但 Deep Sleep 非常健康。

到此时才明确是 Pixel 和家里的 Wi-Fi 网络相性很差。至少排查的方向终于能固定下来了。到了这一步,我开始思考,酒店的 Wi-Fi 和家里的 Wi-Fi 会有什么区别。首先想到的是前者通常会开启网络隔离,于是安装这个思路修改了家庭 Wi-Fi 的配置。第一晚看起来有效果,但第二晚起又在反复。似乎说明问题源头不是它。

之后又尝试了 UPnP 等多个开关,效果似乎都不明显。直到最后,突然想到酒店的 Wi-Fi 会不会没有 IPv6?于是关闭了路由器的 IPv6 桥模式。

上图是关闭路由器的 IPv6 桥模式后的第一晚,夜间待机耗电的改善立竿见影。事实上,后续稳定下来后,一晚上耗电至多 8%。

前后拢共折腾了一个月,最终总算是把问题解决了呢……

评论

此博客中的热门博文

8102 年,如何为自己申请一个免费的 Google Voice 号码?

「《金田一少年的事件簿》字幕补完计划」的后续

怎样将你的小米手环自动检测心率直接同步到 Apple Health——以小米手环 3 非 NFC 版为例