如何强制Empathy Internet Messaging更改默认网络摄像头?

我刚刚买了一个新的网络摄像头。 它是USB供电的。 出于个人原因,我希望不使用我的上网本附带的内置网络摄像头。

我想用这个新的。 我喜欢同理心,这是一个很棒的聊天客户端。 但是,我似乎无法将我的默认网络摄像头从内置网络摄像头转移到我刚购买的网络摄像头。

那么,有没有办法强迫移情使用USB供电的网络摄像头,而不是内置的网络摄像头?

让我们消除一些选择。

  1. 我尝试了gstreamer-properties方法,root和普通用户。 没用

  2. 我也尝试了配置编辑器方法,尝试手动更改网络摄像头默认设置。

  3. 我也尝试将内置的网络摄像头驱动程序列入黑名单,但我的第二个网络摄像头也运行相同的驱动程序,因此选项没有意义,因为它禁用了两个网络摄像头,而不是我需要使用的网络摄像头。

我想你想要的是udev规则。

我在12.04,所以你的里程可能会有所不同,但这是一个例子:
您想要更改开关/ dev / video1和/ dev / video0。 首先获得您需要的信息:
udevadm info -a -p $(udevadm info -q path -n /dev/video0)
udevadm info -a -p $(udevadm info -q path -n /dev/video1)
将这两个巨大的文本块复制到gedit中
我看起来像这样:

 看看设备'/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1:1.0/video4linux/video0':
     KERNEL == “video0的”
     SUBSYSTEM == “video4linux实现”
     DRIVER == “”
     ATTR {name} ==“USB2.0 PC CAMERA”
     ATTR {索引} == “0”

  看着父设备'/devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1:1.0':
     KERNELS == “1-1:1.0”
     SUBSYSTEMS == “USB”
     DRIVERS == “uvcvideo”
     ATTRS {} bInterfaceNumber == “00”
     ATTRS {bAlternateSetting} ==“0”
     ATTRS {} bNumEndpoints == “01”
     ATTRS {} bInterfaceClass == “奥斯特”
     ATTRS {} bInterfaceSubClass == “01”
     ATTRS {} bInterfaceProtocol == “00”
     ATTRS {supports_autosuspend} == “1”
     ATTRS {} iad_bFirstInterface == “00”
     ATTRS {} iad_bInterfaceCount == “02”
     ATTRS {} iad_bFunctionClass == “奥斯特”
     ATTRS {} iad_bFunctionSubClass == “03”
     ATTRS {} iad_bFunctionProtocol == “00”

  看父设备'/devices/pci0000:00/0000:00:12.2/usb1/1-1':
     KERNELS == “1-1”
     SUBSYSTEMS == “USB”
     DRIVERS == “USB”
     ATTRS {配置} == “”
     ATTRS {bNumInterfaces} ==“4”
     ATTRS {的bConfiguration Value} == “1”
     ATTRS {} bmAttributes == “80”
     ATTRS {} bMaxPower == “320毫安”
     ATTRS {} urbnum == “5064”
     ATTRS {idVendor} == “18ec”
     ATTRS {} idProduct == “3299”
     ATTRS {} bcdDevice == “0100”
     ATTRS {}formsbDeviceClass == “EF”
     ATTRS {} bDeviceSubClass == “02”
     ATTRS {} bDeviceProtocol == “01”
     ATTRS {bNumConfigurations指定} == “1”
     ATTRS {bMaxPacketSize0} == “64”
     ATTRS {速度} == “480”
     ATTRS {BUSNUM} == “1”
     ATTRS {DEVNUM} == “14”
     ATTRS {DEVPATH} == “1”
     ATTRS {version} ==“2.00”
     ATTRS {maxchild} == “0”
     ATTRS {}怪癖== “为0x0”
     ATTRS {avoid_reset_quirk} == “0”
     ATTRS {}授权== “1”
     ATTRS {}制造商== “深圳艾科创新微电子”
     ATTRS {product} ==“USB2.0 PC CAMERA”

  看父设备'/devices/pci0000:00/0000:00:12.2/usb1':
     KERNELS == “USB1”
     SUBSYSTEMS == “USB”
     DRIVERS == “USB”
     ATTRS {配置} == “”
     ATTRS {bNumInterfaces} ==“1”
     ATTRS {的bConfiguration Value} == “1”
     ATTRS {} bmAttributes == “E0”
     ATTRS {bMaxPower} ==“0mA”
     ATTRS {urbnum} == “324”
     ATTRS {idVendor} == “1d6b”
     ATTRS {idProduct} == “0002”
     ATTRS {} bcdDevice == “0302”
     ATTRS {}formsbDeviceClass == “09”
     ATTRS {} bDeviceSubClass == “00”
     ATTRS {} bDeviceProtocol == “00”
     ATTRS {bNumConfigurations指定} == “1”
     ATTRS {bMaxPacketSize0} == “64”
     ATTRS {速度} == “480”
     ATTRS {BUSNUM} == “1”
     ATTRS {DEVNUM} == “1”
     ATTRS {DEVPATH} == “0”
     ATTRS {version} ==“2.00”
     ATTRS {maxchild} == “6”
     ATTRS {}怪癖== “为0x0”
     ATTRS {avoid_reset_quirk} == “0”
     ATTRS {}授权== “1”
     ATTRS {manufacturer} ==“Linux 3.2.0-22-generic ehci_hcd”
     ATTRS {product} ==“EHCI主机控制器”
     ATTRS {}系列== “0000:00:12.2”
     ATTRS {authorized_default} == “1”

  看着父设备'/devices/pci0000:00/0000:00:12.2':
     KERNELS == “0000:00:12.2”
     SUBSYSTEMS == “PCI”
     DRIVERS == “ehci_hcd”
     ATTRS {}供应商== “0x1002”
     ATTRS {设备} == “0x4396”
     ATTRS {} subsystem_vendor == “0x1043”
     ATTRS {} subsystem_device == “0x8389”
     ATTRS {}类== “0x0c0320”
     ATTRS {} IRQ == “17”
     ATTRS {} local_cpus == “00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f”
     ATTRS {} local_cpulist == “0-3”
     ATTRS {numa_node} == “0”
     ATTRS {dma_mask_bits} == “32”
     ATTRS {consistent_dma_mask_bits} == “32”
     ATTRS {broken_parity_status} == “0”
     ATTRS {} msi_bus == “”
     ATTRS {}同伴== “”
     ATTRS {uframe_periodic_max} == “100”

  看父设备'/ devices / pci0000:00':
     KERNELS == “pci0000:00”
     SUBSYSTEMS == “”
     DRIVERS == “”

您正在寻找与您的相机匹配的lsusb属性:

 SUBSYSTEMS=="usb" ATTRS{idVendor}=="firsthalf" ATTRS{idProduct}=="secondhalf" 

然后以root身份编辑/etc/udev/rules.d/25-video-device.rules
这个名字相对武断。 这个数字与首先解析的集合有关,但它会在很多udev谷歌搜索中弹出。 我们来试试吧吧。

我看起来像:

 SUBSYSTEMS=="usb", ATTRS{idVendor}=="18ec", ATTRS{idProduct}=="3298", NAME:="video0", OPTIONS:="link_priority=100" SUBSYSTEMS=="usb", ATTRS{idVendor}=="090c", ATTRS{idProduct}=="c371", NAME:="video2" 

保存文件

有些消息来源表示root service udev restart ,但我得到了一个硬锁。 所以只需重启就可以插上电源。
现在启动任何不允许您选择video设备的内容。 因为它们可能很难连接到使用/ dev / video0,所以这应该“正常工作”。

无论出于何种原因,至少对我而言,它不会过度使用并取代现有的video,它只会创建两个文件(可能是设计)。 你可以ln -sf /dev/video1 /dev/video0 。 对我来说,我用这种方式指定的设备似乎有效。 我用guvcview测试过。

恭喜,您刚刚编写了一个udev规则来克服硬编码的URL。

您也可以指定在这些udev规则的末尾运行命令。

 SUBSYSTEMS=="usb", ATTRS{idVendor}=="18ec", ATTRS{idProduct}=="3298", NAME:="video0", OPTIONS:="link_priority=100", RUN+="ln -sf /dev/video1 /dev/video0" SUBSYSTEMS=="usb", ATTRS{idVendor}=="090c", ATTRS{idProduct}=="c371", NAME:="video2" 

现在您的USBvideo占用/ dev / video0和/ dev / video1。 你不会失去你的内置,因为它现在位于/ dev / video2。