我正在寻找一种方法来禁用集成到我的笔记本电脑中的网络摄像头。网络摄像头正在使用 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)
这为我提供了正确设备的0402和5602、供应商和产品 ID(如 中所列lsusb)。
现在我们找到了,关闭它很简单:
echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue
Run Code Online (Sandbox Code Playgroud)
在确保它按预期工作后,让它在每次启动时加载(例如,在/etc/rc.local.)
@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.
是否有其他解决方案可用?