web-dev-qa-db-ja.com

LinuxボックスをIPoverUSBで接続する

私は LinuxでTCP/IP over USBを実行する最良の方法は? を経験しました。2つのLinuxボックスがUSBを介して互いにIP通信するための実現可能性/手順について詳しく知りたいです。 。私は数年前にシリアルリンクを介して簡単にそれを行いました、そしてそれは非常に安定していて成熟していました。

アイデアは、関連する名前付きネットワークデバイス(eth0usb0wlan0、..)を/sys/class/netに入れて、ifconfig/routeコマンドは、IPアドレスの割り当て、ルーティング、pingなどの他のネットワークデバイスと同じですが、これは簡単な最後の部分です。

これを達成するために、私はさまざまな問題/ステップを見ます:

  1. HW:ケーブル接続。 2台のコンピューターには「ホスト」USBタイプAコネクタしかないのに対し、通常のUSBケーブルにはタイプAコネクタとタイプBコネクタが1つずつあると思います。電力交換を防ぐためにケーブルを慎重に準備する必要がありますが、データのみを許可します。正しい? (ここでは、USB 3.xが全二重配線を実行できることを知っているので、USB <= 2.0プロトコルのみをカバーしています)

    もちろん、PC(ホスト/ USB)を「デバイス」(rasbpi、mini2440、arduino、..、)に接続したい場合は、実際にはType-Bエンドがあり、「愚かな」USBケーブルを使用できます。 。正しい?

  2. カーネル/ドライバー:ネットワークデバイスをUSBポートに割り当てるためにカーネルに何が存在しますか? IP over /dev/ttySxxに似ていますか? USBカーネルドライバーが反対側で準備ができていない場合はどうなりますか?

  3. ポート/コネクタの識別:カーネルはどのようにknow実際に使用しているポートを指定しますか(特に、専用ケーブルで電源配線が遮断されている場合)?ポートを特定するにはどうすればよいですか?

  4. 最後に、ネットワーク層の観点から、私は何を期待すべきですか?イーサネット用のシンプルなブリッジ?または、各USB側にIPアドレスが割り当てられますか?

これがあまり混乱していないことを願っています、そしてあなたは私が達成しようとしていることを手に入れます。しかし、以前はシリアルリンクを介してIP(イーサネット?)を実行するのは非常に簡単だったので、USBの場合もそうだと思います。

3
bli

1)usbの問題は、マスター/スレーブプロトコルであるということです。 PCはマスターであり、2つのマスターを直接接続することはできないため、直接ダムケーブルは機能しません。

https://www.Amazon.co.uk/Ethernet-Network-Adapter-Converter-Connection/dp/B003Q85EEA のようなものを使用できますが、イーサネットを使用することもできます。他のハードウェアソリューションも同様になります。

pc <--usb--> usb slave ic/microcontroller <--common protocol--> usb slave ic/microcontroller <--usb--> pc

2)上記のusbネットワークアダプタのようなものの場合、eth0またはwlan0と同じ方法で対話できるネットワークデバイスをセットアップするカーネルドライバがすでにあるはずですが、名前が異なる場合があります。

内蔵のカーネルモジュールで動作する適切に設計されたIC(上記のデバイスのものなど)は、もう一方の端のデバイスの準備ができているかどうかを気にせず、イーサネットケーブルが抜かれているようになります。

3)デバイスは、他のネットワークアダプタと同様に公開する必要があります。ip addrまたはifconfigは、接続するとリストされます。

4)他のデバイスと同じようにネットワークデバイスを期待する必要があります。あるコンピュータから別のコンピュータに直接イーサネットケーブルのように扱うことができます。

これにはRaspberryPiを使用できません。これは、PCのようなホストデバイスです。

Arduinoは機能する可能性がありますが、2つ必要になります。レオナルドの方が優れているのは、USBサポートが組み込まれているため、速度が向上するからです。しかし、arduinoにはUSBネットワーキングをサポートするソフトウェアがないため、これを自分で作成する必要があります(簡単ではありません)。同じことが多くのマイクロコントローラにも当てはまります。最善の策は、スレーブネットワークをサポートするものを見つけることです。mbedはこれを実行できると思いますが、2つのマイクロコントローラーをブリッジするコードを作成する必要があります。

しかし、最も簡単で安価な方法は、 https://www.Amazon.co.uk/Ethernet-Network-Adapter-Converter-Connection/dp/B003Q85EEA のような2つを使用することです。次に、ケーシングを取り外し、ヘッダーのはんだを取り除き、イーサネットケーブルをポートに直接はんだ付けします。ただし、イーサネットケーブルを使用するよりも、柔軟性が少し低下する場合は、それほどメリットはありません(ただし、かさばらない場合もあります)。 ICをオンにして独自のボードを作成し、それらを1つのPCBにブリッジすることもできますが、これはかなり多くの作業であり、実際のメリットはありません。

1
Michael Daffin