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