이 xHCI 호스트가 지원하는 최대 장치 수는 32개입니다.

이 xHCI 호스트가 지원하는 최대 장치 수는 32개입니다.

저는 USB 컨트롤러가 1개만 있는 노트북 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 컨트롤러 칩을 식별할 수 있도록 충분한 정보가 인쇄되어야 합니다. 내 말을 믿을 수 없다면 데이터시트를 인터넷 검색하여 기능을 확인할 수 있습니다.

관련 정보