Answers:
您需要向计算机添加USB设备/外设控制器,而不是它们往往随附的USB主机控制器。
像这样的东西:https : //www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
不幸的是,您必须找到一种将其连接到主板上的方法。从技术上讲,可以做到。实际上,您必须重新设计主板以使其包含在内。您可能很幸运,可以在主板上的某个地方找到一条SPI或I2C总线以允许您添加它,但是通常除非您使用开发板或单板总线,否则它们通常直接连接到所用的任何东西。裸露GPIO和其他端口(例如Raspberry Pi)的台式计算机。
另一个选择是USB On-the-Go控制器。专为嵌入式和便携式设备设计的主板往往具有USB OTG(移动)控制器,可以用作主机或设备控制器。例如,上述的Raspberry Pi具有一个On-the-Go控制器,但在所有型号上,除了Pi Zero外,Pi Zero重新连接到主机端口或板载USB集线器均拒绝使用USB设备功能。BeagleBone Black具有OTG端口。
但这还不是全部-一旦有了硬件,就还需要软件。Linux有一些有用的内核USB小工具驱动程序(“ USB小工具”是USB外围设备/设备的另一个术语),例如g_serial和g_ethernet,它们使您可以将设备插入另一台计算机,并可以作为串行或USB上的USB设备使用(还有其他将设备公开为大容量存储的工具,这些文件允许您将文件用作块设备,并将计算机公开为大容量存储的工具)。BeagleBone Black倾向于默认情况下启用此功能,因此您可以简单地通过USB将其插入PC并将其视为网络设备-我相信通过使用复合驱动程序,它也可以作为大容量存储设备显示(通过单个连接显示为多种USB设备类型。 Pi Zero可以使用这些,但默认情况下不使用。对于Windows或其他操作系统,您可能必须自己编写该设备驱动程序。
因此,从理论上讲,您可以做到。您可以拆除台式机,尝试在某处的主板上找到未使用的兼容总线(很可能是控制器IC上一些未使用的引脚),或者扩展内部I2C或SPI总线的方法,或者可以拆除一些更换并焊接USB OTG或设备控制器芯片。然后,您可以安装Linux并使用小工具驱动程序,或者为其他操作系统编写自己的驱动程序。实际上,除非您是顶尖的电子工程师,否则您将无法做到这一点。至少,直到有人拿出带有连接到USB端口的设备或OTG端口的难以捉摸的适配器(理论上,这可以通过将Arduino等微控制器连接到一对USB设备控制器IC来完成),并编写驱动程序以运行它。
USB是不对称的:一侧是主机,另一侧是外围设备。您不能使外围设备充当主机,反之亦然。USB端口可以充当任一侧;这被称为USB on-the-go,并且存在于某些手机和平板电脑中。这些端口实际上是设备类型的端口,而不是主机类型的端口。我从未见过具有设备端口的PC。这需要控制器上的电子设备,仅制造一条两端都没有的电缆是不够的。
所以不,您将无法将PC制成USB设备。
如果要将计算机用作USB存储设备,则可以使用具有USB连接的手机或平板电脑来代替PC。
您可以考虑使用特殊的“ USB-USB桥接电缆”之一,有时也称为“ USB网络电缆”。就像这些文章中提到的那样:
它们使您可以在两台PC之间传输文件。十多年前(在Windows XP时代),我一直在使用这类电缆,在那时,市场上所有可用的此类电缆都需要特殊的驱动程序和软件。它们使您只能通过特殊的文件命令程序传输文件,该命令文件与电缆驱动程序一起安装在安装磁盘上,因此不允许一台PC作为纯USB外部设备作用于另一台PC。
我不确定此后是否发生了任何变化,以及新解决方案是否仅允许您使用特殊软件来传输文件,以及-是否可以强制将一台PC用作另一台计算机的外部设备,我不确定。
正如Matt Thomson在答复中所解释的那样,由于缺少USB从控制器,因此无法正确地使PC计算机的物理USB端口充当USB从设备。
这意味着,如果我们有一个可以提供从属模式USB的适配器板(例如Raspberry Pi Zero),则必须通过另一个通道(例如有线以太网)将其连接到您的主机PC。我有两个不同的建议,您可以在该以太网连接上运行哪种协议:
(1)通过IP网络暴露USB端口。
使用软件将Raspberry Pi Zero的USB从模式端口作为虚拟USB设备公开到您的PC。该USB / IP项目提供了这一点,通过可以在IP网络上传输的USB驱动程序的手段。这是一个使用USB / IP向计算机提供模拟USB设备的示例,此处将是您的PC。
在这个提议的解决方案中,我不知道的是,USB / IP软件是否已经能够通过IP网络公开USB从端口,或仅公开USB主机端口。
但是,即使可行,您仍然必须在PC上设置或调整设备驱动程序,使它们(1)接受传入的USB / IP连接作为USB连接,(2)提供USB从属模式而不是USB USB主机模式(3)通过为指定位置(您的.vdi
文件)中的数据提供服务来模拟USB大容量存储设备。
总体而言,这是一种复杂的操作方式。
(2)通过IP网络公开文件。
这是使用Raspberry Pi Zero的以太网连接的一种简单得多的方法:在Raspberry Pi Zero上,通过网络文件系统挂载存储在PC上的数据。这些文件然后在逻辑上显示为Pi Zero的文件系统的一部分,您可以将它们与Linux USB小工具驱动程序一起使用,以使Raspberry Pi在连接的设备上看起来像是USB大容量存储设备。