家用打印机的选择

最近要买一款家用打印机,搜索对比了许久,把一些发现记录如下。

喷墨还是激光?
果断选择激光打印机,喷墨打印机有几个先天缺陷是无法解决的:

  • 容易堵喷头:家庭打印的频度都不是很高,喷墨机一旦长时间不用墨水就会干掉堵塞喷头。这和平日里使用钢笔的经验是一致的。
  • 打印速度慢:现在家用喷墨机正常模式也就5-10张/分。激光机轻松超越这个指标,一般都在14-20张/分左右。这也是现行喷墨技术原理决定的,除非以后升级到按行喷墨,一次完成一行的喷印,否则是无法超越激光打印的。
  • 不防水:染料墨水沾水后会洇开,字迹失去可读性。

相比之下,激光打印机则有性能稳定、打印速度快、打印质量稳定等优点。

要不要彩色?
彩色是不可能的,这辈子也不可能的。(误)彩色固然能提供很多便利,甚至很多时候必须使用彩色。但是在家庭需求而言,彩色的使用频度并不很高,而为了彩色却要付出一倍以上(考虑到 CMYK 四色甚至可能更高)的成本。因此果断放弃彩色打印。

要不要复印、扫描、传真等功能?(即一体机)
不要。传真首先排除,家用完全用不着。扫描可以使用手机拍照然后打印,如对质量有要求,可以在 PS 里做适当的梯形修正以及拼版。复印等同于先扫描再打印。

连接方式
现在智能手机普及了,很多资料都是在手机上产生或接收的(比如家长群里老师布置的作业)。如果为此必须开机连接电脑,那就太麻烦了。因此选择一款支持无线网络的打印机是很有必要的。

耗材成本
这一点无论家用或者商用都是至关重要的指标。经过搜索研究后发现,耗材成本并不取决于厂家的良心或采用的技术先进与否。原装耗材是厂家很重要的一个利润来源,虽然有些厂家(如富士施乐,兄弟等)推出了鼓粉分离技术,但其缺少第三方兼容耗材的支持,本质上并不便宜。

真正使打印成本降下来的,是广大的第三方兼容耗材供应商。在淘宝上,可加粉的第三方兼容硒鼓的成本低至 50 元左右,而原装耗材则在 300 元以上,由此可见耗材的利润有多么高。
耗材这一点基本上把新款机型排除在外,因为新款机器往往使用新款硒鼓,导致硒鼓的流行程度不高,难以买到兼容耗材。同时新款硒鼓上往往安装了新一代的计数芯片(以计数的名义行加密之实),芯片破解难度大,破解成本高,也进一步制约了第三方耗材的生产。(一个案例是淘宝上第三方耗材厂家的硒鼓不配芯片,需要自己把原装硒鼓上的芯片取下来安装到第三方硒鼓上。)

最终选择
经过以上条条框框的制约,实际能选的非常有限。一代神机 HP LaserJet 1020 PlusCanon LaserSHOT LBP2900+,使用 12A 硒鼓,无芯片加密,成本最低,但因不支持无线技术,被排除在外。再往上就是 HP CC388A / CE285 和 Canon 328/912/925 这一代硒鼓了,有计数芯片,但破解容易加粉容易,成本也能做到50左右。(关于计数芯片,原则上可以开发出无限次计数的,但芯片厂家也要生存,因此做出来的芯片也只能限制次数,确保自己的芯片能够持续销售下去,不得不感慨利益才是永恒法则啊)
HP 呢,比较黑心,使用这一代硒鼓的打印机都停产了,淘宝上能搜到零星的商家在卖,但大多标着港版的名义(实则为拼装机、翻新机),虽然价格很便宜,只要500-600,是原价的 50-70%,但家用还要买个稳妥放心,一旦有故障维修起来也很费心,也就不考虑了。佳能还好,良心一点,使用 CRG 925 硒鼓的 Canon imageCLASS LBP6018w 还在生产,京东价格 799(Plus会员价),也就不费心的拿下了。
对应的海外型号是 Canon imageCLASS LBP6030w,可能是佳能为了防止海内外串货和走私水货的考虑把型号做得不一样。美国和香港的型号虽然都是 6030w,但是规格里的电压是不一样的。美版为 110V,港版为 220V,如果买水货或者代购,这点是要注意的。

其它一些发现

关于打印机厂家
惠普虽然占有率最高,但并不掌握核心技术。惠普在收购三星之前,打印机的核心部件(硒鼓、定影组件等硬件)都是由佳能研发并代工的。这一点有两个佐证:一是打印机的发展史,早期佳能研发了小型化激光打印技术,把技术卖给了美国厂家,惠普从而有了小型激光打印机。[1] 二是惠普的许多硒鼓与佳能是通用的,典型的有惠普 12A 与佳能 303,二者可以通用。

激光打印另一家比较有名的是施乐(Xerox)。但施乐似乎专攻大型数码复合机(由复印机演化而来),对于桌面化的小型激光打印机投入较少。同时在亚太地区,施乐的业务由富士施乐这家合资公司来开展,据说低端产品代工居多。

打印语言
最早的针式打印机脱胎于打字机(Typewriter),自带字库,电脑把需要打印的文字直接以原始编码的形式发到打印机上,打印机根据自带的字库字体来输出。对于图形的输出能力非常有限(很多时候都是利用字库里的特殊符号来完成)。

后来 Adobe 发布了 PostScript 语言,打印机里集成了 PostScript 引擎,由引擎把输入的文字和图形转化为打印机可以理解的光栅化图形然后输出。从此打印机可以输出复杂图形和各种字体。但是集成的引擎硬件大幅提高了打印机的成本,终端用户很难承担。

惠普也发布了自己的打印语言 PCL,但是取消了硬件打印引擎,由计算机上的软件形式的 PCL 引擎来把文字和图形翻译成可打印的光栅图像。至今已经发布到 PCL6,还有面向移动设备的 PCLm。

佳能也有类似的打印语言 UFR (Ultra Fast Rendering),但据说集成了 PCL 和 PS 二者的优点,能够同时把打印任务交给计算机和打印机来处理,这样更快地完成打印渲染,从而加快打印速度。

移动打印
智能手机普及以来,需要频繁地从移动设备上打印。从而产生了一些移动打印解决方案。
系统级:Android Print Service 和 Apple AirPrint
AirPrint 在 iOS 系统里集成了打印框架,打印机厂家在打印机上提供支持。AirPrint需要苹果的支持和授权。
Android Print Service 是 Android 系统里提供了打印服务接口,由打印机厂家来提供打印服务程序(相当于打印机驱动)。Android Print Service只需要厂家按规范编写打印服务程序就可以,不需要在打印机固件上提供支持。移动 APP 需要调用系统的打印 API 来输出,对于一些未提供打印功能的程序,无法使用此接口打印。典型的如 Android 中的照片 APP,如果菜单里没有“打印”功能,则无法使用此方式来打印。

应用级:各厂家也基于自己的打印机产品提供了应用层面的打印机支持。例如 HP ePrint,Canon PRINT Business/Ink/SELPHY。这种实现是一个普通的 APP,在应用层面提供打印机的支持。其它软件通过系统的“分享”功能,把文档数据分享至相应的应用来打印。兼容性比较高,但实际打印格式的支持可能有限,仅限常见格式。

[1] 历史的有趣历程:打印设备进化简史

Microsoft Arc Mouse使用手记

熊同学不久前刚从万恶的资本主义美国回来,还特意买了一台HP笔记本作为资本主义的见证。Amazon上面买回来的电脑居然是不包含鼠标这样的基本配件的,跟中关村送鼠标送插线板送清洁套装比起来差太多,看来还是我们伟大光荣正确的社会主义好啊。

正因为如此,我决定送一个鼠标给她。拿来送人的东西,当然不能随便买一个杂牌鼠标完事。慎而又慎,挑而又挑,我终于选中了一款品牌、外形、质量都过得去的鼠标,这就是本文要说的 Microsoft Arc Mouse.

送来的 Arc Mouse 是包装在一个透明的硬质塑料盒子里的。送货的中通物流实在难以令人满意,从北京市内海淀区中关村寄到宣武区西客站附近,第一天晚上发货,直到第二天下午我要下班了才在我电话催促之下送到。若我有时间还不如320路公交车往返一次来得实在。另外,送到的包装还有一个明显的裂纹,让送礼的我很是不满,还好做了一个礼品包装,不然就丢人丢大了。

Arc Mouse 最大的优点在于它的广告词写的:Design for comfort, folding for portability. 他有一个独门绝技,可以将自己的身段收起来,这时它的大小只有原来的 60% ,微软还附了一个收纳袋,刚好装下折叠后的鼠标。鼠标的无线接收器是用磁性吸纳在折叠部分的凹槽上的,完美地诠释了 folding 这个词。

哪怕是只从外形上考虑,Arc Mouse 也不会输给其他鼠标。它的整体设计是基于一个优雅的圆弧,展开后的下方是中空的,配以可以自己挑选的颜色,绝对会让挑剔的 MM 一眼相中。

当然鼠标毕竟不是花瓶,除了好看也要好用才是。Arc Mouse 也难得的地具备了这个特点。技术上讲,它是一只2.4GHz无线激光鼠标。无线技术目前有 27MHz、2.4GHz 和 蓝牙Bluetooth 技术。27MHz 是第一代无线技术,目前已经几乎淘汰,我曾经用过的 Microsoft Wireless Notebook Optical Mouse 3000(无线迷你鲨3000)就是这一技术的代表。蓝牙技术本质上也是基于 2.4GHz 无线,只是它遵循特定的调制标准使得支持蓝牙的设备可以互通。它的缺点不在于技术而是市场,原因是采用蓝牙技术要缴纳一笔授权费,造成了蓝牙鼠标成本过高的情况。另外,没有接收器也是一个弱点,因为并不是所有的机器都支持蓝牙。

Arc Mouse 采用了 850 纳米激光引擎,可以在大多数的表面上自由地移动。虽然未采用微软最新的 BlueTrak 蓝光引擎,但激光引擎的易用性已经比普通的红光 LED 好很多了。分辨率和刷新率我还不记得准确的数据,但至少应该有 1000dpi。

总结一下这个鼠标,他虽然没有微软自家的 Mobile Memory Mouse 8000 那样的多功能,也没有罗技 VX Revolution 的 MicroGear 合金滚轮,没有 VX Nano 那样的超小型接收器。但是在功能、便携、易用性之综合上,的确达到了很高的水平。它唯一的“缺点”在于价格,微软官方的建议零售价是 USD 49.99,折合人民币约 340 元,普通使用者看过之后就会望而却步。我买的是礼品,在乎情意而不是价格,却也希望价格能尽快降下来,让更多的人能够体会到如此优秀的鼠标。

无线路由器功率的一点消息

在无线论坛上,经常看到有人对无线路由器的功率很关心,特别是希望加大覆盖效果的。DD-WRT 和 Tomato 固件都提供了调节发射功率的功能,受到大家的称赞。但是其标称的值是 0-251 mW,真正的效果怎么样,似乎大家都没有一个明确的认识,只是从直觉上相信它可以达到如此的功率。

我曾经在 DD-WRT 论坛上看到过美国 Alaska University 的 tparris 使用实验室的安捷伦频谱分析仪检测过 Buffalo WHR-HP-G54 无线路由器,所以正好把他的结果编译一下,发在这里算是一个参考。

0mW setting = 0dBm output (1.0mW)
1mW setting = 0.1dBm output (1.0mW)
2mW setting = 4.1dBm (2.6mW)
4mW setting = 7.5dBm (5.6mW)
8mW setting = 11dBm (12.6mW)
16mW setting = 13.7dBm (23.4mW)
28mW setting = 16.5dBm (44.7mW)
32mWsetting = 17.0dBm (50.1mW)
50mW setting = 19.5dBm (89.1mW)
64mW setting = 19.5dBm (89.1mW)
80mW setting = 19.7dBm (93.3mW)
128mW setting = 20.1dBm (102mW)
251mW setting = 20.0dBm (100mW)

此处的测量功率是 ch6 通道的发射功率的均方根,阻抗为50欧。

从以上结果可以看到,路由器实际的发射功率不超过 102mW,同时,DD-WRT/Tomato的设置中有效设置区间仅仅是 1-128 。 设置值为 0 时实际还有 1mW 的发射功率,设置值超过 128 时,实际功率并没有提升,而是限制在 100mW 左右。(这个值也是 802.11 无线网络的限制值)

tparris 在他的文章中提到,路由器的硬件部分有一个 AGC 电路(Automatic Gain Control,自动增益控制),它把输出功能限制到了100mW。从软件中是无法将路由器的发射功率提高到 100mW 之上的。他还做了一个小测试,证明了 AGC 电路的确限制了发射功率。

要查看 tparris 的原文请点击这里
同时欢迎到 Wi科技 参与此文的讨论 🙂

开源无线路由器固件上 Bug 的故事(二)

上一篇文章花了很大的气力讲了开放源代码第三方家用无线路由器固件的基本情况和绕过这个 bug 的办法。绕过 bug 在很多时候不失为一种有效的选择,特别是像之前我遇到的情况:开发组在一年内都没有对 bug report 作出任何响应。所以在失望之余也只好另辟奚径了,再用俗话说一遍就是“惹不起,躲得起”。 😉

下面把话说回来,毕竟文章的主题是 Bug 的故事,所以还是要接着往下说。只是后面的东西更偏向于技术,所以比较枯燥一点。

3. Bug 的认定和定位

这个 Bug 之所以让我记恨于心,的确是因为它太复杂了:从 bug 的发现认定,到 bug 定位和 bugfix,由于没有正式的官方支持,OpenSource Community 这种散兵游勇的开发全靠分散在各地的个人,每一步的进展都很艰难。

这个 Bug 造成的问题是目的MAC地址为 00-80-C2-00-00-03 的 802.1X 多播认证包被无线路由器丢弃(不会转发到 WAN 口),这样在路由器上运行的 Supplicant 程序在发出 logon request 之后便再也收不到回复。问题其实很明显,因为使用同一个程序,把网线插到 PC  上便能通过认证,显然就是路由器处理的问题。

那为什么说 bug 认定是一件麻烦事呢?因为后来才确定这个 bug 只存在于 Broadcom® 公司的 Roboswitch™ 系列交换芯片中。早期的 Linksys WRT54G 路由器使用的是 ADM6996L 交换芯片(ADMTek 已经被 Infineon 收购),在进行认证的时候是没有问题的。所以这个问题在此型号的机器上无法重现,再加上大家都从软件角度来思考(其实这是个硬件问题)。最后导致了两种声音:一种声音坚定地说自己遇到了 OpenWRT 的 bug,另一种声音说,这个 bug 在我的机器上无法重现,不能认定。这两种声音可以在 OpenWRT Trac 上的 Ticket 1862 看到。

 接下来有人发现“It has also worked for me on WRT54G 1.0-2.0. On WRT54G 4.0 it does not work.”,大家这才意识到这是 BCM5325 交换芯片搞的鬼。后来的 BCM5352 和 BCM5354 芯片内部都集成了一个交换模块,因此也理所当然地继承了这个 bug 。

修订:根据 jacky235 的消息,8230-4 和 WZR-G108 使用了 BCM5325A2KQM 交换芯片,但可以通过认证。而 OpenWRT Ticket 1862 上出现问题的是 BCM5325E 交换芯片,此芯片支持额外的管理功能和 802.1x EAPOL filtering 。所以将出问题的交换芯片定位到 BCM5325E 上面。集成了交换芯片的 BCM5352 和BCM5354 依然有问题,这个我自己可以证实。

此 Bug 的产生机理是什么呢?其实话说回来,这本来是 Braodcom 设计出来的 feature ,目的是为了使交换芯片的工作模式更加灵活一些,可是 Broadcom 的保守和封锁让这个 feature 在这里适得其反。(关于bug 和feature 的辩证关系,请看 atppp 的文章)如果芯片工作在 Default Mode ,那么会丢弃 802.1x 认证多播包 00-80-c2-00-00-03 ,如果芯片工作在 Frame-Management Mode ,则会把此包转发到 Frame Management Port 。如此简单的逻辑

4. Bugfix 和当前问题

这个 bug 的修复就更棘手了。人们总算搞清楚了问题的所在,但就是没办法去修复它。因为你无论是 Google、Yahoo 还是百度都找不到详细的 BCM5325 芯片资料。所有宣称有 Datasheet 的网站上下载回来的只有两页纸的 Product Brief。这东东在 Broadcom 自己的网站上就能下载到,无非就是花一页纸吹了一下自己这个芯片有如何如何的 feature 云云,然后再花了一页纸作 Overview,扔一个架构图上去完事儿,真是印证了 Brief 这个词。

后来我才从某个网页上无意得知,Broadcom 的 Datasheet 一般是不公开的。只在有渠道的代理商那儿有,只有从人家那儿拿货然后签订一个保密协议,人家才会给你一份 PDF 文档。当然给你的文档是没法传播的:每一页纸上面都斜贯着长长的一串水印——谁泄露出去了谁承担责任。Broadcom 这招的确狠,可也给 bugfix 工作设置了最大的屏障。

针对这个 bug 给出解决方案的是 Jouke Witteveen。他的解决方案没有去 patch OpenWRT,而是给 wpa_supplicant 上的 wired Driver 作出了修正。他提出了一个新的 roboswitch driver 专门用于 Roboswitch 上的 802.1X 认证。我现在寝室里用的 Buffalo WHR-HP-G54 上就使用此程序通过了学校的 802.1X 认证。然后再运行一个 mytunet 来打开网关上的出校访问权限。这样就可以在全天时间使用无线网络了。(熄灯停电时除外……)

这个 bugfix 我用了大半年了,还是比较顺利的。只是最近在恩山无线论坛上看到了很多人受困于 H3C 和锐捷的私有 802.1X 认证。于是有人打算在路由器上运行 Linux 版的认证程序从而通过校园网认证。无奈的是这个 bug 再一次阻止了一大部分人的企图…… 很多人新买的路由器比如 WHR-HP-G54、WL-520gU、WHR-G125 等都有 roboswitch 的身影,移植过来的认证程序在 PC 上跑跑当然可以,可惜是没有针对性地解决 Broadcom roboswitch 的问题。自然也逃不过此 bug 的追杀,恩山上铩羽而归的人不在少数。

幸运一些的人有两种可能。一种是使用的 Belkin 7231-4p(不管有没有经过恩山无线的改版)它使用了 ADM6996L 交换芯片,没有此问题。另外一种是像 felix021 同学那样的,虽然路由器是使用 BCM5354 芯片的 WL-520gU,但校园网认证协议使用广播包(MAC为 FF-FF-FF-FF-FF-FF)而不是多播包。所有的交换模块接到了广播包当然是无条件转发。因此也能顺利通过认证。

不幸运的该怎么办呢? 😈  可以移植 Jouke Witteveen 在 roboswitch 中使用过的方法,在私有协议的认证程序中加入 Broadcom 芯片的支持,则有希望通过认证了。我已经跟 Jouke Witteveen 取得联系,他毫无保留地提供了一份 leaked document 给我作参考,十分感谢。 🙂

PS: 发现 WordPress 链接到自己文章的时候会发送 pingback,看上去真傻……只好装了一个 No-self-ping 插件。

开源路由器固件上 Bug 的故事(一)

前段时间在 atppp 的博客上读到了“纪念一个 Bug”,这让我想起了 OpenWRT 开源固件上面关于 Broadcom 交换芯片的一个 bug,所以也来写个文章纪念一下。

1. Linksys 开源路由器固件的起源和发展

OpenWRT 这个项目最早起源于 Linksys 的 WRT54G 家用无线路由器固件。WRT54G 这款无线路由器(台灣同胞稱作“無線基地台”或者“無線IP分享器”)是 2003 年 802.11g 无线网络兴起时在家用领域的领军人物,引来叫好一片。于是有人研究了它的软件系统,赫然发现它是一个基于 Linux 的嵌入式系统。所以根据 GPL 这一个病毒一样的协议要求 Linksys 开放源代码。Linksys 架不住压力,于是根据 GPL 开放了源代码(现在还可以在 Linksys 的网站上下载)。这一开放,就使得第三方固件雨后春笋一般蓬勃发展起来。OpenWRT 是最特别的一个。因为别家都是在 Linksys 的源代码基础上添砖加瓦,唯有 OpenWRT 是重新构造一个完整功能的路由器固件。

然而做 OpenWRT 的都是一群高人,他们注重扩展性、可定制性却忽视了普通大众的需求。做出来的东西只能用命令行玩玩,这让习惯从浏览器里配置无线路由器的劳苦大众无所适从。所以后来有了 Seavsoft 做了收费但带有 Web UI 的固件,再后来又有了 DD-WRT,DD-WRT 从 v23 的成熟发展到今天 v24 sp2 的功能多样而不失易用性,的确为开源无线路由器的发展立下了汗马功劳。

Tomato 是 DD-WRT 之外异军突起的一个优秀固件。它注重于简单、实用、高效,并且以优雅的 AJAX Web UI 和高效的 QoS 功能赢得了广泛支持。作者原来是 HyperWRT 开发小组的一员,后来跑出来自立门户开发 HyperWRT + Tofu 固件,就演变成了今天的 Tomato Firmware 。

(汗 :mrgreen: 说了个背景就说了这么多!)

2. 关于 802.1X 认证的 bug

因为面向家用和小企业市场,家用路由器的连接方式主要是 PPPoE 和 LAN 接入。但是现在众多学校等接入单位觉得对于 LAN 接入不方便对用户的控制和管理,于是把原本为无线网络设计的 802.1X 认证体系引入到了 LAN 网络中。802.1X 是一个二层的访问控制协议,用户只有认证之后,交换机才开放相应的端口,允许用户接入。这就是传说中的“基于端口”的管理。

众多学校引入了 IEEE 802.1X 之后,导致市面上的家用无线路由统统作废,因为这些设备压根就没有支持 802.1X 这回事(当然现在国内的 TP-LINK 已经顺应国情推出了支持 802.1X 认证的产品)。更可恶的是,国内的锐捷、H3C 推出了802.1x 的自有扩展协议,只能使用自己研制的客户端上网。而这些客户端无一例外地“附赠”了禁止NAT、多网卡的功能。妄图以多角度、多手段来扼杀同学们突破限制的种种企图。

俗话说“道高一尺,魔高一丈”,又说“上有政策,下有对策”,Linux 版本的 802.1x 客户端也自然而然的产生了。而开源固件又正好是基于 Linux 制作的。这些小路由器们个个都有支持 MIPS 指令集的 CPU,外加 4-32 MB 不等的 Flash ROM 和 RAM,本身就是一个五脏俱全的嵌入式 Linux 系统。这样就可以想办法将认证程序移植到开源固件中。

我去买了个 Buffalo  WHR-G125 ,在 Ubuntu Linux 下半生不熟地用交叉编译工具编译出学校校园网的认证程序 mytunet,满怀希望地放上去跑,没想到程序一直停滞在“Send logon request …” 这一步,压根没有收到服务器的响应。但把网线换到 PC 上又可以正常登录。看来是某个地方有问题了。

后来在 Google 上使劲搜,终于找到了问题的原因,OpenWRT 的 Trac 上有两个编号为 16871862 的 Ticket 说明了这个问题。

1687 放出来以后,人家没仔细看就把这个 ticket 关掉了,后面又有人 reopen ,然后再度被关闭。如此往复了几次,就晾在那没人理了。

1862 就更无奈了,Bug 放出来一年没有人理,四楼的哥们一怒之下来了一段抱怨的话:

Judging the fact that this bug is now lingering on for more than a year (since I first pointed it out) and the zero respons from the openwrt team, I came to the understanding that the openwrt team is more interested in fancy apps than a good working tcp stack. Shame shame shame.

俺七个月以前看到这个状态的时候,也觉得很无奈。人家开发者压根不鸟你,只好自己也参与讨论,然后以 Scott Liu 的身份在上面用蹩脚的英语提了提自己的意见完事。

后来把这个路由器在水木二手版上折价买掉了,360买回来的东西拿回来没过十天转出去的时候就是 260 了,价格掉得真快。期间有幸得到康神的指导,倍感荣幸。神说俺体察了一下网络上的民情,发现这是 Broadcom 交换芯片的硬伤,只是俺精力不如从前没工夫去 patch 了,你把它出掉是明智的。神又给我指了一条明路,说神自己的 Dell TrueMobile 2300 可以发送和接收 EAP 认证包,不存在上面的问题,指示我去买一个使用了 6996L 交换芯片的机器就没问题。

幸得神助,又在淘宝上淘了一个 Linksys WRT54GS v1.1 v1.0 (感谢 hyspace 指正) ,序列号以 CGN1 开头,特意跟店家确认了是 6996L 交换芯片。拿回来刷好固件,试了试,果然毫无问题地通过了校园 802.1X 认证!回来跟康神报告,神 cong 了一下又很谦虚地说“其实原因你自己之前也说了……”云云。向 atppp 学习随时随地拜康神!

买到了没有 bug 的硬件,这个问题基本上靠以段落了。下一段的 bugfix 又是后话。