Я только недавно купил новую веб-камеру. Это питание от USB. По личным причинам я не хочу использовать встроенную веб-камеру, поставляемую с моим нетбуком.
Я хочу использовать этот новый. Я люблю сочувствие, это отличный клиент чата. Но я не могу переключить мою стандартную веб-камеру в сочувствии со встроенной веб-камеры на ту, которую я только что купил.
Итак, есть ли способ заставить сочувствие использовать веб-камеру с питанием от USB, а не встроенную веб-камеру?
Давайте исключим некоторые варианты.
Я попробовал метод gstreamer-properties, root и обычный пользователь. Бесполезно
Я также попробовал метод редактора конфигурации, пытаясь вручную изменить настройки веб-камеры по умолчанию.
Я также пытался внести в черный список встроенный драйвер веб-камер, но моя вторая веб-камера также запускает тот же драйвер, так что этот вариант был бессмысленным, поскольку он отключил обе веб-камеры вместо той, которая мне была нужна использование.
У меня 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.
.