我在笔记本电脑上使用 Ubuntu,它有一个嵌入式网络摄像头。它坏了之后(图像暗淡,连接/断开太频繁),我换了一个工作正常的外置摄像头。
但是,旧的网络摄像头总是连接和断开,我不停地收到桌面通知,这非常烦人。
我没有办法停止通知(它们来自我必须用于工作的程序,其开发人员不会提供帮助)
我已经阅读了有关禁用网络摄像头内核模块的信息,但是这会阻止我使用工作所需的外部网络摄像头。有没有办法在硬件级别停止通知?
谢谢!
答案1
无需对板载网络摄像头进行物理操作来禁用它:以下命令可以禁用它,
echo 0 > /sys/bus/usb/devices/1-1.3/bConfigurationValue
但在此命令中,部分是我系统中板载网络摄像头的正确总线坐标。我们所要做的1-1.3
就是找出1-1.3
你的系统。
首先让我们确定总线坐标:在我的系统上
# lsusb -t
...............
: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
|__ Port 2: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 2: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 3: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
只有一个设备被标识为类别=视频; 驱动程序为 uvcvideo,进一步加强了对板载网络摄像头的识别。其地址为 Bus=1、Device=3、Function=0,1。
现在让我们去:
# cd /sys/bus/usb/devices/; ls
1-0:1.0 1-1:1.0 1-1.2:1.0 1-1.3 1-1.3:1.1 2-1 2-1.5 2-1.6 2-1.6:1.1 2-1.6:1.2 2-1.6:1.4 2-1.6:1.6 2-1.6:1.8 3-0:1.0 3-2:1.0 3-3:1.0 3-3:1.2 usb1 usb3
1-1 1-1.2 1-1.2:1.1 1-1.3:1.0 2-0:1.0 2-1:1.0 2-1.5:1.0 2-1.6:1.0 2-1.6:1.10 2-1.6:1.3 2-1.6:1.5 2-1.6:1.7 2-1.6:1.9 3-2 3-3 3-3:1.1 4-0:1.0 usb2 usb4
从中您可以看到我有两个总线域,1 和 2;但是,只有总线域 1 具有总线 = 1,设备 = 3 地址,因此我们转到:
# cd 1-1.3
你可以通过比较两个文件的内容来确认这是否是你的机载摄像头,
# cat id{Vendor,Product}
1bcf
288e
您可以将其与以下输出进行比较
# lsusb
................
Bus 001 Device 003: ID 1bcf:288e Sunplus Innovation Technology Inc.
您可以通过谷歌搜索“摄像头(我的摄像头!)”轻松确认。
要禁用它,请使用 sudo,
# echo 0 > bConfigurationValue
运行cheese
将确认网络摄像头已禁用。要使此操作永久生效,请添加以下行
echo 0 > /sys/bus/usb/devices/1-1.3/bConfigurationValue
进入文件/etc/rc.local
。
答案2
类似这样的方法可能会有帮助,特别是当相机位置发生变化时:
#!/usr/bin/env bash
CAMERA_NAME="Integrated_Webcam_HD"
for device in $(ls /sys/bus/usb/devices/*/product); do
if [[ $(cat "$device") =~ ${CAMERA_NAME} ]]; then
echo "Found $(cat "${device}") @ $device"
if [[ ${device} =~ \/([a-z\.0-9\-]+)\/product ]]; then
echo "${BASH_REMATCH[1]}" | sudo tee /sys/bus/usb/drivers/usb/unbind
fi
fi
done