有些应用程序模拟虚拟USB或CD Rom驱动器,就好像USB驱动器连接到计算机上一样。
是否有任何配置或应用程序提供虚拟USB驱动器,不是为操作系统本身,而是为其他设备接受USB驱动器,通过USB端口。
因此,我将在计算机中有一个虚拟硬盘(例如*.vdi文件),它通过USB连接,作为USB驱动器连接到其他设备(例如,手机或笔记本电脑)。
发布于 2016-05-14 14:54:19
编辑:虽然这个答案当时是正确的(除了一些罕见的例外),但从那时起有了更多的发展。例如,我们现在有了USB,它支持设备和主机模式.许多设备--特别是SBCs --都带有USB和控制器,可以在这两种模式下运行。主要的问题仍然是在Windows端,那里缺少任何带有操作系统的USB设备驱动程序。然而,Linux确实包括USB设备模式驱动程序(也称为"USB“驱动程序--尽管您可能需要编译自定义内核,如果它们没有包含在您的发行版中的话)。
您需要将USB设备/外围控制器添加到计算机中,而不是它们通常附带的USB主机控制器。
就像这样:https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
不幸的是,你得想办法把它连接到你的主板上。从技术上讲,这是可以做到的。实际上,你必须重新设计主板来包括它。您可能会很幸运地找到一个SPI或I2C总线暴露在您的主板上,让您可以添加它,但它们通常是直接连接到任何他们正在使用的用途,除非您使用的开发板或单板计算机,暴露的GPIO和其他端口,如树莓Pi。
另一种选择是USB在轨控制器.为嵌入式和便携式设备设计的主板往往有一个USB (进行中) contoller,它可以作为主机或设备控制器。例如,前面提到的Raspberry Pi有一个启动控制器,但在所有型号上,除了port,它被重新连接到主机端口或车载USB集线器上,拒绝使用USB设备功能。BeagleBone黑有一个OTG端口。
不过,这并不是全部-一旦你有了硬件,你也需要软件。Linux有一些有用的内核USB小工具驱动程序("USB小工具“是USB外设/设备的另一个术语),例如G_串行和g_ethernet,它们允许您将设备插入另一台计算机,并将其作为串行设备或以太网上的USB设备(还有其他用于将设备公开为大容量存储的设备,它允许您将文件作为块设备使用,并将计算机公开为海量存储设备)。默认情况下,BeagleBone Black会启用这种功能,因此您可以通过USB将其插入PC机,并将其视为联网设备--我相信它也是通过使用复合驱动程序(它允许在单个连接上显示多个USB设备类型)作为大容量存储设备出现的。Pi零可以使用以下这些,但在默认情况下并不是这样。对于Windows或其他OSes,您可能需要自己编写设备驱动程序。
所以,理论上,你可以做到。您可以拆卸您的桌面PC,尝试在主板上找到一条未使用的兼容总线(很可能是控制器IC上一些未使用的引脚),或者是一种扩展内部I2C或SPI总线的方法,或者是您可以拔出和替换的东西,然后将一个USB或设备控制器芯片焊接到它上。然后,您可以安装Linux并使用小工具驱动程序,或者为另一个操作系统编写自己的驱动程序。实际上,除非你是一名一流的电子工程师,否则你将无法做到这一点。至少,直到有人拿出那个难以捉摸的适配器,上面有一个设备或OTG端口,插入USB端口(理论上说,这可以用连接到一对USB设备控制器it的Arduino这样的微控制器来完成),并编写驱动程序来运行它。
发布于 2014-03-20 01:47:01
USB是不对称的:一边是主机,另一边是外围设备。不能让外围设备充当主机,反之亦然。USB端口可以充当任何一方;这被称为USB启动,并存在于一些移动电话和平板电脑中。这些端口是物理设备类型的端口,而不是主机类型的端口.我从没见过有设备端口的个人电脑。这需要控制器上的电子设备,这还不足以制造一条两端都适合的电缆。
所以,不,你将无法使个人电脑成为一个USB设备。
如果您想使用计算机作为USB存储设备,您可以使用带有USB连接的移动电话或平板电脑,而不是使用PC。
发布于 2017-10-31 00:08:41
正如在马特·汤姆森(马特·汤姆森)回答中所解释的,除了一些USB控制器之外,不可能使PC计算机的物理USB端口充当USB从设备,因为USB从控制器部件丢失了。
但是我们可以使用适配器板向外界提供从模式USB .这方面的最简单和最小的选择可能是Raspberry Pi零。
现在剩下的任务是将RPi零适配器板连接到我们的主机PC上,最终应该存储和服务我们的文件。关于如何通过以太网电缆提供连接,我有两个不同的建议:
使用软件将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主机模式,(3)通过服务来自指定位置的数据( .vdi文件)来模拟USB大容量存储设备。
总的来说,这是一种相当复杂的方法。
对于如何在Raspberry Pi Zero和您的主机PC之间建立以太网连接,这是一种简单得多的方法:在Raspberry Pi Zero上,通过网络文件系统将存储在PC上的数据挂载到计算机上。然后,这些文件在逻辑上显示为RPi零的文件系统的一部分,然后您可以使用Linux小工具驱动程序(“从模式”USB驱动程序)来服务它们,从而使Raspberry看起来像连接到的设备上的USB海量存储设备。
https://unix.stackexchange.com/questions/120368
复制相似问题