Делаем usb веб камеру уникальной для Raspberry Pi с помощью символьной ссылки (udev rules)

zCx1wSqT2pQ


Уважаемые друзья, примите мои самые искренние и теплые поздравления! После длительной паузы пришло наконец время и (надеюсь) возможность для того, чтобы воскресить и освежить этот блог. Спасибо всем посетителям, особенно благодарю за ваши комментарии, приятно, что проект имеет отклик. Очень извиняюсь за массу комментариев, которые оставил без ответа (времени катастрофически не хватало даже на банальную пибликацию в блог 🙁 ). Порадовали (неспамерские!) Комментарии иностранных посетителей.
Итак .. столкнулся я однажды с интересной задачкой: подключить несколько usb вебок к малинке и в определенный момент из скрипта запускать какую-то конкретную из них. “В чем же проблема?” – Скажет кто-то, не вы, вы же понимаете 😉 А проблема как ни странно в линуХе.

Так вот в линуксе при загрузке веб-камер им случайно присваиваются имена вида /dev/video[0..n]. Ключевое слово СЛУЧАЙНО. То есть если скрипт предназначен запускать камеру, скажем video0 (формат обращения по названию устройства присущ большинству программ для работы с вебкам в терминале под линуксом), то все будет хорошо и замечательно. Ровно до тех пор, пока в системе не появятся новые камеры. Тогда наша video0 может случайно стать и video1, и video2, и videoN … Рекомендуемое решение заключается в создании символических ссылок с использованием правил udev. В таком случае мы будем обращаться из скрипта к камере по уникальной ссылке, которая завязана на уникальных (относительно) ID производителя и модели вебкамеры. Относительно потому, что подключал я к малине ОГРОМНОЕ количество юсб камер и были у меня странные (по крайней мере для меня) ситуации, когда в моем Распбиане совершенно разные камеры в lsusb имели полностью идентичны ID. Может я чего не знаю или не понимаю, и если с вами такого нет, то жду издевательства в комментариях: Р

Так что не будем тянуть кота за усы 🙂 Все элементарно просто:
1. Подключаем камеру к малине и смотрим с помощью lsusb на id. id будет иметь вид
ID <05a9:4519. Код до двоеточия это шифр производителя, код после – шифр продукта.
2. Редактируем (создаем) /etc/udev/rules.d/83-webcam.rules с таким содержанием

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05a9", ATTRS{idProduct}=="4519", SYMLINK+="video-cam1"

(детали ТЫЦ)

меняем:
ATTRS{idVendor}==”айди производителя вашей камеры”
ATTRS{idProduct}==”айди продукта вашей камеры”

получаем:
SYMLINK+=”video-cam1″ – символическую ссылку на камеру. Теперь можем обращаться к камере не по videoN, а по уникальному video-cam1. Данная камера в системе всегда будет video-cam1. Называть можете иначе. Процедура повторяется для каждой следующей камеры. Если чего-то непонятно есть комментарии. Теперь буду здесь активным.
Спасибо, что дочитали 🙂

Источник: многострадальный собственный опыт

Оставить ответ

Обязательные поля помечены*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.