このxHCIホストがサポートする最大デバイス数は32です。

このxHCIホストがサポートする最大デバイス数は32です。

私はUSBコントローラが1つしかないノートPC E5470を持っています。私のユースケースは、USB外付けドライブを追加することです。現時点では、単一のコントローラで32台以上のデバイスをサポートできます。

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
    |__ Port 1: Dev 8, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 2: Dev 10, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 4: Dev 26, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 3: Dev 35, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 4: Dev 39, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 2: Dev 15, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 4: Dev 36, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 23, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 3: Dev 29, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 3: Dev 20, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 3: Dev 38, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 1: Dev 28, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 4: Dev 41, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 34, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 1: Dev 12, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 1: Dev 17, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 4: Dev 33, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 22, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 3: Dev 27, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
        |__ Port 1: Dev 9, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 1: Dev 11, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 4: Dev 32, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 19, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 3: Dev 25, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 1: Dev 14, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 4: Dev 21, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 4: Dev 42, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 37, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 3: Dev 40, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 1: Dev 30, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 2: Dev 13, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 3: Dev 24, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 4: Dev 31, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
                |__ Port 2: Dev 18, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 3: Dev 16, If 0, Class=Hub, Driver=hub/4p, 5000M
    |__ Port 3: Dev 50, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 1: Dev 51, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
        |__ Port 2: Dev 52, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
    |__ Port 4: Dev 53, If 0, Class=Mass Storage, Driver=uas, 5000M

Wi-Fiカードを変更し、m2をミニPCIアダプタに挿入し、ミニPCIアダプタを追加して新しいUSBコントローラを追加すると、バス4に割り当てられます。以下の情報を入手しました。 (一部のデバイスを追加できました)

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 3: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 4: Dev 19, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 2: Dev 13, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 3: Dev 17, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 1: Dev 10, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 2: Dev 8, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 3: Dev 12, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 4: Dev 16, If 0, Class=Mass Storage, Driver=uas, 5000M
        |__ Port 4: Dev 9, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 4: Dev 20, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 3: Dev 18, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 1: Dev 15, If 0, Class=Mass Storage, Driver=uas, 5000M
        |__ Port 2: Dev 4, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 3: Dev 14, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
            |__ Port 1: Dev 7, If 0, Class=Mass Storage, Driver=uas, 5000M
            |__ Port 2: Dev 11, If 0, Class=Mass Storage, Driver=uas, 5000M
    |__ Port 2: Dev 21, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 1: Dev 22, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 4: Dev 24, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
        |__ Port 2: Dev 23, If 0, Class=Hub, Driver=hub/4p, 5000M

これで、バス4にさらにUSBデバイスを追加しようとするとエラーが発生します。わかりません。バス2 USBコントローラにバス4よりも多くのデバイスがあります。しかし、バス4はそれ以上のデバイスを追加できないと文句を言いますか?どうですか?

バス4がバス2と同じ数のデバイスを保持できると予想しましたが、エラーが発生しました。

[  733.095066] xhci_hcd 0000:01:00.0: Error while assigning device slot ID
[  733.095081] xhci_hcd 0000:01:00.0: Max number of devices this xHCI host supports is 32.
[  733.095092] usb 4-2.1-port3: couldn't allocate usb_device

Unixでコントローラに追加のデバイスを追加できない理由はどうすればわかりますか?lsusb特定のコントローラの制限などの追加情報は提供されません。

答え1

あなたの期待は間違っていました。すべてのUSB XHCIコントローラは同様の標準化されたプログラミングインタフェースを提供しますが、すべてのUSB XHCIコントローラが同じではありません。

基本的なXHCI仕様はインターネット上で簡単に見つけることができます。

5.3章380ページから説明されています。ホストコントローラ機能レジスタ、XHCIコントローラの特定の実装が実行するアクションをドライバに通知します。セクション 5.3.3 では、読み取り専用について説明します。構造パラメータ1この特定のコントローラが処理できるデバイススロット、割り込み、およびポートの最大数を含むレジスタ。

バス4コントローラにはバス2とは異なるXHCIハードウェア実装があるため、処理できるデバイスの最大数は明らかに異なります。

注文する

lspci -nnvd ::0c03

使用されている正確なXHCIコントローラチップを識別するのに十分な情報を印刷する必要があります。私の言葉を信じられない場合は、データシートをインターネットで検索して機能を確認できます。

関連情報