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

N0r*_*ert 3 usb microphone kernel webcam 18.04

我有一台带有故障 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
Run Code Online (Sandbox Code Playgroud)

并且设备 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
Run Code Online (Sandbox Code Playgroud)

所以我已经uvcvideo通过放置blacklist uvcvideo/etc/modprobe.d/blacklist-uvc.conf. 但这一单一措施于事无补。

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

mat*_*igo 6

是的,这可以通过终端中的几个命令来完成:

  1. 禁用 USB 端口:
    echo disabled | sudo tee /sys/bus/usb/devices/usb2/power/wakeup
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从端口断开电源:
    echo suspend | sudo tee /sys/bus/usb/devices/usb2/power/level
    
    Run Code Online (Sandbox Code Playgroud)

如果这不起作用,则udev可能需要制定规则:

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