USB-камери
Камери USB Video Class (UVC), які виявляє через V4L2 провайдер
camera.v4l2. Після кожної uevent video4linux виконується повторне сканування.
Провайдер обход ить /sys/class/video4linux і залишає лише вузли, що мають предка
USB, тож вузли платформи та ISP ніколи не відкриваються. Кожен кандидат відкривається з прапорцями
O_RDONLY | O_NONBLOCK і отримує лише ioctl-запити (VIDIOC_QUERYCAP,
VIDIOC_ENUM_FMT, VIDIOC_ENUM_FRAMESIZES, VIDIOC_ENUM_FRAMEINTERVALS).
Вузли лише з метаданими, лише для виведення та типу memory-to-memory відкидаються після
VIDIOC_QUERYCAP, тож UVC-камера з вузлом метаданих з’являється один раз.
Ідентифікація
id — це camera:v4l2:<16 hex digits>, хеш FNV-1a від identity.stable_key
(sysfs:<USB topology>:interface=<bInterfaceNumber>:index=<node index>). Він
не змінюється після повторного підключення до того самого порту та перенумерації /dev/videoN. Інший
порт означає іншу камеру, а однакові камери в різних портах
мають різні id.
Поля
| Поле | Наявність | Значення |
|---|---|---|
type | завжди | camera |
id | завжди | Див. вище |
backend | завжди | v4l2 (USB-камера) |
model | якщо відомо | Рядок USB product, інакше назва картки (card) драйвера |
device_path | завжди | /dev/videoN; лише для маршрутизації, не для ідентифікації |
by_id_path | за наявності посилання udev | Посилання /dev/v4l/by-id/..., яке вказує на device_path |
identity | завжди | stable_key, topology, interface, node_index і, якщо USB-пристрій їх повідомляє, vendor_id, product_id, serial, manufacturer та speed (швидкість із sysfs у Мбіт/с у тому вигляді, як її виводить ядро, наприклад "480") |
availability | завжди | {"state": "unknown", "reason": ...}: виявлення ніколи не відкриває потік, тому не може визначити, чи використовується камера |
modes | завжди | Що камера може виводити; див. нижче |