是否可以禁用已知物理位置的 USB 端口?

是否可以禁用已知物理位置的 USB 端口?

我的笔记本电脑的 LCD 面板电缆出现故障。该电缆连接到 LCD 面板和带麦克风的网络摄像头。LCD 面板工作正常,但网络摄像头和麦克风出现故障。我不打算去维修,所以我希望获得基于软件的解决方案。实际上,我不使用这个网络摄像头,并且有蓝牙手机可以更换麦克风。

目前我知道网络摄像头位于/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5
我想将此端口列入黑名单。

如果这很重要,lsusb目前关于该设备的说法如下:

Bus 002 Device 053: ID 04f2:b330 Chicony Electronics Co., Ltd Asus 720p CMOS webcam

设备 053有一个增量。

它会向系统日志中发送大量类似以下的消息

  • usb 2-1.5:使用 ehci-pci 的新高速 USB 设备号 29
  • usb 2-1.5:设备描述符读取/64,错误 -71
  • usb 2-1.5:USB断开连接,设备编号23

如果没有将uvcvideo驱动程序列入黑名单,它将淹没uvcdynctrl-udev.log文件:

$ ls -alh /var/log/uvcdynctrl-udev.log 
-rw-r--r-- 1 root root 8,1G Apr 17 18:20 /var/log/uvcdynctrl-udev.log

因此,我已经通过将 放入来将uvcvideo内核驱动程序列入黑名单。但这种单一措施并没有帮助。blacklist uvcvideo/etc/modprobe.d/blacklist-uvc.conf

我该如何将连接的网络摄像头的故障内部 USB 端口完全列入黑名单?

答案1

是的,只需在终端中输入几个命令即可完成:

  1. 禁用 USB 端口:
    echo disabled | sudo tee /sys/bus/usb/devices/usb2/power/wakeup
    
  2. 切断端口的电源:
    echo suspend | sudo tee /sys/bus/usb/devices/usb2/power/level
    

如果此方法不起作用,则udev可能需要制定一条规则:

  1. 使用您选择的文本编辑器创建一个新文件/lib/udev/rules.d。例如:
    sudo vi /lib/udev/rules.d/20-block-webcam.rules
    
  2. 撤销对网络摄像头的访问授权:
    # Chicony Webcam
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04f2", ATTRS{idProduct}=="b330", ATTR{authorized}="0"
    
    看起来像输出 lsusb 做过事情

答案2

我两次来这里遇到指纹识别器相同的问题,但其他选项不起作用,因为这suspend不是答案。

我最终启动 powertop并使用它们的tunables功能来观察它们是如何消除设备耗电的。

就我的情况来说,罪犯是Bus 001 Device 004: ID 27c6:5395 Shenzhen Goodix Technology Co.,Ltd. Fingerprint Reader

因此使用从中获取的这个命令powertop是可行的

echo "auto" | sudo tee /sys/bus/usb/devices/1-7/power/control

相关内容