我有一个用例,我想要一个虚拟硬盘(特别是在 freeNAS 安装上)充当外部设备(例如电话或视频游戏控制台)的 USB 大容量存储外围设备。我的想法是取消设置中的所有 USB 存储设备,转而将它们虚拟化为我的 NAS 的一部分,让它们成为我常规备份例程中轻松的一部分。
我意识到 USB 不是对称设置,因此我的 NAS 上需要一个从属端口。我还意识到这是在实际 USB 控制器卡上完成的操作,因此没有真正的方法可以仅“使用”USB 端口作为从属端口。
我的问题是,是否有任何类型的模拟或转换方法,通过硬件、软件或其某种组合来实现此功能?如果我能让从属端口工作,我似乎可以在大容量存储模式下使用 linux usb-gadget api。然而,我似乎找不到任何类型的支持 USB 从属或 USB-OTG 的扩展卡,而且我知道没有其他硬件解决方案可以在此设置中使用。
有人有任何指点吗?
编辑:这样的设备可以工作吗?
答案1
查看“大容量存储小工具”文档。这可能是一个起点: https://www.kernel.org/doc/html/latest/usb/mass-storage.html
对于托管虚拟 USB 设备的计算机中的硬件,您不需要任何太过特别的东西。我也在研究这个问题,似乎市场上的大多数 USB-C 控制器都能够进入 USB 设备(而不是主机)模式。带有 USB-C 端口的 Apple 计算机具有支持“目标磁盘模式”的正确芯片。“黑苹果”(运行 macOS 的非 Apple 计算机)人群证明了这种芯片很常见。黑苹果无法进入目标磁盘模式,因为此功能不是操作系统的一部分,Apple 将此功能放入固件中,因为这允许计算机进入此模式来修复无法启动的计算机。
我在这里没有太多要补充的。到目前为止,我所知道的是,有一个名为“USB gadget”的项目正在开发 Linux 计算机充当虚拟 USB 设备的功能,并且我知道实现这项工作所需的硬件相当普遍,现在越来越多更多笔记本电脑使用 USB-C 作为电源输入端口。要使 USB 供电正常工作,必须有一个提供电源的“主机”和一个接收电源的“设备”。每个 USB-PD 电源块都是一个 USB 主机,它将协商向任何连接的设备(例如使用 USB-C 作为电源输入端口的笔记本电脑)的电力传输。
答案2
如果可以选择基于 Linux 的操作系统,也许您可以看看带有 USB 前端的 LIO:
“USB Gadget Fabric 模块使 Linux 能够通过通用串行总线 (USB) 导出本地存储设备,以便其他系统可以将它们作为普通存储设备挂载。”(https://en.wikipedia.org/wiki/LIO_(SCSI_target))
我现在不能告诉你的是:
- 需要哪种布线:请不要进行简单的一对一连接,因为这可能会毁掉您的机器!
- 如何针对特定 USB 端口进行配置
当我有更多时间时,我会做进一步的研究!
编辑:我尝试过但失败了。听起来比实际容易得多。也许其他人有更多相关信息?