内置 USB 网络摄像头被识别为键盘吗?

内置 USB 网络摄像头被识别为键盘吗?

几年前,我在 Eee Pc 上安装了一些 Ubuntu,但网络摄像头无法工作。但这并没有真正困扰我,因为我反正也不用它。最近,我更新到了 Ubuntu 17.04(即格式化 Ubuntu 分区并全新安装)。在排除其他问题时,我访问/var/log/Xorg.0.log并注意到以下部分:

[   775.333] (II) config/udev: Adding input device USB2.0 UVC VGA WebCam (/dev/input/event8)
[   775.334] (**) USB2.0 UVC VGA WebCam: Applying InputClass "libinput keyboard catchall"
[   775.334] (II) Using input driver 'libinput' for 'USB2.0 UVC VGA WebCam'
[   775.334] (**) USB2.0 UVC VGA WebCam: always reports core events
[   775.334] (**) Option "Device" "/dev/input/event8"
[   775.334] (**) Option "_source" "server/udev"
[   775.336] (II) input device 'USB2.0 UVC VGA WebCam', /dev/input/event8 is tagged by udev as: Keyboard
[   775.336] (II) input device 'USB2.0 UVC VGA WebCam', /dev/input/event8 is a keyboard
[   775.368] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6:1.0/input/input9/event8"
[   775.368] (II) XINPUT: Adding extended input device "USB2.0 UVC VGA WebCam" (type: KEYBOARD, id 11)
[   775.368] (**) Option "xkb_model" "pc105"
[   775.368] (**) Option "xkb_layout" "de"
[   775.371] (II) input device 'USB2.0 UVC VGA WebCam', /dev/input/event8 is tagged by udev as: Keyboard
[   775.371] (II) input device 'USB2.0 UVC VGA WebCam', /dev/input/event8 is a keyboard
[   775.374] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event4)
[   775.374] (**) AT Translated Set 2 keyboard: Applying InputClass "libinput keyboard catchall"
[   775.374] (II) Using input driver 'libinput' for 'AT Translated Set 2 keyboard'
[   775.374] (**) AT Translated Set 2 keyboard: always reports core events

我不知道为什么 Xorg 甚至处理 USB/输入设备(这不是展示服务器?),但主要问题是:
我怎样才能阻止 Ubuntu/Xorg 尝试将我可怜的网络摄像头用作键盘,并开始将其用作真正的网络摄像头?

答案1

可以设置规则udev来阻止 USB 设备加载驱动程序,这应该具有禁用设备的一部分但保持其他功能正常运行的预期效果。

您可以按照以下方式操作:

  1. 打开终端(如果尚未打开)

  2. 通过以下方式确定制造商和设备 ID lsusb(对于 PCI 设备,您可以使用lspci):

    sudo lsusb
    

    您可能会看到类似这样的输出:

    ...
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 8087:8008 Intel Corp. 
    Bus 001 Device 003: ID 04f2:b448 TOSHIBA Web Camera - HD: TOSHIB
    ...
    

    记下制造商 ID(例如04f2)和产品 ID(例如b448)。这些在后面会很重要。

  3. 通过以下方式确定设备所需的驱动程序udevadm

    udevadm info -a /dev/input/by-id/*
    

    笔记:您需要仔细检查设备input以找到您的相机。或者,如果您查看 的内容/dev/input/by-id,您可能会发现您的相机。然后您可以发出更具体的命令,例如udevadm info -a /dev/input/by-id/*Camera*

    您可能会看到大量以如下内容开头的信息:

    looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3':
         KERNELS=="usb3"
         SUBSYSTEMS=="usb"
         DRIVERS=="usb"
    

    您需要注意DRIVERSUSB 设备,即您的相机。其中一行可能会显示uvcvideo,另一行可能会显示libinput,这是不正确的。

  4. 创建udev规则文件:

    sudo {text editor of choice} /etc/udev/rules.d/90-blacklist-webcam-keyboard.rules
    

    笔记:一定要用{text editor of choice}你选择的文本编辑器替换。我以前会把它放在vi那里,因为像我这样的宅男会用它。然而,很多帖子都会被编辑成其他新奇的东西来替换。TLDR;使用适合你的东西vigedit

    在该文件中,以如下格式记录驱动程序、制造商 ID 和产品 ID:

    # Not a keyboard!
    SUBSYSTEM=="usb", DRIVER=="libinput", ATTRS{idVendor}=="04f2", ATTRS{idProduct}=="b448", ATTR{authorized}="0"
    
  5. 重启。

    笔记:如果相机是可以断开连接并重新连接的 USB 设备,则只需使用 重新加载规则udevsudo udevadm control --reload-rules重新连接设备即可。但是,由于它是内置的,因此重新启动是最简单的选择,无需使用复杂的硬件 API 命令。

  6. 测试你的相机。

如果一切正常,您的相机现在将仅被视为相机。 可能会有一行显示syslog键盘未获得授权,但仅此而已。

相关内容