Во-первых, плохая новость: в настоящее время в любом известном мне дистрибутиве нет встроенного решения для этого.
Хорошей новостью является то, что такое решение очень просто реализовать и может быть адаптировано для многих подобных проблем: нам нужно всего лишь использовать немного udev и bash.
Во-первых, нам нужен программный (дружественный к сценариям) способ установки этих настроек. Мой любимый v4l2ctrl
вариант, так как он может сохранять конфигурации V4L2, а затем восстанавливать их по требованию. Например:
- Сначала измените настройки камеры с помощью любой понравившейся программы. Я действительно рекомендую qv4l2 для этого, это круто.
Затем сохраните настройки камеры в файл. (
-d /dev/video0
необязательно, но полезно, если у вас более одной камеры.)v4l2ctrl -d /dev/video0 -s camera-settings.txt
Если вы отключите и подключите снова, настройки будут потеряны, но теперь мы можем восстановить их:
v4l2ctrl -d /dev/video0 -l camera-settings.txt
Как только вы это настроите, пришло время автоматизировать это с помощью udev. Для этого мы создадим файл правил по нашему вкусу, который соответствует камере. Файл может быть вызван /etc/udev/rules.d/99-v4l2-default-settings.rules
и содержать что-то вроде этого:
SUBSYSTEM=="video4linux", ATTR=="HD Pro Webcam C920", RUN+="/etc/camera-defaults/udev-hook.sh"
Вышеприведенный код запускает в качестве корневого сценария, /etc/camera-defaults/udev-hook.sh
который мы вскоре создадим при video4linux
обнаружении или отключении устройства подсистемы, имя производителя которого «HD Pro Webcam C920».
Мы могли бы добавить много разных фильтров к нашему правилу. Вы можете использовать, udevadm info -a -p $(udevadm info -q path -n /dev/video0)
чтобы получить все возможные переменные для устройства, а также для его родительских устройств.
Наконец, создайте сценарий. Вот что-то простое, что будет работать. Дайте ему разрешение на исполнение!
#!/bin/bash set -eu # Useful for debugging, if you want to check what variables are available: # set > /tmp/vars if [ "$ACTION" == "add" ]; then v4l2ctrl -d "$DEVNAME" -l "/etc/camera-defaults/camera-settings.txt" fi
Перейдите camera-settings.txt
в указанный каталог, отключите и снова подключите. Настройки из этого файла должны были быть успешно восстановлены.
В любое время в будущем вам нужно постоянно сохранять ваши настройки, используйте вашу любимую программу, чтобы настроить их, а затем запустите:
v4l2ctrl -s /etc/camera-defaults/camera-settings.txt