나는 이 질문에 대한 답을 찾기 위해 많은 노력을 기울였지만, 내가 찾을 수 있는 가장 가까운 해결책은 다음과 같습니다.이것, 하지만 이것은 나에게 작동하지 않습니다.
이것은 내 시스템입니다.
# uname -a
Linux vin 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (2016-03-17) x86_64 GNU/Linux
문제는 이것이다: USB 포트 중 하나가 작동하지 않는 것 같습니다. "/sys/bus/usb/devices/usb1/descriptors"를 읽으려고 시도하는 모든 프로그램은 프로그램을 중단시키고 종료할 수 없는 상태가 됩니다.
불행하게도 Chrome과 Blender를 포함하여 많은 소프트웨어가 USB1에 액세스하려는 것 같아서 이것이 나를 너무 괴롭히는 것입니다. strace를 사용하여 이러한 프로그램을 호출하면 "/sys/bus/usb/devices/usb1/descriptors"를 열려고 할 때 항상 중단됩니다.
"echo suspend > /sys/bus/usb/devices/usb1/power/level"과 같은 작업을 시도했지만 제대로 작동하지 않습니다. 명령이 다른 명령처럼 중단됩니다.
위에 링크된 게시물에 언급된 Hubpower 코드를 사용해 보았으나 나머지 코드와 마찬가지로 작동이 중단되는 것 같습니다.
전체 시스템을 종료하고 컴퓨터 자체를 열어서 USB 포트를 직접 분리해 보았지만 전체 USB 포트 모음(그 중 다수)이 마더보드와 매우 긴밀하게 통합되어 있는 것 같아서 전혀 보이지 않습니다. USB 포트. 무엇이든 분리할 수 있는 방법입니다. 물론, 저는 마더보드에 전선을 꽂고 빼는 경험이 많지 않습니다. 유일한 희망이 그렇게 하는 것이라면 나는 그렇게 할 수 있다는 희망을 가지고 있습니다.
BIOS로 들어가서 하나를 제외한 모든 USB 포트를 비활성화한 다음, 다음 포트를 제외한 모든 포트를 비활성화하여 어느 포트가 문제인지 확인했습니다. 그러나 아무런 효과가 없는 것 같습니다. Linux는 여전히 USB 마우스와 키보드를 사용할 수 있을 만큼 포트를 인식합니다. Linux는 BIOS 구성이 무엇인지 신경 쓰지 않는 것 같습니다.
Linux 커널에 USB1을 무시하도록 지시할 수 있는 방법이 있을 수 있다는 생각이 들었습니다. 그러나 실제로 USB1과 상호 작용을 시도하지 않고도 그렇게 할 수 있습니다(이로 인해 종료할 수 없는 중단이 발생하는 것 같습니다). 하지만 어떻게 해야할지 모르겠습니다.
답변1
부분 답변: 하나의 USB 포트만 비활성화할 수 있는지는 잘 모르겠지만 컨트롤러와 모든 포트를 비활성화할 수 있습니다.
lspci를 사용하여 컨트롤러를 나열할 수 있습니다. lspci -k| grep -i usb -A2
예를 들어 다음과 같은 결과를 얻습니다.
03:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller
Subsystem: Micro-Star International Co., Ltd. [MSI] ASM1142 USB 3.1 Host Controller
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci
이는 PCI 포트 03:00.0의 USB 컨트롤러가 xhcp_pci 커널 모듈에 의해 처리됨을 의미합니다.
이제 다음을 사용하여 드라이버에게 해당 컨트롤러를 관리하지 않도록 요청할 수 있습니다.
echo "0000:03:00.0" | sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind
컨트롤러의 다른 USB 포트를 잃어도 괜찮다면 이것이 해결책일 수 있습니다.