なぜ約10〜20個のUSBデバイスしか使用できないのですか?

なぜ約10〜20個のUSBデバイスしか使用できないのですか?

CentOS 7を実行しているIntel NUCに27個のUSBデバイスを接続しようとしていますが、何をしてもシステムは20個以上を見ることができません。私はいくつかのNUCモデルを試してみましたが、追加のmPCIe USBコントローラカードを追加し、Intel Xeonと追加のPCIe USBコントローラカードを含む1Uサーバーを試してみましたが、Mac Miniも試してみました。 Mac Miniは最大20台のデバイスを認識できますが、依然として必要なものより少なくなります。追加のUSBコントローラカードは、システムで認識されるデバイスの数には影響しません。 27個のデバイスは、電源が供給されている10ポートハブ3個に分散されています。ハブを使用してもまだ127 USB仕様の制限より低いため、システムがすべてのUSBデバイスを見ることができない理由を知っていますか?

助けてくれてありがとう!

答え1

私もこの問題に対処しましたが、実際の問題と解決策を見つけるのに時間がかかりました。このページはかなり長いので、そこに行って読むことができます。http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit-このxHCIホストがサポートする最大デバイス数は32です。.html

デフォルトでは、次のように要約されます。 1)USB3には96個のエンドポイント制限があります(つまり、32個のデバイスのみ)
2)ハブにより、より多くのエンドポイントが失われます。 USB2ケーブルを使用してUSB3ハブに接続すると、一部のスロットが節約されます。
3) 追加 通常 USB3 を使用できない場合は、USB3 を無効にする必要があります (USB3 カーネルドライバを削除するか、可能であれば BIOS で USB3 を無効にしてください)。 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?言語=en_US

答え2

少なくとも複数のデバイスが同時に動作する必要があります。シリアルコンソールリモートアクセスサーバーの作成に関するLJの記事に基づいています。コントローラあたり(つまりポートペアあたり)USBデバイス(ハブを含む)は127台に制限されています。

おそらく、LinuxがUSBの限界に達するのに苦労しているかもしれません。カーネルログには興味深い内容があるかもしれません。

回避策が必要な場合は、次のことができます。ネットワーク経由でUSBポートをエクスポートする。これにより、ソフトウェアを変更することなく複数のコンピュータを使用できます。これは、より多くのハードウェア、より多くの電力消費、およびより多くの複雑さを意味するので、理想的ではない。 usbip sourceforgeプロジェクトは廃止されているようですが、まだUbuntuパッケージがあります。私はコードがメインラインLinux(2.6.28)に適用されており、ユーザースペースツールを更新する必要はないと思います。また、見ることができますそれに関するこのaskubuntuの質問。これは、デバイスとドライバがネットワークラウンドトリップのより高いレイテンシを処理できるかどうかに応じて正しく機能する場合と動作しない場合があります。この質問に対する私のコメントに対するAndré Borieの回答をご覧ください。

この機能を使用すると、ホストごとに同じUSBデバイス制限が発生する可能性があります。もしそうなら、これは低レベルのドライバとは関係がなく、LinuxのUSBスタックで少し高いドライバと関連していることを伝えます。

USBストレージデバイスを使用している場合は、ブロックデバイスのエクスポートを使用できますnbd

関連情報