web-dev-qa-db-ja.com

2つのLinux OS間のUSB-to-USBデータ転送は可能ですか?

Linux(できればUbuntu)でUSB-to-USBデータ転送システムを作成したい。このため、外部ハードウェアやスイッチは使用しません( このケーブルを除く )。これは、USBドライブをシステムにマウントするようなものですが、このシナリオでは、Linuxシステムの1つが他のシステムにマウントされます。どうすれば作成できますか?

カーネルプログラミングの私の経験は非常に基本的なものであるため、利用可能なカーネルモジュールはありますか?

26
the_Strider

はい、これは可能ですが、notは可能です。USB-Aコネクタを備えた2本のUSBケーブル(通常はマザーボードのUSBに接続されているもの)を切断し、データケーブルを相互接続することによって可能です。 このような自作ケーブルにUSB電源ラインを接続すると、オンボードのUSBハンドリングチップを揚げることになります。家でこれを試さないでください!

ほとんどのコンピュータボードでは、USBを処理するチップはホストのみです。それだけでなく、低レベルの通信の多くも処理して高速化し、CPUの負荷を軽減します。これは、USBポートのピンを処理して、非ホストのように動作するようにコンピューターをプログラムできるようなものではありません。チップレベルで、ホストとして動作することとホストに接続することを切り替えることができるデバイスは、はるかに高価なチップを必要とするため、少数です¹。これは、例えばなぜ私のスマートフォン、GPS、電子ブックなどのインテリジェントデバイスは、すべてLinuxまたは類似のものを実行していますが、通常のUSBケーブルで接続している場合、sshを使用して通信することができません。

これらのデバイスは、接続時に一部のダムモードになり、ホスト(デスクトップシステム)はストレージをUSBディスクとして使用できます。デバイスを切断した後、データにアクセスするためにホストと同じインターフェイスを使用します(ケーブル接続は必要ありませんが、これは内部で行われます)。 この種のデバイスでは、Linuxが両方で実行されている場合でも、システム間、つまりlinuxes間で通信は行われません。これは、デスクトップに接続する通常のマイクロまたはミニUSBケーブルとは独立しています。

2台のデスクトップPC間では、USB-AからUSB-Aへのケーブルが必要になるため、通常は上記のことを実行できません。これは一般的ではありません(接続を駆動している通常のチップでは機能しないためです)。

私が見た2つのUSB-Aコネクタを使用してUSB to USBを実行するソリューションはすべて、間に電子機器があるケーブルに基づいています。 (USB→SerialがSerial→USBケーブルに接続されているのと同じですが、すべてが1つになっています)。これらは通常、転送を行うためにドライバーを必要としますが、「通常の」シリアルポートを介する場合のように、そのようなケーブルを介してUUCPまたは他のものを使用できる場合があります。これにはおそらく、他のコンピューターにもログインするためのinetdと適切な構成が必要です。

¹ この方法でソフトウェアを変更できる唯一のデバイスは、まさにそのような特別なチップを備えたArduinoボードです。このチップだけで、ボードtwiceは通常のArduinoボードと同じくらい高価になりました。

24
Anthon

はい、USB 3.0は3.0ケーブルで全二重データ転送を可能にします。仕様はUSB仕様のセクション5.5.2にあります。これらの仕様へのリンクは、別の回答で以前に与えられています。 http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

ケーブルは見つけやすくなりました。たとえば、Amazonで$ 8.00未満で購入できます。データ転送、オスA-オスAケーブルを必ず購入してください。新しいバージョンのLinuxは転送をサポートしています。

私はそれが誰かを助けることを願っています-私はかなり長い間私自身で答えを探しました。

6
Wayne Wright

このようなケーブルフォームファクターで利用可能なUSBブリッジデバイスを使用できます... http://www.usbgear.com/link/ (自動再生ビデオ警告)

3
Skaperen

デバイスの1つが SB OTG をサポートしている場合、技術的には可能です。この場合、ポートはマスターまたはスレーブとして機能します。 OTGデバイスをスレーブとして設定し、USBハードディスクドライブとして機能させることができます(マスターに特別なドライバーを必要としません)。

これは、多くの電話と一部のカメラが行っていることです。それらをプリンターに接続すると、マスターになります。 PCに接続すると、スレーブになります。

1
Lesto

私が行う方法は、2つのUSBシリアルケーブルとその間のヌル接続を使用することです。次に、xmodem、zmodem、Kermitなどを使用してファイルを転送したり、2つのマシン間のネットワークにpppまたはslipを使用したりできます。昔ながらですが動作します。

サド

0
Thad