重新启动禁用和启用 USB 端口

重新启动禁用和启用 USB 端口

Ubuntu 服务器 15.10

2 个 USB 接收器具有相同的序列号,但存在问题。我的服务将它们弄混了。但如果我在重启时移除 USB 插头,然后按特定顺序连接它们,它就可以正常工作。

我可以在启动时禁用所有 USB 端口(端口 1 - 8)。然后延迟启用端口 2,稍后再启用端口 4。

答案1

我不能保证这会有效,但请尝试一下。

首先,显示所有 USB 设备:

sudo lsusb -t
/:总线 04.端口 1:Dev 1,Class=root_hub,驱动程序=xhci_hcd/6p,5000M
/:总线 03.端口 1:Dev 1,Class=root_hub,驱动程序=xhci_hcd/14p,480M
    |__ 端口 1:设备 2,如果为 0,则类 = 人机接口设备,驱动程序 = usbhid,1.5M
    |__ 端口 2:设备 3,如果为 0,则类 = 人机接口设备,驱动程序 = usbhid,1.5M
    |__ 端口 2:设备 3,如果 1,类别 = 人机接口设备,驱动程序 = usbhid,1.5M
    |__ 端口 7:设备 4,如果为 0,则类别=无线,驱动程序=btusb,12M
    |__ 端口 7:设备 4,如果 1,类别=无线,驱动程序=btusb,12M
    |__ 端口 8:Dev 5,如果 0,类=视频,驱动程序=uvcvideo,480M
    |__ 端口 8:Dev 5,If 1,Class=Video,Driver=uvcvideo,480M
/:总线 02.端口 1:Dev 1,Class=root_hub,驱动程序=ehci-pci/2p,480M
    |__ 端口 1:设备 2,如果 0,类别=Hub,驱动程序=hub/8p,480M
/:总线 01.端口 1:Dev 1,Class=root_hub,驱动程序=ehci-pci/2p,480M
    |__ 端口 1:设备 2,如果 0,类别=Hub,驱动程序=hub/6p,480M

然后您可以禁用根集线器上所需的 USB 端口。

禁用根集线器上的端口意味着我可以像这样禁用我的网络摄像头(uvcvideo)(总线 3,端口 8):

echo '3-8' |sudo tee /sys/bus/usb/drivers/usb/unbind

我也可以重新启用它:

 echo '3-8' |sudo tee /sys/bus/usb/drivers/usb/bind

这样做警告,因为输入错误的数字可能会禁用键盘。最好确保在 USB 关闭的情况下仍可以打字(例如,在笔记本电脑上,您有内置键盘)

正如您所说,您正在使用服务器,您可以设置 SSH 到机器,以便在尝试此操作时键盘被禁用时能够进行输入。

重新启动也许可以解决键盘禁用的问题。

至于在启动后立即禁用它,请将以下命令放入脚本中(根据您自己的情况进行调整):

sleep 20 #try if this is needed, needs an increase etc
echo '3-8' |sudo tee /sys/bus/usb/drivers/usb/unbind # detach device 1
echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/unbind # detach device 2
sleep 5
echo '3-8' |sudo tee /sys/bus/usb/drivers/usb/bind # attach device 1
sleep 5
echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/bind # attach device 2

相关内容