Zuerst die schlechte Nachricht: Derzeit gibt es keine integrierte Lösung, um dies in jeder mir bekannten Distribution zu tun.
Die gute Nachricht ist, dass eine solche Lösung sehr einfach zu implementieren ist und für viele ähnliche Probleme angepasst werden kann: Wir brauchen nur etwas Udev und Bash.
Erstens benötigen wir eine programmatische (script-freundliche) Methode, um diese Einstellungen festzulegen. Mein Favorit ist v4l2ctrl
, da er V4L2-Konfigurationen speichern und bei Bedarf wiederherstellen kann. Zum Beispiel:
- Ändern Sie zunächst die Kameraeinstellungen mit einem beliebigen Programm. Ich empfehle qv4l2 wirklich dafür, es ist großartig.
Speichern Sie dann die Kameraeinstellungen in einer Datei. (
-d /dev/video0
ist optional, aber nützlich, wenn Sie mehr als eine Kamera haben.)v4l2ctrl -d /dev/video0 -s camera-settings.txt
Wenn Sie den Stecker ziehen und erneut anschließen, gehen die Einstellungen verloren. Jetzt können wir sie wiederherstellen:
v4l2ctrl -d /dev/video0 -l camera-settings.txt
Sobald es funktioniert, ist es an der Zeit, es mit udev zu automatisieren. Dazu erstellen wir eine Regeldatei, die der Kamera entspricht. Die Datei kann aufgerufen werden /etc/udev/rules.d/99-v4l2-default-settings.rules
und etwa Folgendes enthalten:
SUBSYSTEM=="video4linux", ATTR=="HD Pro Webcam C920", RUN+="/etc/camera-defaults/udev-hook.sh"
Das obige wird als root das Skript ausführen /etc/camera-defaults/udev-hook.sh
, das wir in Kürze erstellen werden, wenn ein Gerät des Subsystems mit dem video4linux
Herstellernamen "HD Pro Webcam C920" erkannt oder entfernt wird.
Wir könnten unserer Regel viele verschiedene Filter hinzufügen. Sie können udevadm info -a -p $(udevadm info -q path -n /dev/video0)
alle möglichen Variablen für das Gerät sowie für seine übergeordneten Geräte abrufen.
Erstellen Sie schließlich das Skript. Hier ist etwas einfaches, das funktionieren wird. Erteilen Sie ihm Ausführungsberechtigungen!
#!/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
Verschieben Sie camera-settings.txt
in das angegebene Verzeichnis, ziehen und wieder einstecken. Die Einstellungen aus dieser Datei sollten erfolgreich wiederhergestellt worden sein.
In Zukunft müssen Sie Ihre Einstellungen dauerhaft speichern. Verwenden Sie Ihr bevorzugtes Programm, um sie zu optimieren, und führen Sie dann Folgendes aus:
v4l2ctrl -s /etc/camera-defaults/camera-settings.txt