我已经搜索了很多答案,但是我能找到最接近的解决方案是this,但它对我不起作用.
这是我的系统:
# uname -a
Linux vin 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (-03-17) x86_64 GNU/Linux
问题是:我的一个USB端口似乎已经死了.任何试图读取“/ sys / bus / usb / devices / usb1 / descriptors”的程序都会导致程序挂起不可杀死的状态.
不幸的是,许多软件似乎想要访问USB1,包括chrome和blender,这就是为什么这会让我烦恼不已.当我用strace调用这些程序时,它们总是在尝试打开“/ sys / bus / usb / devices / usb1 / descriptors”时挂起.
我尝试过“echo suspend> / sys / bus / usb / devices / usb1 / power / level”之类的东西,但这并不好 – 命令就像其他命令一样挂起.
我尝试使用上面链接的帖子中提到的hubpower代码,但它似乎只是像其他人一样挂起.
我尝试关闭整个系统并打开电脑本身直接断开USB端口,但整个USB端口集合(有很多)似乎与主板紧密集成,我看不到拔掉任何东西的方法.当然,我没有多少经验将电线插入主板和从主板插入.如果唯一的希望是这样做,我希望能够管理它.
我尝试进入BIOS并禁用除一个以外的所有USB端口;然后禁用除下一个之外的所有;而下一个;等等,看哪一个是问题所在.但它似乎没有任何影响 – Linux仍然能够很好地识别端口以使用我的USB鼠标和键盘. Linux似乎并不关心BIOS配置是什么.
我发生的事情是,可能有某种方式告诉Linux内核忽略USB1,但这样做并没有真正尝试与USB1交互(因为这似乎导致无法挂起的挂起).但我不知道该怎么做.
解决方法:
部分答案:我不确定您是否只能禁用一个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端口,这可能是一个解决方案.
标签:linux,usb
来源: https://codeday.me/bug/0810/1638444.html