如何禁用集成网络摄像头并仍然能够使用外部摄像头

Ato*_*her 17 hardware webcam

我正在寻找一种方法来禁用集成到我的笔记本电脑中的网络摄像头。网络摄像头正在使用 uvcvideo 模块,但我不想将其列入黑名单,因为它也被我拥有的外部网络摄像头使用。

有没有办法在不触及模块列表的情况下禁用设备本身?

这就是 lsusb 列出网络摄像头的方式。第一个是集成的(被一些应用识别为BisonCam NB Pro),第二个是外置罗技C525:

Bus 002 Device 004: ID 5986:0361 Acer, Inc 
Bus 003 Device 002: ID 046d:0826 Logitech, Inc. 
Run Code Online (Sandbox Code Playgroud)

我已经检查过 BIOS - 无法从那里禁用网络摄像头。此外,我很想学习如何通过 ID 禁用设备。

谢谢!

小智 17

这很简单。艰苦的工作是弄清楚 USB 设备的路径是什么。我们需要首先找到我们要禁用的设备。我们可以这样做lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0402:5602 ALi Corp. M5602 Video Camera Controller
Bus 001 Device 003: ID 045e:0723 Microsoft Corp. LifeCam VX-7000 (UVC-compliant)
Run Code Online (Sandbox Code Playgroud)

将 1-6 更改为要禁用的设备端口。端口通常不是逻辑的(它是物理的),但您可以使用lsusb -t. 一旦你认为你拥有它,你可以用以下方法测试它:

cat /sys/bus/usb/devices/1-6/id{Vendor,Product} 
Run Code Online (Sandbox Code Playgroud)

这为我提供了正确设备的04025602、供应商和产品 ID(如 中所列lsusb)。

现在我们找到了,关闭它很简单:

echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue
Run Code Online (Sandbox Code Playgroud)

在确保它按预期工作后,让它在每次启动时加载(例如,在/etc/rc.local.)


Dam*_*dEi 7

@surjack:1-6取决于您的端口映射。如果您键入,lsusb -t您将获得它,然后将其与lsusb. 对我来说,我得到以下输出:

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 5986:0525 Acer, Inc 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 012: ID 413c:2107 Dell Computer Corp. 
Run Code Online (Sandbox Code Playgroud)

lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Video, Driver=uvcvideo, 5000M
    |__ Port 1: Dev 2, If 1, Class=Video, Driver=uvcvideo, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 9, If 0, Class=Vendor Specific Class, Driver=hdm_usb, 480M
    |__ Port 4: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 3: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
Run Code Online (Sandbox Code Playgroud)

现在只需找到适合04我的巴士,因为它Acer, Inc是相机。端口映射显示相机位于Bus 04.Port 1。这意味着1-6我必须使用4-1. 我不是 Linux/Ubuntu 专家,但这给我的印象是您必须使用Bus-Port并且只使用数字。如果您想 100% 确保使用cat如下所述的命令:

cat /sys/bus/usb/devices/<Bus>-<Port>/id{Vendor,Product} 
Run Code Online (Sandbox Code Playgroud)

并将其与 lsusb 进行比较。

就我而言:

cat /sys/bus/usb/devices/4-1/id{Vendor,Product}
5986
0525
Run Code Online (Sandbox Code Playgroud)

这与 lsusb 输出相同:5986:0525.

现在您找到了内部网络摄像头。

但不幸的是 lysdexia 是对的,echo 命令不起作用,因为Permission denied.

是否有其他解决方案可用?

  • `sudo -i` 和之后的 `echo "0" &gt; ...`。 (3认同)