九月五日是国际慈善日。但大多数软件里最慷慨的东西,不是捐款按钮,而是一个默认设置。
默认设置决定了那些从不打开设置菜单的人会遇到什么——而几乎所有人都不打开。一个默认设置如果悄悄消耗用户本就不宽裕的资源,那就是一种被规模化放大的小刻薄。反过来,一个不这么做的默认设置,就是一份无需开口的礼物。
这里就有一个值得改的默认设置。对很多人来说,手机不是第二条网络连接——它就是唯一的连接。笔记本靠USB共享网络(tethering)上网,不需要第二条线路、第二张账单,也不用先买一台路由器才能让一切跑起来。但这条共享链路常常比它底下的无线电慢得多,原因通常出在笔记本这边,而不是运营商那边。而修复方法,往往只是一个改起来不花一分钱的默认设置。
先搞清楚问题在哪,再决定花不花钱
这个工具叫 tether-report,它能在不消耗你数据流量的前提下,判断出你遇到的到底是哪种问题。它背后有一套诊断规则,这套规则来自一份调查问卷——问卷教它该看什么。
项目地址在 GitHub:https://github.com/xbill9/tether
tether-report 会读取一条USB共享连接上所有主机可观测的事实,套用诊断规则,然后输出一份 Markdown 格式的报告,告诉你哪里出了问题、该改什么。默认情况下,它什么都不测量,也不消耗任何蜂窝数据。
这个默认设置就是全部重点。这个仓库里标准的测量流程是三次单流传输、一次四流并行测试和一次 ping——大约消耗 56MB 的计费流量。在家庭无限流量套餐里,这不算什么。但如果是按GB购买的预付费套餐,花 56MB 去发现你的问题其实是一行设置,这笔交易就很不划算——而这恰恰是大多数测速工具在告诉你任何信息之前,强迫你做的交易。
内核已经知道的事,免费就能读
所以这个工具把两件事拆开了。内核已经知道的一切——驱动、总线速度、协商链路速率、MTU上限、NCM聚合缓冲区、拥塞控制算法、接口错误计数器——这些读取都是免费的,而且大多数真实问题在这些数据里就能看出来。--measure 参数是主动选择加入的,而且它在花费流量之前,会先打印出这次测量要花多少。
它套用的诊断规则,和那份调查问卷的编写基准是同一套。第一行是最值得拥有的,因为它是唯一一个答案既免费、又在链路你这边的。
下面是一个真实运行案例:一台 Pixel 9a 手机,Google Fi 网络,通过 USB-C 连接。这是写这篇文章时抓的一次真实运行,全程没有消耗任何蜂窝数据:
运行 python3 bin/tether-report 后,报告首先展示这条链路实际是什么:
然后是总线信息——上限通常就出在这里:
最后是关键的诊断结论——规则对这一切的判定:
报告还会提醒:如果 wlo1(笔记本的Wi-Fi接口)和共享网络同时在线,共享中途断开时 curl 仍然会成功,结果看起来就像一次正常的共享测量。所以要先把这些接口关掉。
另外,设备在 BOS 描述符里声明支持 SuperSpeed,但实际枚举在 480 Mbps。连接器 port1 的枚举……
这个工具的思路很简单:先读免费的数据,判断问题是否出在你这一侧。如果免费数据已经能定位问题,就不需要花那 56MB。只有当免费数据不够用的时候,才需要主动选择测量——而且是在明确知道代价之后。
对按GB买流量的人来说,这可能是今年最贴心的一行默认设置。
热门跟贴