串口机械鼠标在 Windows 11 复活实测:DB9、Serenum、CH340/FT232 和 40Hz 回报率

这篇文章整理自我在 B 站发布的串口机械鼠标视频。主角是一只双飞燕 OK-720,两键、滚球、DB9 串口,背后还拖着一根现在看起来很有年代感的线。

问题是:一只 20 年前的串口鼠标,真的还能在 Windows 11 上动起来吗?如果能动,为什么有的 USB 转串口会卡成 10Hz,而有的又能接近它的物理上限 40Hz?

简体中文封面:双飞燕 DB9 串口机械鼠标,20 年前神器重新上机
简体中文封面:双飞燕 DB9 串口机械鼠标,20 年前神器重新上机

先说结论

这只串口机械鼠标不是完全不能用,但它很挑环境。

  • 在 Windows XP 原生串口上,它可以通过系统扫描识别,日常操作和老游戏都能用。
  • 在 Windows 11 上,普通插入 USB 转串口不会自动变成鼠标,需要启用串口枚举器。
  • 串口鼠标的典型协议只有 1200bps,三字节数据包算下来物理上限大约就是 40Hz。
  • 某些 CH340 转接在这种极小数据包场景下会出现明显聚包和延迟,实际手感可能掉到 10Hz 级别。
  • 换成延迟策略更适合的 FT232 一类转接后,能更接近 40Hz 的原始体验。
  • 机械结构本身很有意思:滚球、X/Y 光栅轮、红外发射接收、EC3581 控制器和 DTR/RTS 窃电,组成了一套非常朴素但完整的输入系统。
  • 真要拿它打现代游戏并不现实;但拿来理解鼠标输入、串口枚举和老硬件兼容性,非常值得折腾。
成片开头对比现代鼠标和串口机械鼠标:一个靠光学传感器,一个靠滚球和 DB9 串口
成片开头对比现代鼠标和串口机械鼠标:一个靠光学传感器,一个靠滚球和 DB9 串口

这只鼠标到底老在哪里

现在的鼠标大多是 USB、2.4G 或蓝牙,底部一个光学传感器就能完成定位。这只双飞燕 OK-720 完全是另一个时代的设计:底部有滚球,线缆末端是 DB9 串口,鼠标本体没有滚轮。

没有滚轮这件事很关键。标准 Microsoft 串口鼠标协议主要处理左右键和 X/Y 位移,常规两键版本并不包含滚轮。后来确实有厂商做过带滚轮的串口鼠标,但往往需要扩展协议或专用驱动,不能简单等同于普通两键串口鼠标。

双飞燕 OK-720 的 DB9 串口插头和机械鼠标本体,接口和现代 USB 鼠标完全不是一个时代
双飞燕 OK-720 的 DB9 串口插头和机械鼠标本体,接口和现代 USB 鼠标完全不是一个时代

鼠标背面的标签也很有意思,上面写着德国评比得胜、省电之类的宣传语。这类广告语放在今天有点复古,但在当年很能说明一件事:机械鼠标的手感、耐用性和排尘结构,曾经真的是外设厂商认真卷的地方。

双飞燕旧网页奖项资料截图,能看到当年机械鼠标时代的宣传口径和获奖资料
双飞燕旧网页奖项资料截图,能看到当年机械鼠标时代的宣传口径和获奖资料

机械鼠标如何把滚球变成坐标

机械鼠标的底层逻辑很直白:桌面带动橡胶球,橡胶球再带动内部的 X/Y 两根轴。两根轴上各有一个带孔的光栅轮,红外发射管和光敏接收管夹在光栅轮两侧。

滚球移动时,光栅轮会不断切割红外光。控制芯片根据脉冲变化判断方向和位移,再把结果打包成串口数据发给电脑。

拆开外壳后的机械鼠标内部,滚球带动 X/Y 光栅轴,右侧压力轮负责稳定接触
拆开外壳后的机械鼠标内部,滚球带动 X/Y 光栅轴,右侧压力轮负责稳定接触

这也是机械鼠标为什么要定期清理滚球和滚轴。只要滚球沾灰、打滑,或者压力轮把球压不稳,光标就会漂、丢步、突然多走一点。它没有现代光学鼠标那种算法补偿,机械结构本身就是定位精度的一部分。

鼠标球不是纯橡胶

我简单测了一下这颗滚球:重量大约 31.27g,直径约 21.87mm,算出体积约 5.477 立方厘米。

机械鼠标滚球体积计算,直径约 21.87mm,体积约 5.477 立方厘米
机械鼠标滚球体积计算,直径约 21.87mm,体积约 5.477 立方厘米

质量除以体积,密度大约是 5.71g/cm3。

机械鼠标滚球密度计算,31.27g 除以 5.477 立方厘米约等于 5.71g/cm3
机械鼠标滚球密度计算,31.27g 除以 5.477 立方厘米约等于 5.71g/cm3

这个密度明显高于普通橡胶,又低于纯碳钢,所以它大概率不是一整颗橡胶球,而是里面有高密度钢芯,外面包一层橡胶。按密度估算,钢芯直径大约 19.26mm,外层橡胶皮只有一毫米多。

根据质量守恒估算机械鼠标滚球钢芯尺寸,外层橡胶皮其实很薄
根据质量守恒估算机械鼠标滚球钢芯尺寸,外层橡胶皮其实很薄

这也解释了为什么老机械鼠标的滚球摸起来硬硬的:它需要足够的重量和惯性,让球压住滚轴,又要靠外层橡胶提供摩擦力。

PCB 上的 EC3581 和窃电电路

拆开 PCB 后,结构比现代鼠标简单太多。主控芯片丝印是 EC3581,它负责把左右按键、X/Y 光栅脉冲转换成串口鼠标协议。板上还有 32.768kHz 晶振、微动开关、红外发射接收器、电解电容和瓷片电容。

双飞燕 OK-720 鼠标 PCB 全貌,EC3581 控制器、晶振、微动和红外光栅组件都能看到
双飞燕 OK-720 鼠标 PCB 全貌,EC3581 控制器、晶振、微动和红外光栅组件都能看到

标准串口鼠标没有 USB 那样的 5V 供电线,它通常会从 DTR、RTS 等 RS-232 控制线里窃取电力。电容的作用就是把这点很弱的供电攒起来、滤一下,尽量避免控制器因为电压波动重启。

PCB 接线和供电附近细节,串口鼠标会利用 DTR/RTS 等线路为内部控制器供电
PCB 接线和供电附近细节,串口鼠标会利用 DTR/RTS 等线路为内部控制器供电

红外这部分也很朴素。发射管持续照向光栅轮,光敏管接收被切割后的信号。只要轴一转,接收端就能看到一串脉冲。

红外发射接收、限流电阻和 PCB 走线细节,机械位移最终会变成光电脉冲
红外发射接收、限流电阻和 PCB 走线细节,机械位移最终会变成光电脉冲

整条链路可以简化成这样:

flowchart TD
  A["滚球摩擦桌面"] --> B["X/Y 光栅轴旋转"]
  B --> C["红外发射管和光敏管产生脉冲"]
  C --> D["EC3581 计算方向、位移和按键"]
  D --> E["3 字节 Microsoft Serial Mouse 数据包"]
  E --> F["RS-232 1200bps 发到 COM 口"]
  F --> G{"系统如何识别"}
  G --> H["Windows XP 原生串口:Serenum / ntdetect 探测"]
  G --> I["Windows 11 USB 转串口:手动启用 Serial Enumerator"]
  H --> J["加载鼠标类驱动"]
  I --> J

为什么 Windows XP 上还能识别

在 Windows XP 上,如果电脑有原生串口,串口鼠标不是插上立刻就像 USB 一样弹出来。它更依赖开机或添加硬件时的扫描。

Windows 会通过 Serenum.sys 这类串口枚举组件去探测 COM 口。系统会翻转 DTR、RTS 等控制线,如果鼠标感知到这个变化,就会回传特定的识别数据。系统判断它像 Microsoft Serial Mouse,就把这个 COM 口挂成鼠标设备。

Windows XP 添加硬件向导会触发串口设备扫描,Serenum 会尝试识别串口鼠标
Windows XP 添加硬件向导会触发串口设备扫描,Serenum 会尝试识别串口鼠标

这和 PS/2 鼠标也不一样。PS/2 更依赖主板上的 8042 键盘控制器和 BIOS 阶段检测;如果系统启动时没检测到设备,后面热插就不一定能救回来,而且 PS/2 本身也不适合带电插拔。

PS/2 鼠标识别更依赖 SuperIO、8042 控制器和 BIOS 阶段检测,逻辑和串口鼠标不同
PS/2 鼠标识别更依赖 SuperIO、8042 控制器和 BIOS 阶段检测,逻辑和串口鼠标不同

所以串口鼠标在 XP 上的感觉很奇妙:它老,但系统还认识它;它慢,但和那个年代的桌面环境、屏幕分辨率、鼠标加速算法还算匹配。

Windows 11 上为什么默认不行

换到 Windows 11,问题就来了。新电脑没有原生 COM 口,只能用 USB 转串口。插上以后,设备管理器里会出现一个 COM 口,但鼠标本身不会自动变成人体输入设备。

原因是很多 USB 转串口驱动默认关闭了串口枚举器。这个设计并不是没道理:过去有些串口设备会输出一些类似鼠标数据的噪声,Windows 如果误判成鼠标,指针就会乱飞。为了避免这种问题,现代驱动更倾向于把 USB 转串口当作普通通信端口。

Windows 11 中 USB 转串口默认只是 COM 口,不一定会主动枚举成串口鼠标
Windows 11 中 USB 转串口默认只是 COM 口,不一定会主动枚举成串口鼠标

要让它变成鼠标,需要在设备管理器里找到对应的 USB-SERIAL 端口,进入属性,在端口设置的高级选项里启用类似“串口枚举器”的选项。开启后,系统才会再次尝试把这个 COM 口当作外设入口来探测。

如果探测成功,系统会出现鼠标相关设备。这个瞬间很有穿越感:一个 DB9 口的两键滚球鼠标,真的在 Windows 11 桌面上动起来了。

为什么 CH340 会卡,FT232 更顺

真正上手以后,最明显的问题不是能不能识别,而是手感。用某些 CH340 转接时,鼠标移动会一顿一顿,体感甚至像 10Hz。换成 FT232 一类转接后,才更接近它原本的 40Hz。

这里不是简单说某个芯片“好”或“不好”。串口鼠标的数据包太小了,每次移动只发三字节,频率又不高。某些 USB 转串口芯片为了提高 USB 传输效率,会倾向于先把小包攒进缓冲区,再一次性吐给电脑。

对普通串口通信来说,这样可能没什么;但对鼠标来说,延迟就是手感。你移动鼠标时,电脑平时收不到包,隔一段时间突然收到一串包,指针就像在跳。

CH340 延迟示意:极小数据包可能被缓冲后集中发送,鼠标手感会变成卡顿和跳跃
CH340 延迟示意:极小数据包可能被缓冲后集中发送,鼠标手感会变成卡顿和跳跃

FT232 的表现更接近“收到一个包就交一个包”。实测数据包间隔更均匀,基本能贴近 16ms 到 32ms 这个范围,和 40Hz 的理论上限吻合得多。

项目 典型表现 体感
原生串口 + Windows XP 接近 40Hz 在老系统上比较自然
CH340 USB 转串口 可能聚包,体感掉到约 10Hz 明显卡顿、跳跃
FT232 类 USB 转串口 间隔更均匀,接近 40Hz 能用,但仍然是老鼠标
现代普通鼠标 常见 1000Hz 完全不是一个时代

40Hz 是怎么来的

串口鼠标的核心限制来自波特率。以常见 Microsoft 串口鼠标协议为例,它通常跑在 1200bps,每次上报约 3 字节。串口线上每个字节还有起始位、停止位等额外开销,粗略按 10bit 算,三字节就是 30bit。

用 1200 除以 30,结果正好是 40。也就是说,这只鼠标理论上每秒最多给系统上报大约 40 次位移。

这个数字放在 90 年代还可以接受,放在今天就非常慢。尤其是在 4K 屏幕、现代鼠标加速算法和高刷新率显示器上,40Hz 会让指针移动显得一格一格的。

40Hz 串口鼠标在老系统中还能操作,但和现代高回报率鼠标相比已经明显落后
40Hz 串口鼠标在老系统中还能操作,但和现代高回报率鼠标相比已经明显落后

串口数据其实可以自己解析

串口鼠标有一个好玩的地方:协议足够简单,数据足够透明。你可以不依赖系统枚举器,直接用 Python 打开 COM 口,读取原始字节,再把三字节数据包解析成 X/Y 位移和左右按键状态。

核心思路是:

  • 找到数据包起始字节。
  • 收满三个字节。
  • 从第一个字节里取左右键状态和 X/Y 高位。
  • 从后两个字节里取 X/Y 低位。
  • 做符号扩展,把结果变成正负位移。
  • 再交给系统或自己的程序处理。
使用 Python 思路读取串口鼠标原始数据,三字节数据包可以直接解析位移和按键
使用 Python 思路读取串口鼠标原始数据,三字节数据包可以直接解析位移和按键

这一步的意义不只是“让鼠标能动”,而是让你能看到老硬件是怎么说话的。现代 USB HID 封装了太多细节,串口鼠标反而像一个透明样本:它的速度慢、功能少,但每个字节都很直观。

这只鼠标还能不能打游戏

在 Windows XP 上玩 CS 1.6,体验并没有想象中那么灾难。因为那个年代的游戏、显示器和系统鼠标加速本来就不是为 1000Hz 鼠标设计的。只要桌面够平、滚球够干净,它可以完成基本操作。

但在 Windows 11 上,哪怕成功启用串口枚举器,哪怕换成更合适的 USB 转串口芯片,它依旧不是现代游戏设备。40Hz 的上限、无滚轮、机械滚球清洁问题、USB 转接带来的额外调度延迟,都会让它在现代桌面里显得格格不入。

所以这次复活更像是硬件考古:不是为了证明它还能赢现代鼠标,而是为了看清一只鼠标从机械结构到系统驱动之间,曾经是怎样连起来的。

常见问题

串口鼠标可以热插拔吗

不建议把它当 USB 用。串口在物理上比 PS/2 鲁棒一些,热插通常不一定会烧东西,但系统不会像 USB 那样收到总线变化通知。插上后没有反应很正常,需要开机扫描或手动触发添加硬件。

Windows 11 一定能识别串口鼠标吗

不一定。你需要一个驱动支持串口枚举器的 USB 转串口设备,还要在设备管理器里启用相关选项。即使能识别,手感也取决于转接芯片和驱动延迟策略。

CH340 是不是不能用

不能这么绝对。CH340 做普通串口通信完全可以,但串口鼠标这种三字节小包、低速、强实时性的场景,很容易暴露缓冲和延迟策略的问题。如果目标是老鼠标输入体验,FT232 一类方案更值得试。

为什么串口鼠标没有滚轮

常见两键 Microsoft 串口鼠标协议主要处理左右键和 X/Y 位移,不包含滚轮。后来有厂商做过带滚轮的串口鼠标,但往往要靠扩展协议或专用驱动。

机械鼠标为什么要清理滚球

滚球和滚轴之间靠摩擦传动。灰尘、油污、毛屑会让球打滑,导致光栅轴转动不准,指针就会漂、跳、丢步。机械鼠标的维护成本比现代光学鼠标高很多。

相关阅读

最后

这只 40Hz 的机械鼠标,在今天动辄 1K、4K、8K 回报率的外设面前,当然已经慢得不像话。但它的滚球、光栅轮、红外管、串口数据包和 Windows 枚举逻辑,又把“鼠标为什么能动”这件事讲得特别清楚。

很多老硬件的价值不在于继续服役,而在于它把技术藏起来的过程重新摊开。你能看到一颗球怎么变成坐标,一个脉冲怎么变成数据,一根 DB9 线怎么把桌面动作送进系统。

如果你也用过这种要翻过来抠滚球的鼠标,或者还记得机房、网吧、CS、灰尘和微动声,那这只鼠标复活的就不只是一段信号,也是一小块被时代压扁但还没完全消失的记忆。