讓電腦充當其他設備的虛擬 USB 設備
某些應用程序模擬虛擬 USB 或 CD ROM 驅動器,就好像 USB 驅動器連接到電腦一樣。
是否有任何配置或應用程序提供虛擬 USB 驅動器,不是為作業系統本身,而是通過 USB 埠為接受 USB 驅動器的其他設備提供。
因此,我將在電腦中安裝一個虛擬硬碟(例如
*.vdi
文件),通過 USB 插座將其作為 USB 驅動器連接到其他設備(例如手機或筆記型電腦)。
編輯:雖然這個答案在當時是正確的(有一些罕見的例外),但從那以後有了更多的發展。例如,我們現在有了支持設備和主機模式的 USB-C。許多設備(尤其是 SBC)都帶有 USB-C 和可以在兩種模式下執行的控制器。主要問題仍然主要出現在 Windows PC 端,作業系統缺少任何 USB-C 設備模式驅動程序。然而,Linux確實包含 USB-C 設備模式驅動程序(也稱為“USB Gadget”驅動程序 - 儘管如果您的發行版中沒有包含自定義核心,您可能需要編譯它們。)
您需要將 USB 設備/外圍控制器添加到電腦,而不是他們傾向於附帶的 USB 主機控制器。
像這樣的東西:https ://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
不幸的是,你必須想辦法把它連接到你的主機板上。從技術上講,這是可以做到的。實際上,您必須重新設計主機板以包含它。您可能很幸運地在主機板上的某個地方發現了一個 SPI 或 I2C 匯流排,以便您添加它,但它們通常直接連接到它們正在使用的任何東西上,除非您使用的是開發板或單-帶有外露 GPIO 和其他埠(如 Raspberry Pi)的板機。
另一種選擇是 USB On-the-Go 控制器。為嵌入式和攜帶式設備設計的主機板往往具有 USB OTG(On-the-go)控制器,可用作主機或設備控制器。例如,前面提到的 Raspberry Pi 有一個 On-the-Go 控制器,但在除 Pi Zero 之外的所有型號上都重新連接到主機埠或板載 USB 集線器,拒絕使用 USB 設備功能。BeagleBone Black 有一個 OTG 埠。
但這還不是全部——一旦你有了硬體,你還需要軟體。Linux 有一些有用的核心 USB 小工具驅動程序(“USB 小工具”是 USB 外圍設備/設備的另一個術語),例如g_serial和 g_ethernet,它們允許您將設備插入另一台電腦並作為串列或乙太網 USB 設備可見(還有其他將設備公開為大容量儲存,允許您將文件用作塊設備並將電腦公開為大容量儲存小工具)。BeagleBone Black 通常預設啟用此功能,因此您只需通過 USB 將其插入 PC 並將其視為聯網設備 - 我相信它也可以通過使用複合驅動程序(允許它通過單個連接顯示為多個 USB 設備類型。 Pi Zero 可以使用這些,但預設情況下不使用。對於 Windows 或其他作業系統,您可能必須自己編寫該設備驅動程序。
所以,理論上,你可以做到。你可以拆掉你的台式電腦,試著在主機板上的某個地方找到一條未使用的兼容匯流排(很可能是控制器 IC 上的一些未使用的引腳),或者一種擴展內部 I2C 或 SPI 匯流排的方法,或者你可以撕掉的東西更換並將 USB OTG 或設備控制器晶片焊接到其上。然後,您可以安裝 Linux 並使用小工具驅動程序,或者為其他作業系統編寫自己的驅動程序。實際上,除非您是一流的電子工程師,否則您將無法做到。至少,直到有人推出帶有設備或 OTG 埠的難以捉摸的適配器,該適配器可插入 USB 埠(理論上,這可以通過連接到一對 USB 設備控制器 IC 的 Arduino 等微控制器來完成),並編寫驅動程序來執行它。