왜 약 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.

관련 정보