コンピュータが他のデバイスの仮想USBデバイスとして機能することを許可する

コンピュータが他のデバイスの仮想USBデバイスとして機能することを許可する

一部のアプリケーションは、USBドライブがコンピュータに接続されているかのように、仮想USBまたはCD ROMドライブをエミュレートします。

オペレーティングシステム自体ではなく、USBポートを介してUSBドライブを許可する他のデバイスに仮想USBドライブを提供する構成またはアプリケーションはありますか?

*.vdiしたがって、USBソケットを介してUSBドライブに別のデバイス(電話やラップトップなど)に接続されている仮想ハードドライブ(ファイルなど)がコンピュータに接続されます。

ベストアンサー1

編集:この回答は当時正確でしたが(いくつかの例外を除いて)、それ以来より多くの開発が行われました。たとえば、デバイスモードとホストモードをサポートするUSB​​-Cがあります。多くのデバイス、特にSBCには、両方のモードで動作できるUSB-Cとコントローラが付属しています。主な問題は、まだオペレーティングシステムにUSB-CデバイスモードドライバがないWindows PC側にあります。しかし、LinuxはするUSB-Cデバイスモードドライバ(別名「USB Gadget」ドライバ - ディストリビューションにまだ含まれていない場合は、カスタムカーネルをコンパイルする必要があるかもしれません)を含みます。

通常、付属のUSBホストコントローラではなくUSBデバイス/周辺機器コントローラをコンピュータに追加する必要があります。

このような:https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

残念ながら、マザーボードに接続する方法を見つける必要があります。技術的にはこれが可能です。実際にそれを含めるには、マザーボードを再設計する必要があります。幸いなことに、マザーボードのどこかに公開されているSPIまたはI2Cバスを見つけて追加できますが、通常は開発ボード、公開されたGPIO、およびシングルボードを使用しない限り、使用されるすべての場所に直接接続されます。別のポートをオンボードコンピュータ(Raspberry Piなど)に接続します。

別のオプションはUSBポータブルコントローラです。内蔵およびポータブルデバイス用に設計されたマザーボードには、ホストまたはデバイスコントローラとして機能できるUSB OTG(携帯用)コントローラがあることがよくあります。たとえば、前述のRaspberry PiにはOn-the-Goコントローラがありますが、Pi Zeroを除くすべてのモデルではホストポートまたはオンボードUSBハブに再接続してUSBデバイスの機能を拒否します。 BeagleBone BlackにはOTGポートがあります。

しかし、それはすべてではありません。ハードウェアがあれば、ソフトウェアも必要です。 Linuxにはいくつかの便利なカーネルUSBガジェットドライバがあります(「USBガジェット」はUSB周辺機器/デバイスを指す別の用語です)。g_serialデバイスを別のコンピュータに接続し、シリアルまたはイーサネットUSBデバイスとして表示できるようにするg_ethernet(ファイルをブロックデバイスとして使用し、デバイスを大容量ストレージとして表示できる他のデバイスもあります)コンピュータを大容量ストレージデバイスとして使用)。 BeagleBone Blackはデフォルトでこの機能を有効にする傾向があるため、USB経由でPCに接続するだけでネットワーキングデバイスとして表示されます。また、複合ドライバを使用すると、大容量記憶装置として表示される可能性があると思います。複数のUSBデバイスタイプで表示される単一の接続を介して大容量ストレージデバイスとして表示されます。 Pi Zeroは次のものを使用できます。しかし、基本的にはそうではありません。 Windows またはその他のオペレーティングシステムの場合は、デバイスドライバを直接作成する必要があります。

理論的にはそうすることができます。デスクトップコンピュータを分解し、マザーボードのどこかで使用されていない互換バスを見つけたり(ほとんどのコントローラICで使用されていないピンである可能性が高い)、内部I2CまたはSPIバスを拡張する方法を見つけることができます。 USB OTGまたはデバイスコントローラチップに何かを取り付けてはんだ付けします。その後、Linuxをインストールし、ガジェットドライバを使用するか、他のオペレーティングシステム用のドライバを直接作成できます。現実的には、あなたが最高の電子エンジニアでなければこれを行うことはできません。少なくとも誰かがUSBポートに接続されているデバイスまたはOTGポートを持つ難しいアダプタが出るまで(理論的には、一対のUSBデバイスコントローラICに接続されているArduinoなどのマイクロコントローラで実行できます)、それを実行するドライバ。

おすすめ記事