コンピューターを他の機器の仮想USBデバイスとして機能させる


18

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

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

その*.vdiため、コンピューターに仮想ハードディスク(ファイルなど)を用意し、USBソケットを介してUSBドライブとして他の機器(携帯電話やラップトップなど)に接続します。

回答:


12

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などのマイクロコントローラーで行うことができます)、そして、それを実行するドライバーを作成します。


2
素晴らしい説明です。あなたの文章に関して「誰かが専用のアダプターを使って出てくるまで...」という何か新しいことを知っているなら、答えを更新してください。2018年にusb-cを搭載したラップトップがありますが、解決策になりますか?
アサインクジョビッチ

8

USBは非対称です。一方はホストで、もう一方は周辺機器です。周辺機器をホストとして機能させたり、その逆を行うことはできません。USBポートがどちらかの側として機能することは可能です。これは外出先でUSBと呼ばれ、一部の携帯電話やタブレットに搭載されています。ポートは物理的にデバイスタイプのポートであり、ホストタイプのポートではありません。デバイスポートを備えたPCを見たことはありません。これには、コントローラーに電子機器が必要です。両端に適合するケーブルを作成するだけでは不十分です。

そのため、PCをUSBデバイスにすることはできません。

コンピューターをUSBストレージデバイスとして使用する場合は、PCを使用する代わりに、USB接続の携帯電話またはタブレットを使用できます。


携帯電話を使用して、PCをUSBストレージデバイス/ホストに変換し、別のコンピューター、テレビ、またはデバイスに接続できるようにするにはどうすればよいでしょうか。USB OTGについてはかなりの知識があるとは思いますが、この点を見逃しています。
trejder

@trejder私が書いたように、デバイスポートを備えたPC(x86タブレットを除く「PC」)は見たことがありません。
ジル 'SO-悪であるのをやめる'

はい。ただし、最後の文を参照しています。「コンピューターをUSBストレージデバイスにしたい場合は、USB接続で携帯電話またはタブレットを使用できます。」何かが足りないかもしれませんが、「携帯電話やタブレットを使用してコンピューターをUSBストレージデバイスに変えることができる」と理解しています。もしそうなら、質問は次のとおりです。
trejder

1
@trejderあ、その文の「コンピューター」は「PC」ではなく、「コンピューター」です。電話/タブレットは、PCとは異なる種類のコンピューターです。それがあなたを悩ませていることですか?
ジル 'SO-悪であるのをやめる'

1
@trejderいいえ。通常、最善の方法は、何らかの方法でネットワーク接続を確立することです。Firewireポートを備えた2台のPC間のネットワーク接続としてFirewireを使用できますが、多くのPCにはFirewireポートがありません。ほとんどのPCにはイーサネットポートがあり、2台のPCをイーサネットケーブルで接続できます(非常に古いPCにはクロスケーブルが必要ですが、最新のPCには通常のケーブルを使用できます)。PCをモバイルデバイスのストレージデバイスとして機能させるには、通常、何らかの方法でPCをwifiに接続する必要があります。
ジル 'SO-悪であるのをやめる'

2

「USBネットワークケーブル」とも呼ばれる特別な「USB-USBブリッジケーブル」の使用を検討できます。これらの記事で言及されているもののように:

2つのPC間でファイルを転送できます。私はこの種のケーブルを10年以上前(Windows XPの時代)に使用してきましたが、その間に市場で入手可能なすべてのケーブルには特別なドライバーとソフトウェアが必要でした。インストールディスク上のケーブルドライバーと一緒に出荷される特別なファイルコマンダーを介してのみファイルを転送できるため、あるPCが別のPCを純粋なUSB外部デバイスとして動作させることはできません。

それから何かが変わったのか、そして新しいソリューションが特別なソフトウェアを使用してのみファイルを転送することを許可するのか、そしてあるPCを別のPCの外部デバイスとして機能させることができるのかどうかはわかりません。


2

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大容量ストレージデバイスのように見せることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.