16台を超えるUSBフラッシュドライブを検出できません。

16台を超えるUSBフラッシュドライブを検出できません。

あるUSBドライブから別の複数のドライブにファイルをコピーするbashスクリプトを作成しています。

Xubuntuのみを実行する古いシステムでは、問題なく30個のデバイスを検出できます。 USB 2.0ポートのみがあります。

Linux Mintを実行している別の最新のコンピュータは、一度に16台以上のドライブを検出できません。 USB 3.0ポートのみがあります。 16台を超えるドライブを接続すると、新しいドライブはlsblkに表示されなくなります。

なぜですか?

編集する:

fduffが指摘したように、17番目のUSBドライブを接続した後、dmesgを確認しましたが、次のように表示されました。

[  531.519845] usb 3-9.3.2.6: new high-speed USB device number 46 using xhci_hcd
[  531.974582] usb 3-9.3.2.6: New USB device found, idVendor=abcd, idProduct=1234
[  531.974585] usb 3-9.3.2.6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  531.974586] usb 3-9.3.2.6: Product: UDisk
[  531.974587] usb 3-9.3.2.6: Manufacturer: General
[  531.974588] usb 3-9.3.2.6: SerialNumber: Љ
[  531.975337] usb 3-9.3.2.6: Not enough host controller resources for new device state.
[  531.975340] usb 3-9.3.2.6: can't set config #1, error -12

これはハードウェア制限のように見えるかもしれませんが、許可されるUSBデバイスの数は一定ではありません。

たとえば、15台以上のUSBドライブを接続できなくなりました(16番目のUSBドライブでエラー-12)。以前は約20台のデバイスを接続できましたが、すべて正しく検出されました。

複数のUSBコントローラに使用量を分散させるために別のUSBポートを試してみましたが、成功しませんでした。

私のハードウェア仕様:

MB: ASRock Z97 Extreme6
CPU: Intel Core i5-4690K
GPU: MSI GeForce GTX 960 2GB
RAM: HyperX Fury Black 8GB [2x4GB 1600MHz DDR3 CL10 DIMM]
PSU: Chieftec GPS-500A8 [500W]
Display: 2x AOC I2276VWM [IPS, 1920x1080]
HDD: WD Blue 3TB

また、28ポートManhattan USBハブを使用しています。 https://www.amazon.com/Manhattan-Port-USB-Hub-161718/dp/B0074024XU

LiveCD(USBドライブ)でX​​ubuntuを実行する低価格PCは、29台のデバイス(LiveCDドライブを含む30台)を検出してファイル転送を行うことができました。ある時点でHDDにWindows XPがインストールされていましたが、28ポートハブを検出します。お使いのコンピュータは故障して現在サービスを受けています(PSUまたはMBであると予想されます)。それでも動作しますが、光沢のある新製品は機能しません。

ベストアンサー1

これはハードウェア関連の問題かもしれません。私はこれを見つけましたインテルフォーラム:

8シリーズマザーボードの場合、最大エンドポイントは96個です。各USBデバイスは複数のエンドポイントをサポートでき、サポート可能なエンドポイントの数はデバイスによって異なります。最大エンドポイントに達するとポップアップメッセージが表示されます。制限は、サポートされているデバイスの数ではなく、エンドポイントに基づいています。

そして

重要なのは、デバイスの数ではなく、そのデバイスが使用するエンドポイントの数です。 USB 3.0ポートに問題があるということは、USB 2.0 eHCIコントローラではなくxHCIコントローラが使用されることを意味します。 Intel xHCI コントローラは、eHCI コントローラよりも制限が低くなります。 xHCIコントローラの場合、96個のエンドポイントがあります。このエンドポイントの上限に達したようです。 MicrosoftのUSBユーティリティ「USBVIEW」などのツールを使用して、各USBデバイスで使用されているエンドポイントの数を表示できます。

デバイスを複数のUSBコントローラに展開する以外に、できることはあまりありません。もちろん、これはマザーボードに複数のUSBコントローラがあるかどうか、およびどの物理USBコネクタがどのUSBコントローラにルーティングされているかを確認できるかどうかによって異なります(USBVIEWも便利です)。

フォーラムの投稿を詳しく見ることは興味深いです。

次のコマンドを使用して、リストされているエンドポイントの数を確認できます。

lsusb -v | grep bEndpointAddress | wc -l

おすすめ記事