串口上网实测:用 RS-232 让 Windows XP 和 Windows 11 直接联网

这篇文章整理自我在 B 站发的“串口上网”视频。简单说,我尝试用一根 RS-232 串口线,把一台 Windows XP 老电脑和一台 Windows 11 新电脑直接连成网络。

这件事听起来很离谱:现在随便一根网线、一只 Wi-Fi 网卡、一条 USB-C 线都比串口快太多。但正因为串口太古早,整个过程反而很有意思:线材不能乱买,Windows 里的老拨号功能还没完全死透,USB 转串口芯片甚至能把新系统搞到绿屏。

用串口让老电脑上网的主题封面
用串口让老电脑上网的主题封面

先说结论

串口确实可以让两台 Windows 电脑直接联网。核心思路是:把两台电脑之间的串口连接伪装成“调制解调器/直接电缆连接”,再通过 PPP 拨号建立点对点网络。

但它并不适合日常使用。默认 19200 bps 的速度非常慢,实际传输大概只有 1.4 到 1.6KB/s;改到 115200 bps 后,实际下载能接近 12KB/s。能玩,但真的不快。

这次实验里最关键的经验是:

  • 串口线不能随便买,电脑对电脑需要交叉线,而且拨号网络最好要带硬件握手信号。
  • 廉价 CH341/CH340 USB 转串口在高频硬件握手下可能出问题,我这次直接遇到系统崩溃。
  • 换成 FT232R 后,Windows XP 和 Windows 11 才顺利连上。
  • 新版 Windows 11 已经逐步删减“传入连接”等点对点拨号功能,最好让旧一点的系统当服务端。

老电脑背后的串口和并口

老电脑后面一排接口非常有年代感:USB、RJ45 网口、3.5mm 音频口、VGA,这些很多人还认识。再往上看,就会看到两个现在不太常见的口。

老电脑背后的串口、并口和 VGA 接口
老电脑背后的串口、并口和 VGA 接口

小一点、9 个针的是 DB9 串口,也就是常说的 RS-232 串口。以前它经常用来接鼠标、手柄、调制解调器,现在更多出现在 PLC、工控设备、调试口上。

旁边大一点、25 个针的是并口,以前主要用来接打印机、ZIP 驱动器、扫描仪,甚至光驱和加密狗。

DB9 串口和 25 针并口
DB9 串口和 25 针并口

拨号上网时代,电脑要通过电话线上网,需要 Modem,也就是俗称的“猫”。猫负责把电话线里的模拟信号和电脑里的数字信号互相转换,而电脑和猫之间就可以通过串口通信。

这就引出了一个很有意思的问题:如果不用电话线和猫,直接把两台电脑的串口接起来,会不会也能联网?

答案是:可以。

需要准备什么

现代电脑基本没有原生串口,所以新电脑通常要准备 USB 转串口,或者 PCIe 转串口卡。

USB 转串口适配器
USB 转串口适配器

这次实验里,我一开始用了常见的 CH341/CH340 系列 USB 转串口,后面因为驱动崩溃换成了 FT232R。

硬件大致需要:

  • 一台带串口的老电脑,或者通过扩展卡获得串口的电脑。
  • 一台新电脑,通常需要 USB 转串口。
  • 一根合适的 DB9 串口线。
  • Windows XP / Windows 11 里的“调制解调器”和拨号连接功能。

串口线不是随便一根都行

网线有直通线和交叉线,串口线也有类似问题。我一开始随手拿了一根直通线,两台电脑完全无法通信。

普通串口线不一定能让两台电脑互相通信
普通串口线不一定能让两台电脑互相通信

电脑和设备之间通常用直通线;电脑和电脑之间,需要交叉线,也就是 Null Modem 线。但这里还要再细分:

  • 简单交叉线:只交叉 TX 和 RX,适合最基础的收发测试。
  • 带握手信号的交叉线:除了 TX/RX,还处理 RTS/CTS、DTR/DSR 等硬件流控信号。

串口拨号网络不只是简单发几个字符,它要跑 PPP、握手、流控。只交叉 TX/RX 的简单线可能能跑串口调试,但不一定能跑直接电缆连接。

带硬件握手的串口交叉转换头
带硬件握手的串口交叉转换头

我最后的解决方法是:在直通线基础上加一个交叉转换头。这个转换头不只交叉 RX/TX,还会处理剩下几组用于握手的线。

flowchart LR
    A["电脑 A:TX"] --> B["电脑 B:RX"]
    C["电脑 A:RX"] --> D["电脑 B:TX"]
    E["电脑 A:RTS / DTR"] <--> F["电脑 B:CTS / DSR"]
    G["GND"] --- H["GND"]
    I["只交叉 TX/RX"] --> J["能聊天,不一定能拨号联网"]
    K["带硬件握手交叉"] --> L["更适合 PPP / 直接电缆连接"]
RS-232 串口交叉线和握手信号示意
RS-232 串口交叉线和握手信号示意

在 Windows XP 里添加“两台计算机间的通讯电缆”

硬件接上以后,Windows 还不知道你要拿串口干什么。第一步是把串口配置成一个虚拟调制解调器。

在 Windows XP 里,进入控制面板里的“电话和调制解调器”,到“调制解调器”选项卡,点击添加。选择“不要检测我的调制解调器”,然后在标准调制解调器类型里找到“两台计算机间的通讯电缆”。

Windows XP 添加两台计算机间的通讯电缆
Windows XP 添加两台计算机间的通讯电缆

如果老电脑主板自带串口,通常是 COM1。选好串口后,Windows 就会把这个串口当成一个可以拨号的通信电缆。

接下来要设置服务端。视频里我是先让 Windows XP 当服务端:

  • 打开网络连接。
  • 创建一个新的连接。
  • 选择高级连接。
  • 选择接受传入连接。
  • 选择刚刚添加的“两台计算机间的通讯电缆”。
  • 用户可以选 Guest,或者新建一个带密码的账号。
  • 给点对点连接分配 IP,比如 192.168.51.1192.168.51.2
  • 勾选允许呼叫方访问局域网。

这里的体验非常有时代感,但逻辑其实很清楚:XP 接受拨入连接,另一台电脑拨进来,两边形成一条 PPP 链路。

在 Windows 11 里拨号连接

Windows 11 也还保留了一部分老功能。你可以在控制面板里找到“电话和调制解调器”,同样添加“两台计算机间的通讯电缆”。

之后在设置里进入网络相关页面,新建拨号连接。比较新的 Windows 11 入口不太一样,视频里是通过“连接到工作区”再选择“直接拨号”。电话号码可以随便填,比如 1,用户名填 XP 那边允许拨入的 Guest。

Windows 11 创建直接拨号连接
Windows 11 创建直接拨号连接

理论上到这里就应该连上了。但现实很快给我来了一拳。

CH341 USB 转串口导致系统崩溃

我第一次点击连接时,Windows 直接崩了。视频里看到的是绿屏,不同系统也可能是蓝屏或黑屏。

CH341 USB 转串口连接时触发 Windows 绿屏
CH341 USB 转串口连接时触发 Windows 绿屏

错误代码是 DPC_WATCHDOG_VIOLATION,这种错误通常和驱动、硬件中断、内核等待超时有关。为了确认原因,我把 C:\Windows\Minidump 里的崩溃转储复制出来,用 WinDbg 打开分析。

WinDbg 分析结果指向 CH341S64 驱动
WinDbg 分析结果指向 CH341S64 驱动

分析结果里直接点名了 CH341S64。也就是说,问题很可能出在这个 USB 转串口驱动上。

我的猜测是:CH341 这类廉价 USB 转串口芯片,在处理这种需要频繁硬件握手、持续网络流量的场景时,驱动内部逻辑出了问题,长时间占用高优先级 DPC,最终触发 Watchdog 超时。

这不是普通串口打印几个字符的问题,而是拿串口当网络链路跑 PPP。对驱动的稳定性要求明显更高。

换 FT232R 后终于连上

驱动我不会写,也不想折腾签名,所以直接换方案。后来换成 FT232R 转换芯片,重复前面的设置,终于顺利连接上了。

FT232R USB 转串口模块
FT232R USB 转串口模块

连接成功后,Windows 里显示速率是 19.2 Kbps。这个数字非常有年代感。

串口拨号连接成功后显示 19.2 Kbps
串口拨号连接成功后显示 19.2 Kbps

19.2 Kbps 看着还能接受,但换算一下就很残酷。默认 8-N-1 串口格式下,每传 8 个数据位,还需要起始位和停止位,总共约 10 个 bit。19200 bps 除以 10,大概只有 1920 字节每秒。

再扣掉 PPP、TCP/IP 协议开销,实际大概只有 1.4 到 1.6KB/s。

修改波特率到 115200

如果只用默认 19200 bps,传一张图、一个音乐、一个软件都很痛苦。所以需要把两边的波特率提高到 115200。

修改位置在“电话和调制解调器”里,选中刚刚创建的“两台计算机间的通讯电缆”,进入属性。需要改两个地方:

  • 调制解调器速度改到 115200。
  • 高级设置里的端口速度也改到 115200。

如果改不了,要先进入常规页面点“更改设置”。Windows 11 有时需要重启才生效,Windows XP 通常直接改完就能用。

115200 bps 理论上是 19200 的 6 倍,实际下载能接近 12KB/s。依然很慢,但至少能稳定传小程序。

通过 HFS 在串口网络上传文件
通过 HFS 在串口网络上传文件

我用 HFS v3 在两台电脑之间传程序,速度虽然低,但稳定性还不错。那种“慢慢传、但真的能传”的感觉,很像把网络拆回到了最原始的状态。

反过来:Windows 11 做服务端,XP 做客户端

刚才是 XP 做服务端、Windows 11 做客户端。反过来也可以:Windows 11 做传入连接,XP 拨入。

在 Windows 11 里最快的入口是按 Win + R,输入:

ncpa.cpl

打开网络连接窗口后,按 Alt + F,可以看到菜单里的“传入连接”。

Windows 11 网络连接里的传入连接入口
Windows 11 网络连接里的传入连接入口

但这里有一个重要限制:太新的 Windows 11 版本可能已经删掉或隐藏了“传入连接”。这种情况下,新系统只能当客户端拨号,不能当服务端。比较旧的 Windows 11 23H2 或更早版本,成功率会高一些。

XP 这边拨号就很传统:网络连接里新建连接,按向导选择拨号。连接成功后,桌面右下角会显示现在的连接速率。

Windows XP 拨号连接成功并显示速率
Windows XP 拨号连接成功并显示速率

进阶:921600 bps 和 1M 串口网络

原稿里我还准备了一个进阶方向:如果两边都是现代 USB 转串口,尤其是 FT232 这类芯片,硬件上可以尝试更高波特率,比如 921600 bps。

但 Windows 的调制解调器设置界面通常只给到 115200。要突破这个上限,需要改注册表里调制解调器类的参数:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}

里面可能会有 00000001 之类的子项,需要找到对应的 modem 项,再修改 Max 相关最大连接速度和二进制属性。这个做法比较土,也有风险,不建议普通用户照抄。

如果真的能跑到 921600 bps,除去协议开销,文件传输能接近 100KB/s 左右。和现代网络当然没法比,但对串口来说已经是完全不同的体验。

flowchart LR
    A["19200 bps"] --> B["实际约 1.4-1.6KB/s"]
    B --> C["115200 bps"]
    C --> D["实际接近 12KB/s"]
    D --> E["921600 bps"]
    E --> F["理想情况下接近 100KB/s"]
    F --> G["线材、芯片、驱动、距离都会影响稳定性"]

串口之外,还有并口直接电缆连接

如果回到 90 年代,其实串口不是最流行的互联方案。那个 25 针并口配合交叉并口线,才是当时互传文件更常见的方式。

当年并口直接电缆连接比串口更适合传文件
当年并口直接电缆连接比串口更适合传文件

串口撑死到 1M 左右,并口在标准模式下就能到 1.2Mbps,配合 ECP/EPP 增强模式,甚至能达到 16Mbps,也就是大约 2MB/s。放在 90 年代中期,这已经是很强的本地传输工具。

只可惜,XP 大概是最后一个完整支持串口/并口“直接电缆连接”体验的 Windows。Vista 之后相关功能逐步被弱化,到了新的 Windows 11,很多入口已经被删除或隐藏。

总结

这次串口上网实验,最有趣的地方不是速度,而是它把“网络”这件事拆回了很底层的状态:一根线、几个握手信号、一个虚拟调制解调器、一条 PPP 链路。

从 19200 bps 到 115200 bps,再到理论上的 921600 bps,串口速度的每一步提升都很吃力。它不像以太网、USB、雷电那样一路狂飙,而是被电气特性、线材、驱动和系统兼容性死死限制住。

但也正因为这样,当 Windows XP 和 Windows 11 真的通过串口互相连上时,那种感觉非常奇妙:不是为了实用,而是为了亲手摸一下技术历史的纹理。

如果你也想复刻,建议记住三件事:别买错串口线,尽量用稳定的 FT232R 这类转接芯片,新版 Windows 11 不一定还能当服务端。做好这三点,串口上网这件事,今天依然可以跑起来。