如何在 Ubuntu 中禁用特定的(有故障的)笔记本电脑网络摄像头?

如何在 Ubuntu 中禁用特定的(有故障的)笔记本电脑网络摄像头?

我在笔记本电脑上使用 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

相关内容