• 7 Posts
  • 160 Comments
Joined 1 year ago
cake
Cake day: June 17th, 2023

help-circle

















  • C920 is good enough for meetings. I solved the focus problem using the traditional Linux method of writing of udev rule which launches a timer when it’s plugged in, which periodically launches a systemd service, which runs a bash script to make sure it self-corrects at least every 5 minutes.

    cat /etc/udev/rules.d/90-video4linux-webcam-config.rules
    KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0892", TAG+="systemd", RUN{program}="/bin/systemctl start video4linux-webcam-config@$env{MINOR}.timer" ENV{SYSTEMD_WANTS}="video4linux-webcam-config@$env{MINOR}.timer"
    
    ❯ cat /etc/systemd/system/[email protected]
    # This file is managed by ansible-video4linux-webcam-config
    [Unit]
    Description=Periodically restart webcam config service
    
    [Timer]
    # Unit= defaults to service matching .timer name
    OnActiveSec=30
    
    [Install]
    WantedBy=timers.target
    
    ❯ cat /etc/systemd/system/[email protected]
    [Unit]
    Description=Set webcam configs
    
    [Service]
    Type=oneshot
    ExecStart=/bin/bash -c "/usr/local/bin/video4linux-webcam-config.sh %I"
    
    [Install]
    WantedBy=multi-user.target
    
    ❯ cat /usr/local/bin/video4linux-webcam-config.sh
    #!/bin/bash
    
    if [[ $# -ne 1 ]]; then
      echo "Expected minor device number as sole argument" 1>&2
      exit 1
    fi
    
       v4l2-ctl -d $1 --set-ctrl focus_automatic_continuous=0
      v4l2-ctl -d $1 --set-ctrl focus_absolute=0