Assign webcam to в specific/dev/video#

I have three webcams on my Ubuntu server 14.04. The output of lsusb:

Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp.
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 003: ID 2537:1066
Bus 004 Device 002: ID 05e3:0616 Genesys Logic, Inc.
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 1871:0101 Aveo Technology Corp. UVC camera (Bresser microscope)
Bus 003 Device 004: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 003 Device 003: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 005: ID 046d:0807 Logitech, Inc. Webcam B500
Bus 001 Device 004: ID 1871:0101 Aveo Technology Corp. UVC camera (Bresser microscope)
Bus 001 Device 003: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I want to assign в specific/dev/video# to each one. I have read that I have to верьте тебе в udev в задницу in/etc/udev/rules.d/, but most of what гve read seems outdated and I don't want to вызвал problems to my server. I was thinking of creating в 25-name-video-devices.rules containing the following:

SUBSYSTEM=="video4linux", BUS=="usb", SYSFS{idVendor}=="1871", SYSFS{idProduct}=="0101", NAME="video10"
SUBSYSTEM=="video4linux", BUS=="usb", SYSFS{idVendor}=="1871", SYSFS{idProduct}=="0101", NAME="video11"
SUBSYSTEM=="video4linux", BUS=="usb", SYSFS{idVendor}=="046d", SYSFS{idProduct}=="0807", NAME="video12"

The additional problem I have is that 2 of the 3 webcams seem identical (although they я пахал not, they пахал bought from ebay and they пахала used to монитор в different площадь). So what would be the задницы for my вступил в брак? Thanks

7
задан 31 December 2015 в 02:57

1 ответ

Решение без правил Udev

Существует шанс, что video4linux уже предоставил Вам стабильные имена устройств. Можно хотеть проверить каталоги /dev/v4l/by-id/ и /dev/v4l/by-path/ для этого. Подключите свои устройства к различным USB-портам и сравните созданные имена устройств, чтобы удостовериться, что они действительно стабильны.

Решение с правилами Udev

Иначе это зависит от того, имеют ли Ваши два на вид идентичных устройства действительно, по крайней мере, другой порядковый номер, который доступен udev. Можно узнать это при помощи корректного числа “Шины” и “Устройства” от Вашего lsusb вывод в следующей команде:

udevadm info --attribute-walk /dev/bus/usb/003/005

Если существует некоторый вывод как следующее в первом блоке пар ключ/значение, и сериал отличается между этими двумя устройствами, то можно использовать это в правилах udev:

ATTR {последовательный} == "68974689267119892"

Ваши правила udev могли затем быть похожими на это:

SUBSYSTEM=="usb", ATTR{serial}=="68974689267119892", ATTR{idVendor}=="1871", ATTR{idProduct}=="0101", NAME="video10"
SUBSYSTEM=="usb", ATTR{serial}=="12345698798725654", ATTR{idVendor}=="1871", ATTR{idProduct}=="0101", NAME="video11"
SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="0807", NAME="video12"

Если нет никакого сериала (или подобен уникальный) число, то я только вижу следующую возможность: необходимо было бы удостовериться, что устройства всегда остаются подключенными в тех же USB-портах. В этом случае Вы могли использовать правила как они:

SUBSYSTEM=="usb", KERNEL=="2-3", ATTR{idVendor}=="1871", ATTR{idProduct}=="0101", NAME="video10"
SUBSYSTEM=="usb", KERNEL=="2-4", ATTR{idVendor}=="1871", ATTR{idProduct}=="0101", NAME="video11"
SUBSYSTEM=="usb", KERNEL=="2-2", ATTR{idVendor}=="046d", ATTR{idProduct}=="0807", NAME="video12"

Необходимо было бы узнать который KERNEL Идентификаторы для использования путем нового выполнения udevadm команда упомянута выше и поиск KERNEL пара ключ/значение.

Незначительные примечания

Может быть более хорошо/лучше только создать новые символьные ссылки вместо новых имен устройств и возможно даже группировку их в соответствии с общим каталогом:

SUBSYSTEM=="usb", KERNEL=="2-3", ATTR{idVendor}=="1871", ATTR{idProduct}=="0101", SYMLINK+="foo/video10"

Предыдущее правило, например, создало бы символьную ссылку устройства в /dev/foo/video10.

Я, вероятно, также просто назвал бы файл правил name-video-devices.rules, т.е. пропуск ведущего числа. Вероятно, не имеет значения, когда правила выполняются, таким образом, никакая потребность использовать (довольно высокий) приоритет 25.

7
ответ дан 23 November 2019 в 06:36

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

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