# Linux 与 Realtek RTL9210 USB 至 NVMe 桥接器

> **概述：**  
> • **症状：** Linux 下反复 USB 重置、I/O 错误或磁盘消失。  
> • **受影响：** Realtek RTL9210（已确认）及 RTL9220（可能）。  
> • **原因：** 校验和失败后回退至内部 ROM（**f0.01**）。  
> • **影响：** 永久性不稳定，Linux 无可用重新刷写工具。  
> • **解决方案：** 仅 OEM Windows 工具可恢复固件 - Realtek 阻止开源替代方案。

## 前言

到 2025 年，从通过 USB 连接的 SSD 启动 Raspberry Pi 应该是完全合理的。然而，由于 Realtek 固件的怪异特性，这个合理的目标变成了一场冒险。经过数月不明原因的不稳定 - 随机重置、磁盘消失、文件系统损坏 - 作者尝试了所有常规修复：新电缆、供电集线器、内核更新、USB 调整和固件优化。突破仅在深夜向 ChatGPT 提出一个奇怪问题时到来：
“USB 至 NVMe 桥接器是否可能回退到旧固件？”

## 引言

如果您基于 Realtek 的 NVMe 外壳在数周无故障运行后突然变得不稳定 - 反复 USB 重置、I/O 错误或磁盘消失 - 您并不孤单。这种模式在多个品牌中出现，从无名单位到 Sabrent 和 Orico 等知名 OEM。共同点：**Realtek RTL9210 和可能 RTL9220** USB 至 NVMe 桥接芯片。

最初，一切正常。然后，表面上没有原因，设备在负载下或长时间使用时开始断开连接，特别是在 Linux 或 Raspberry Pi 系统上。真正的原因不是 SSD 也不是电源 - 而是固件控制器本身悄悄回退到其 **嵌入 ROM 的备份代码**，这是 Realtek 内部仍作为 **f0.01** 提供的版本。

## 隐藏机制 - 按设计回退固件

Realtek 的桥接芯片将其操作固件和配置数据存储在外部 SPI 闪存中。开机时，控制器检查一个简单的校验和。如果该校验和不匹配，它拒绝加载外部固件，而是从其内部 ROM 启动。

此备份固件已过时且有缺陷。它缺少后续版本中存在的多个 USB 稳定性修复和链接状态管理改进，导致每个 Linux 用户都熟悉的经典序列：

> usb 3-2: 使用 xhci-hcd 重置高速 USB 设备编号 2  
> usb 3-2: 设备描述符读取/64，错误 -71  
> EXT4-fs 警告（设备 sda2）：写入 inode 时发生 I/O 错误 ...

当配置数据被重写时 - 例如，当桥接器更新其电源管理或 UAS 设置时 - 设备在写入过程中断电，校验和可能变得无效。下一次启动检测到损坏的校验和，并永久回退到 ROM 固件。

此时，您的“高性能 NVMe 外壳”表现得就像最便宜的无名外壳，因为它内部现在运行的是刻录在硅片中的相同缺陷基础代码。

## 验证问题

您可以在 Linux 下轻松确认此状态：

> lsusb -v | grep -A2 Realtek

健康的 Realtek 桥接器报告固件版本（**bcdDevice**）高于 1.00。回退的桥接器显示：

> bcdDevice           f0.01

此 **f0.01** 签名表示控制器从 ROM 启动 - 任何断开连接、重新格式化或内核调整都无法修复。

此回退机制已在 **RTL9210 上确认**。**RTL9220** 似乎共享相同的设计架构和固件布局，因此可能表现出相同的行为，但这仍 **可能是而非已证实**。

## 为什么您无法自行修复

原则上，解决方案很简单：将正确的固件重新刷写到 SPI 上。实际上，Realtek 使其不可能。

该公司向 OEM 和集成商提供闭源 Windows 更新器。Linux 用户未被提供任何内容。社区开发者对兼容的闪存工具（**rtsupdater**、**rtl9210fw**、**rtsupdater-cli**）进行了逆向工程，这些工具允许从 Linux 系统完全恢复固件 - 直到 Realtek 发出 **DMCA 删除通知** 以压制它们。

阻止此类工具没有任何合理的知识产权理由：它们不暴露微代码，仅通过 USB 协调更新序列。Realtek 的删除不是为了保护。而是意识形态。

## 意识形态的代价

这不是关于开源理想主义。这是关于 **硬件供应商对开放系统的意识形态敌意**，破坏了作为 *Linux 兼容* 营销的设备。

Realtek 对文档和开放工具的抵制已持续二十年，涵盖 Wi-Fi、以太网、音频，现在是存储控制器。这种孤立在仅 Windows 的世界中可能不被注意，但当相同芯片被集成到 **Sabrent EC-SNVE** 等多平台产品中时，它变得有毒，该产品在其包装上公开展示 Linux 标志。

通过禁止 Linux 闪存工具并阻止社区维护，Realtek 有效地 **将自我修复定为犯罪**。后果向外扩散：

* Linux 用户看到“受支持”的硬件退化为不稳定。
* Sabrent 和 Orico 等 OEM 面临不必要的 RMA 和保修成本。
* Realtek 长期以来对 Linux 兼容性差的声誉再次得到加强。

最终，破坏 Realtek 设备的不是开源 - 而是 **Realtek 对开源的敌意** 破坏了它们。

## 前进的理性路径

解决方案不需要意识形态转变，只需务实。Realtek 可以：

1. 为 Linux 发布由供应商签名的命令行更新器（无需公开源代码）。
2. 发布校验和算法，以便集成商可以安全验证闪存映像。
3. 采用类似 DFU 的模式，通过 USB 大容量存储接受更新，独立于操作系统。

这些步骤中的每一个都将防止保修成本，保护 OEM 关系，并恢复专业 Linux 用户 - 从工作站构建者到 Raspberry Pi 开发者 - 对 Realtek 桥接芯片的信任。

## 您可以做什么

如果您怀疑您的外壳已回退到 ROM 固件：

* 使用 **lsusb -v | grep bcdDevice** 检查。
* 如果显示 **f0.01**，向您的 OEM 报告问题。
* 包含 **dmesg** 的片段，并指出此记录的回退机制。
* 要求您的供应商将问题上报给 Realtek，引用需要与 Linux 兼容的更新器。

Realtek 的固件政策不仅困扰爱好者；它为其自己的生态系统造成切实的经济损失。公司内部越早承认这一现实，Linux 用户和 OEM 合作伙伴就越早能停止在可避免的 RMA 循环中浪费时间。

## 制造商的回应

Realtek 和 Sabrent 均被邀请就上述固件回退问题发表声明。他们的回应 - 如果收到 - 将在此添加。

## 附录 - 识别受影响的设备

| 控制器     | 供应商 ID | 产品 ID | 备注                             | 状态                             |
|------------|-----------|---------|----------------------------------|-----------------------------------|
| RTL9210    | 0x0bda    | 0x9210  | USB 3.1 Gen 2 10 Gb/s 桥接      | **已确认** 回退行为              |
| RTL9220    | 0x0bda    | 0x9220  | USB 3.2 Gen 2×2 20 Gb/s 桥接    | **可能**，相似架构               |

固件回退签名：**bcdDevice f0.01**  
已知稳定版本：**1.23** – **1.31**
