[博客翻译]无法使用或传授的技术——“线程”之痛


原文地址:https://overengineer.dev/blog/2024/05/10/thread/


2022年,我发表了一篇关于如何打造一款过度工程化的咖啡豆存储和库存管理系统的文章。没想到,这篇文章激发了很多人的灵感,他们告诉我,我的分享给了他们开始类似项目的新动力。这让我非常高兴。

最近,我正忙于两个相关项目:一个还未公开的传感器,另一个是咖啡豆存储显示系统的升级版。我升级它的主要目标是增加电池续航时间。最初,这个显示系统充满电能用大约40天,我觉得还可以,但总想做得更好。通过一些软件调整,我将其提升到了55天,但我还想挑战极限。

3.png

于是,我开始深入研究低功耗电子技术,探索了一系列复杂但引人入胜的领域。我购买了Nordic半导体的一款出色电源分析器,对整个系统进行了详尽的剖析。如果你好奇,这样的分析结果就像这样(附上一张图表)。简而言之,我重写了部分显示固件,识别并解决了开发板上的问题组件,最后发现WiFi是影响续航的关键因素。

power-profile-screenshot.Q36a-FjR.png

虽然我热爱这样的项目,但我的本性也相当懒散。在项目中使用WiFi似乎很合理,因为基础设施已经就绪,只需让显示设备连接到我运行的服务,通过局域网发送请求即可。然而,WiFi对于这种应用场景来说效率并不高,连通时间长、功率需求大,总之不太理想。因此,我开始寻找替代方案,比如LoRa和Zigbee等标准。

LoRa和Zigbee技术通常很节能,但它们有一个显著的缺点:除了需要一个显示模块外,还需要一个接收/发射器或中心节点来作为数据交换的连接点。这就意味着我又得额外设计和编写硬件和软件,这可不是我喜欢的。幸运的是,我发现了一个有趣的解决方案!

“线程”?!

尽管这个名字听起来不太友好(3),但Thread网络栈其实很酷。它基于Zigbee的物理层,IEEE 802.15.4,并且是网状网络。但对我而言,有两个特性让它脱颖而出:首先,Thread建立在6LoWPAN之上,即“低功耗无线个人区域网络上的IPv6”。这意味着每个设备都有一个或多个IPv6地址,内部通信使用IPv6,数据包在网络中自由流动。更棒的是,Thread通过名为“边界路由器”的桥梁与常规家庭网络相连,让你的设备能通过IPv6与应用交互,反之亦然。

等等,还要搭建边界路由器?没错,但这也是Thread的一个亮点:你可能已经有了Thread边界路由器,比如Apple HomePod或Nest Hub。如果你使用Home Assistant,只需花40欧元左右就能买到一个适配器,将Home Assistant节点变成边界路由器。整个过程相当亲民。而且,如果你的设备已接入现有的Thread网络,还能利用其网状特性,无需额外努力就能扩大网络覆盖范围。

听起来不错吧?确实如此!我入手了两套Thread开发套件(分别是nRF52840-DK和nRF5340-DK,还有nRF52840-Dongle用于调试),学到了很多。我成功地将自己的边界路由器接入基于Apple的Thread网络,甚至用Wireshark捕获了Thread网络的数据,还把自制的Thread设备(基于那两个开发套件)接入网络,一切如愿以偿。于是,我开始构思一系列博客文章,打算引导其他爱好者探索Thread,让他们从依赖WiFi或蓝牙转向Thread,提升项目的质量。

然后,我就进入了抱怨模式。

没有Thread。

我之前只说了Thread的好,现在要谈谈不好的一面:Thread集团。尽管Thread基于许多免费和开放的标准,如IEEE 802.15.4、IPv6和CoAP,但它并非真正意义上的免费和开放。恰恰相反。

你可以从他们的网站免费获取Thread规范,但你会注意到一些奇怪的事情:页面上有个“我同意最终用户许可协议”的选项,而更明显的是,PDF规格文档被密码保护、DRM加密,并且大量水印。让我们看看那份许可协议的部分内容(着重部分是我的理解):

Thread Group公司……授予你查看、下载、保存、复制和根据本许可协议条款仅限于内部使用的权利。……此许可协议并未授予你实施规格的权利……要实践、实施和销售Thread技术和Thread Group规范,必须是Thread Group的成员。在产品中使用Thread技术而未保持活跃的Thread Group成员资格可能会面临法律行动,包括但不限于授权费用。

哎呀,虽然你可以购买市面上的开发套件,但实际上却不允许……使用,除非你是Thread Group的成员。最便宜的“实现者”会员每年需支付7500美元。不过别担心,如果你是“创新物联网初创公司”,可以申请两年免费会员,但之后还是要付费,而且这个计划并不针对爱好者。

OpenThread项目是一个开源的Thread实现,它采用BSD 3-Clause许可,看起来很友好。但他们的仓库里也有个小提示,指出Thread Group成员可能拥有专利和其他知识产权。实际上,Thread Group的官网上有专门针对OpenThread的FAQ,答案相当明确:

问:一家公司不加入Thread Group,能否基于OpenThread发布产品?

答:如果开发者选择不加入Thread Group并使用Thread技术发布产品,他们将无法获得实践和发布Thread技术所需的知识产权,可能会面临法律行动,包括但不限于授权费用。

总结一下:对于没有大笔资金加入Thread Group的爱好者来说,合法使用Thread几乎是不可能的,许可协议并没有非商业使用的例外。如果你想写关于Thread工作原理的博客,也没有法律依据。

对于像Thread这样的技术栈,商业会员计划并不新鲜,使用类似“支持Thread”标识的产品也需要认证。这些我能理解,商业电子产品确实需要通过各种认证。但对所有项目,无论是否商业,都全面禁止实施,这简直是疯了。这意味着爱好者永远接触不到这项技术,新一代的电气工程师和决策者在进入行业前无法尝试。但这对Thread Group来说无关紧要,他们的成员名单上有苹果、谷歌、亚马逊等大公司,他们可以通过在热门“家庭中心”设备中集成Thread来确保其成功。所以,我们这些爱好者就成了牺牲品。

最后,如果你原本打算了解Thread……还是算了吧,你没有使用它的权利。我在2024年4月19日联系了Thread Group的支持邮箱,询问非商业使用的规定,得到了立即的回复,但后续没有收到进一步回应。5月1日,我又联系了他们的公关部门,至今未收到官方回应。