回答:
USBデバイス/周辺機器コントローラーをコンピューターに追加する必要がありますが、USBホストコントローラーは付属している傾向があります。
このようなもの:https : //www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
残念ながら、マザーボードに配線する方法を見つける必要があります。技術的には、それを行うことができます。実際には、マザーボードを組み込むためにマザーボードを再設計する必要があります。マザーボードのどこかにSPIまたはI2Cバスがあり、それを追加できるようになっているのは幸運かもしれませんが、開発ボードまたはシングルボードを使用している場合を除き、通常は使用されているものに直接配線されています露出したGPIOおよびRaspberry Piなどの他のポートを備えたボードコンピューター。
もう1つのオプションは、USB On-the-Goコントローラーです。組み込みおよびポータブルデバイス用に設計されたマザーボードには、ホストまたはデバイスコントローラーとして機能するUSB OTG(オンザゴー)コントローラーが搭載されている傾向があります。たとえば、前述のRaspberry PiにはOn-the-Goコントローラーがありますが、ホストポートまたはUSBデバイス機能の使用を拒否するオンボードUSBハブに再配線されるPi Zeroを除くすべてのモデルにあります。BeagleBone BlackにはOTGポートがあります。
それだけではありません-ハードウェアを入手したら、ソフトウェアも必要になります。Linuxには、g_serialやg_ethernet などの便利なカーネルUSBガジェットドライバー(「USBガジェット」はUSB周辺機器/デバイスの別名)があり、デバイスを別のコンピューターに接続して、シリアルまたはイーサネットover USBデバイスとして表示できます。 (デバイスを大容量記憶装置として公開する他の方法があります。これにより、ファイルをブロックデバイスとして使用し、コンピューターを大容量記憶装置として公開できます)。BeagleBone Blackはデフォルトでこれが有効になっている傾向があるため、USB経由でPCに接続するだけでネットワークデバイスとして表示できます。また、複合ドライバー(これにより、単一の接続では複数のUSBデバイスタイプとして表示されます。 Pi Zeroはこれらを使用できますが、デフォルトでは使用しません。Windowsまたは他のOSの場合、おそらくそのデバイスドライバーを自分で記述する必要があります。
そのため、理論的にはそれを行うことができます。デスクトップPCを分解し、マザーボード上の未使用の互換性のあるバス(コントローラーICの未使用のピンの可能性が高い)を見つけるか、内部I2CまたはSPIバスを拡張する方法、または分解することができます。交換して、USB OTGまたはデバイスコントローラーチップをはんだ付けします。次に、Linuxをインストールしてガジェットドライバーを使用するか、別のOS用に独自のドライバーを作成します。実際には、あなたが一流の電子技術者でない限り、あなたはそれをすることができないでしょう。少なくとも、誰かがUSBポートに差し込むデバイスまたはOTGポートを備えたとらえどころのないアダプターを手に入れるまでは(理論的には、USBデバイスコントローラーICのペアに配線されたArduinoなどのマイクロコントローラーで行うことができます)、そして、それを実行するドライバーを作成します。
USBは非対称です。一方はホストで、もう一方は周辺機器です。周辺機器をホストとして機能させたり、その逆を行うことはできません。USBポートがどちらかの側として機能することは可能です。これは外出先でUSBと呼ばれ、一部の携帯電話やタブレットに搭載されています。ポートは物理的にデバイスタイプのポートであり、ホストタイプのポートではありません。デバイスポートを備えたPCを見たことはありません。これには、コントローラーに電子機器が必要です。両端に適合するケーブルを作成するだけでは不十分です。
そのため、PCをUSBデバイスにすることはできません。
コンピューターをUSBストレージデバイスとして使用する場合は、PCを使用する代わりに、USB接続の携帯電話またはタブレットを使用できます。
「USBネットワークケーブル」とも呼ばれる特別な「USB-USBブリッジケーブル」の使用を検討できます。これらの記事で言及されているもののように:
2つのPC間でファイルを転送できます。私はこの種のケーブルを10年以上前(Windows XPの時代)に使用してきましたが、その間に市場で入手可能なすべてのケーブルには特別なドライバーとソフトウェアが必要でした。インストールディスク上のケーブルドライバーと一緒に出荷される特別なファイルコマンダーを介してのみファイルを転送できるため、あるPCが別のPCを純粋なUSB外部デバイスとして動作させることはできません。
それから何かが変わったのか、そして新しいソリューションが特別なソフトウェアを使用してのみファイルを転送することを許可するのか、そしてあるPCを別のPCの外部デバイスとして機能させることができるのかどうかはわかりません。
Matt Thomsonの回答で説明されているように、USBスレーブコントローラーが欠落しているため、PCコンピューターの物理USBポートをUSBスレーブデバイスとして機能させることは適切にできません。
つまり、スレーブモードUSB(Raspberry Pi Zeroなど)を提供できるアダプターボードがある場合、有線イーサネットなどの別のチャネルでホストPCに接続する必要があります。そのイーサネット接続で実行できるプロトコルは2つあります。
(1)IPネットワーク経由でUSBポートを公開します。
ソフトウェアを使用して、Raspberry Pi ZeroのUSBスレーブモードポートを仮想USBデバイスとしてPCに公開します。USB / IPのプロジェクトは、IPネットワーク経由でUSBを輸送することができるドライバによって、これを提供します。ここでは、ここであなたのPCになります-コンピュータにシミュレートされたUSBデバイスを提供するために、USB / IPを使用した例があります。
この提案されたソリューションで私が知らないことは、USB / IPソフトウェアがすでにIPネットワーク経由でUSBスレーブポートを公開できるか、通常どおりUSBホストポートのみを公開できるかということです。
ただし、それが機能する場合でも、(1)着信USB / IP接続をUSB接続として受け入れるように、(2)ではなくUSBスレーブモードを提供するように、PCのデバイスドライバーをセットアップまたは調整する必要がありますUSBホストモード、(3)割り当てられた場所(.vdi
ファイル)からデータを提供することにより、USB大容量ストレージデバイスをシミュレートします。
全体として、それはそれを行う複雑な方法です。
(2)IPネットワーク経由でファイルを公開します。
これは、Raspberry Pi Zeroへのイーサネット接続を利用するためのはるかに簡単な方法です。RaspberryPi Zeroでは、PCに保存されているデータをネットワークファイルシステム経由でマウントします。これらのファイルは、Pi Zeroのファイルシステムの一部として論理的に表示されます。LinuxUSBガジェットドライバーを使用して、Raspberry Piを接続されたデバイスからUSB大容量ストレージデバイスのように見せることができます。