私は LinuxでTCP/IP over USBを実行する最良の方法は? を経験しました。2つのLinuxボックスがUSBを介して互いにIP通信するための実現可能性/手順について詳しく知りたいです。 。私は数年前にシリアルリンクを介して簡単にそれを行いました、そしてそれは非常に安定していて成熟していました。
アイデアは、関連する名前付きネットワークデバイス(eth0
、usb0
、wlan0
、..)を/sys/class/net
に入れて、ifconfig
/route
コマンドは、IPアドレスの割り当て、ルーティング、pingなどの他のネットワークデバイスと同じですが、これは簡単な最後の部分です。
これを達成するために、私はさまざまな問題/ステップを見ます:
HW:ケーブル接続。 2台のコンピューターには「ホスト」USBタイプAコネクタしかないのに対し、通常のUSBケーブルにはタイプAコネクタとタイプBコネクタが1つずつあると思います。電力交換を防ぐためにケーブルを慎重に準備する必要がありますが、データのみを許可します。正しい? (ここでは、USB 3.xが全二重配線を実行できることを知っているので、USB <= 2.0プロトコルのみをカバーしています)
もちろん、PC(ホスト/ USB)を「デバイス」(rasbpi、mini2440、arduino、..、)に接続したい場合は、実際にはType-Bエンドがあり、「愚かな」USBケーブルを使用できます。 。正しい?
カーネル/ドライバー:ネットワークデバイスをUSBポートに割り当てるためにカーネルに何が存在しますか? IP over /dev/ttySxx
に似ていますか? USBカーネルドライバーが反対側で準備ができていない場合はどうなりますか?
ポート/コネクタの識別:カーネルはどのようにknow実際に使用しているポートを指定しますか(特に、専用ケーブルで電源配線が遮断されている場合)?ポートを特定するにはどうすればよいですか?
最後に、ネットワーク層の観点から、私は何を期待すべきですか?イーサネット用のシンプルなブリッジ?または、各USB側にIPアドレスが割り当てられますか?
これがあまり混乱していないことを願っています、そしてあなたは私が達成しようとしていることを手に入れます。しかし、以前はシリアルリンクを介してIP(イーサネット?)を実行するのは非常に簡単だったので、USBの場合もそうだと思います。
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にブリッジすることもできますが、これはかなり多くの作業であり、実際のメリットはありません。