2個のUSB 2.0ポートと1個のUSB 3.0ポートを備えたラップトップを持っています。接続できるUSBハードドライブの数を知りたいのですが。 Linuxカーネルに厳しい制限はありますか?
パフォーマンスの面では、ポートに接続されたドライブ間で共有される速度はどのくらいですか?
理論的には、1台のホストPCに最大127台のデバイスを接続できますが、それを妨げる実用的な電力とデータ帯域幅の制限があります。これらの127個のデバイスは、最大7レベルのハブの階層ネットワークに配置でき、PCホストをレベル1、最も遠いデバイスをレベル7としてカウントします。PCはハブに5ユニットの電力を供給します。各ユニットは100 mAで、各ポートには最低1ユニットが必要です。ハブ自体が1つを消費し、最大4つのポートに4つのユニットを残します。したがって、4つを超えるポートを備えたバスパワードハブを見つけることはできません。
バスパワーのハブには、さらに制限があります。各ポートには単一の電力ユニットしかないため、ダウンストリームは単一のデバイスにしか接続できません。拡張のために別のハブに接続することはできません。そのハブには追加の5ユニットが必要です。また、すべてのデバイスが単一のユニットで実行できるわけではありません。マウスのような低電力デバイスは動作しますが、高電力デバイスは最大5ユニットを要求できます。高出力USBデバイスは、PCホストまたはポートに5ユニットを供給することができる自己給電ハブに直接接続した場合にのみ機能します。
デバイスを接続すると、PCはデバイスにその機能と要件を照会します。そのため、たとえば、PCは4ポートのバス駆動ハブに接続されていることを認識しています。つまり、各ポートは1つのユニットのみを駆動できます。高出力デバイスをそのハブに接続しようとすると、OSはエラーメッセージを表示し、デバイスの有効化を拒否します。
バス駆動のハブは一般にこれらの制限のために悪い考えであり、主にデスクトップ用ではなくモバイル用です。
一方、ポートに接続されているデバイス自体が自己給電式である場合、ハブから複数のユニットを必要としない場合があります。たとえば、外部ディスクドライブには独自の電源があるため、バス電源のハブで問題なく動作するはずです。
自己給電のハブは、各ポートに5ユニットを供給できるため、高出力デバイスとさらなるレベルのハブが可能になります。したがって、1つの7ポートセルフパワードハブをプラグインし、さらに7つの7ポートハブをプラグインに接続して、第4層で49個の使用可能なポートを提供できます。
一部のセルフパワーハブでは、バスパワーモードでも使用できますが、プラグインするデバイスが多すぎると、OSからエラーメッセージが表示されます。
ほとんどのハブコントローラーチップには4つのポートがあるため、通常は4つのポートハブがあります。より大きなハブを構築する場合は、2つの4ポートチップを使用します。ただし、最初のチップをホストに接続し、2番目のチップを最初のチップのダウンストリームポートの1つに接続してデイジーチェーン接続する必要があります。これにより、ユーザー用に残っているポートは7つだけで、最初のチップに3つ、2番目のチップに4つ、つまり共通の7ポートハブになります。
USBはプラグアンドプレイです。つまり、接続するときにこのことを知る必要はありません。 OSは各ハブとデバイスの電力バジェットを追跡し、接続が機能しない場合、および自己給電ポートを使用する必要があることを通知します。
編集:USBパケットは次のようになります:
トークン: パケットID:8ビット アドレス:7ビット エンドポイント:4ビット CRC:5ビット 開始フレームの: パケットID:8ビット フレーム番号:11ビット CRC:5ビット データパケット: パケットID:8ビット データ:0-1023バイト CRC:16ビット ハンドシェイク: パケットID:8ビット
アドレスは7ビットしかないため、バス全体で128個のデバイスしか使用できません(それぞれ7ビットでオンとオフを切り替えることができるため、合計128ビットの異なるビットの組み合わせが可能です)。これにはコンピューターが含まれるので、他に127個を接続できます。
そのため、USB3チップセットではハードデバイス数が32デバイス(実際には96エンドポイントの制限)であるため、USB3チップセットでは実際に30デバイス程度で制限に達することがわかります。
私もこの問題に対処しましたが、実際の問題と解決策を見つけるのに時間がかかりました。それは長いページですので、あなたはそこにそれを読むことができます http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-最大デバイス数-this-xHCI-Host-supports-is-32。html
基本的に、これらの事柄に要約します
1)USB3には96のエンドポイント制限があります(32デバイスのみに変換されます)
2)ハブによりエンドポイントがさらに失われます。USB2ケーブルをUSB3ハブに使用すると、いくつかのスロットが戻ります
3)より一般的には、USB3なしで実行できる場合はUSB3を無効にする必要があります(USB3カーネルドライバーを削除するか、可能であればBIOSでUSB3を無効にします)。 USB2モードでUSB3チップを使用しても役に立たないため、USB3を無効にして、マザーボードがそのエンドポイント制限のないUSB2コントローラーにポートを再ルーティングするようにする必要があります4)USB3を無効にできない場合、USB2のみのPCIeカードを取得しますそして、それは本当にあなたに120台かそこらのデバイスを提供します。
その他のリソース: https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US