三星PM9A1 通过RTL9210B NVMe转USB

这是一个曲折的过程,我不确定能否解决,逐步记录

我在 边缘云计算架构 采用 Raspberry Pi Atlas 组件集群,想采用我之前购买的 三星PM9A1 NVMe存储 来作为USB外接存储,以解决默认TF卡读写缓慢问题,同时扩大存储空间。

我在淘宝上搜索找到了 JEYI佳翼领航员M.2移动硬盘盒U盘直插式

  • 无需外接USB线,看起来比较整齐和美观 (之前我使用过西部数据的SSD移动硬盘,但是通过USB软连接线连接总觉得不美观)

  • 支持NVMe和SATA双协议

主控芯片是RTL9210B

RTL9210B兼容性问题

我遇到一个异常问题,当 三星PM9A1 NVMe存储 安装到 佳翼M.2硬盘盒 中,插入到电脑上,没有任何反应。虽然U盘的电源指示灯是亮起(绿色),但是操作系统日志没有显示检测到任何USB设备。同时使用 fdisk -l 也看不到新增磁盘。

这个问题可能是 三星PM9A1 兼容问题:

  • 我替换测试了其他 三星PM9A1 ,也都无法检测到USB磁盘,就好像设备根本不存在一样

  • 但是使用了古旧的 三星PM871A (SATA接口,非NVMe)是能够识别和正常使用的

SMART

Nvme to usb using Realtek RTL9210B and SMART status issue 提到了 Realtek RTL9210B 的NVMe存储SMART支持问题,其中一些检测命令可以借鉴使用

  • SMART检测:

检测SMART
smartctl -d test /dev/sda

输出显示

检测SMART输出信息
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.21-gentoo-dist] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

/dev/sda [USB NVMe Realtek]: Device of type 'sntrealtek' [NVMe] detected
/dev/sda [USB NVMe Realtek]: Device of type 'sntrealtek' [NVMe] opened
  • 然后尝试检测SMART,发现报错,显示不支持SCSI指令

检查sntrealtek
smartctl -H -d sntrealtek /dev/sda

输出报错

检查sntrealtek报错
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.6.21-gentoo-dist] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

Read NVMe Identify Controller failed: scsi error unsupported field in scsi command

RTL9210B-CG 资料分析

根据 REALTEK官网资料: RTL9210B-CG 可以看到:

  • Realtek RTL9210B-CG 是USB桥接器,将USB设备与PCIe控制器和SATA控制器相结合

  • 通过M.2机械的PEDET接口,RTL9210B-CG可以自动切换USB-to-PCIe模式或USB-to-SATA模式

  • RTL9210B-CG 支持 USB 3.1 GEN2(超高速),兼容 USB 3.1 GEN1(超高速)、USB 高速和全速

  • 海量存储事务支持仅批量传输 (BOT) 和 USB 连接 SCSI 协议 (UASP)

  • 对于USB,提供高达10Gbps 的带宽

  • USB 转 PCIe 模式下,RTL9210B-CG 支持 PCIe Gen3 x2 提供高达 16Gbps 的带宽 ; 向后兼容 PCIe Gen2/Gen1

  • 为了进一步降低功耗,RTL9210B-CG 支持链路电源管理(PCIe L1.Off 和 L1.Snooze)、PCI MSI(消息信号中断)和 MSI-X

  • USB 转 SATA 模式下,RTL9210B-CG 支持 Gen3 速度的 SATA 主机 ; 6Gbps 的带宽,向后兼容 SATA Gen2/Gen1

备注

由于官方资料仅显示 RTL9210B-CG 支持 PCIe 3 ,而 三星 PM9A1 是一款 PCIe 4接口 NMVe ,所以推测可能存在不兼容问题

参考