Primeiro, a má notícia: atualmente não há solução integrada para fazer isso em qualquer distro que eu conheça.
A boa notícia é que essa solução é muito fácil de implementar e pode ser adaptada para muitos problemas semelhantes: só precisamos usar um pouco de udev e bash.
Primeiro, precisamos de uma maneira programática (amigável ao script) para definir essas configurações. Meu favorito é v4l2ctrl
, pois ele pode salvar as configurações do V4L2 e restaurá-las sob demanda. Por exemplo:
- Primeiro, altere as configurações da sua câmera com qualquer programa de sua preferência. Eu realmente recomendo qv4l2 para isso, é incrível.
-
Em seguida, salve as configurações da câmera em um arquivo. (
-d /dev/video0
é opcional, mas útil se você tiver mais de uma câmera.)v4l2ctrl -d /dev/video0 -s camera-settings.txt
-
Se você desconectar e conectar novamente, as configurações serão perdidas, mas agora podemos recuperá-las:
v4l2ctrl -d /dev/video0 -l camera-settings.txt
Uma vez que você trabalhe assim, é hora de automatizá-lo com o udev. Para isso, vamos criar um arquivo de regras do nosso gosto que combine com a câmera. O arquivo pode ser chamado de /etc/udev/rules.d/99-v4l2-default-settings.rules
e contém algo assim:
SUBSYSTEM=="video4linux", ATTR{name}=="HD Pro Webcam C920", RUN+="/etc/camera-defaults/udev-hook.sh"
O texto acima executará como root o script /etc/camera-defaults/udev-hook.sh
que será criado em breve sempre que um dispositivo do subsistema video4linux
cujo nome do fabricante for "HD Pro Webcam C920" for detectado ou desconectado.
Poderíamos adicionar muitos filtros diferentes à nossa regra. Você pode usar udevadm info -a -p $(udevadm info -q path -n /dev/video0)
para obter todas as variáveis possíveis para o dispositivo, bem como para seus dispositivos pai.
Por fim, crie o script. Aqui está algo simples que irá funcionar. Conceder permissões de execução!
#!/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
Mova camera-settings.txt
para o diretório especificado, desconecte e conecte novamente. As configurações desse arquivo devem ter sido restauradas com sucesso.
A qualquer momento, no futuro, você precisará salvar suas configurações permanentemente, usar seu programa favorito para ajustá-las e, em seguida, executar:
v4l2ctrl -s /etc/camera-defaults/camera-settings.txt