Как заставить Empathy Internet Messaging изменить веб-камеру по умолчанию?

Я только недавно купил новую веб-камеру. Это питание от USB. По личным причинам я не хочу использовать встроенную веб-камеру, поставляемую с моим нетбуком.

Я хочу использовать этот новый. Я люблю сочувствие, это отличный клиент чата. Но я не могу переключить мою стандартную веб-камеру в сочувствии со встроенной веб-камеры на ту, которую я только что купил.

Итак, есть ли способ заставить сочувствие использовать веб-камеру с питанием от USB, а не встроенную веб-камеру?

Давайте исключим некоторые варианты.

  1. Я попробовал метод gstreamer-properties, root и обычный пользователь. Бесполезно

  2. Я также попробовал метод редактора конфигурации, пытаясь вручную изменить настройки веб-камеры по умолчанию.

  3. Я также пытался внести в черный список встроенный драйвер веб-камер, но моя вторая веб-камера также запускает тот же драйвер, так что этот вариант был бессмысленным, поскольку он отключил обе веб-камеры вместо той, которая мне была нужна использование.

5
задан 13 April 2012 в 06:21

1 ответ

1116 То, что вы хотите, я думаю, это правила udev.

У меня 12.04, поэтому ваш пробег может отличаться, но вот пример:
Вы хотите изменить switch / 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
Мой был похож this:

  looking at device '/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{index}=="0"

  looking at parent device '/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}=="0e"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{iad_bFirstInterface}=="00"
    ATTRS{iad_bInterfaceCount}=="02"
    ATTRS{iad_bFunctionClass}=="0e"
    ATTRS{iad_bFunctionSubClass}=="03"
    ATTRS{iad_bFunctionProtocol}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 4"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="320mA"
    ATTRS{urbnum}=="5064"
    ATTRS{idVendor}=="18ec"
    ATTRS{idProduct}=="3299"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="ef"
    ATTRS{bDeviceSubClass}=="02"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="14"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="ARKMICRO"
    ATTRS{product}=="USB2.0 PC CAMERA"

  looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="324"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0302"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="6"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.2.0-22-generic ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:12.2"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:12.2':
    KERNELS=="0000:00:12.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x1002"
    ATTRS{device}=="0x4396"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x8389"
    ATTRS{class}=="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{companion}==""
    ATTRS{uframe_periodic_max}=="100"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

Вы ищете атрибуты от lsusb, которые соответствуют вашей камере:

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

Затем вы откорректируете свой /etc/udev/rules.d/25-video-device.rules
Имя относительно произвольно. Число связано с тем, какие наборы анализируются первыми, но оно появляется во многих поисковых запросах udev в Google. Давайте просто использовать это.

Мой выглядит так:

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, но я получил жесткую блокировку. Так что просто перезагрузитесь с подключенным.
Теперь запустите все, что не позволяет вам выбрать видеоустройство. Поскольку они, вероятно, жестко привязаны к использованию / dev / video0, это должно "просто работать".

По какой-то причине, по крайней мере для меня, он не будет переоценивать и смещать существующее видео0, он просто создает два файла (возможно, в соответствии с замыслом). Вы могли бы 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"

Теперь ваше USB-видео занимает / dev / video0 и / dev / video1. Вы также не потеряете свой встроенный модуль, так как теперь он находится по адресу /dev/video2.

.
0
ответ дан 13 April 2012 в 06:21

Другие вопросы по тегам:

Похожие вопросы: