Puncte:1

Logitech c930e focus revine la setările implicite chiar și cu reguli udev personalizate

drapel cn

OS: Ubuntu 20.04 (Focal Fossa)

Am cumpărat recent o cameră Logitech c930e pentru a fi utilizată în examenele supravegheate online, unde supraveghetorul poate solicita afișarea unui act de identitate emis de guvern. Camera are o funcționalitate de focalizare automată care poate focaliza inițial pe obiecte apropiate (dacă unul este plasat în fața camerei la pornire), dar odată ce își mută focalizarea pe obiecte îndepărtate, nu poate re-detecta și focaliza ulterior pe obiecte apropiate. plasat în fața camerei. Acest lucru face ca textul de pe actele de identitate emise de guvern plasate în fața camerei să devină ilizibil.

După câteva cercetări inițiale, se pare că pot instala v4l-utils și obțineți o listă de parametri pe care îi pot regla pe cameră după cum urmează (presupunând că nodul dispozitivului asociat este /dev/video1):

$ v4l2-ctl -d /dev/video1 --list-ctrls

Filtrarea rezultatului pentru a include numai opțiunile legate de focalizare oferă:

$ v4l2-ctl -d /dev/video1 --list-ctrls | focus grep
                 focus_absolute 0x009a090a (int): min=0 max=255 step=5 default=0 value=0 flags=inactiv
                     focus_auto 0x009a090c (bool): implicit=1 valoare=1

Asa de focus_auto este setat sa 1 și focus_absolut la 0 implicit, care poate fi văzut și rulând următoarele comenzi:

$ v4l2-ctl -d /dev/video1 --get-ctrl focus_auto
focus_auto: 1
$ v4l2-ctl -d /dev/video1 --get-ctrl focus_absolute
focus_absolut: 0

După câteva experimente manuale, se pare că focus_auto: 0 și focus_absolut: 75 oferă un echilibru bun de a face textul de prim-plan suficient de clar, fără a estompa prea mult obiectele îndepărtate:

$ v4l2-ctl -d /dev/video1 --set-ctrl focus_auto=0
$ v4l2-ctl -d /dev/video1 --set-ctrl focus_absolute=75

Așa că scriu un fișier de reguli udev /etc/udev/rules.d/90-logitech-c930e.rules pentru aplicarea acestor setări:

KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0843", RUN+="/usr/bin/v4l2- ctl -d $devnode --set-ctrl focus_auto=0", RUN+="/usr/bin/v4l2-ctl -d $devnode --set-ctrl focus_absolute=75"

Acest fișier poate fi găsit și pe GitHub

The idVendor: 046d și idProdus: 0843 am obtinut cu lsusb:

$ lsusb | grep Logitech
Bus 001 Dispozitiv 002: ID 046d:0843 Logitech, Inc. Webcam C930e

Apoi repornesc systemd-udevd.service:

$ sudo systemctl restart systemd-udevd.service

Deconectați camera și conectați-o din nou. În primele secunde, focus_auto este setat sa 0 și focus_absolut la 75 cum era de așteptat:

$ v4l2-ctl -d /dev/video1 --get-ctrl focus_auto
focus_auto: 0
$ v4l2-ctl -d /dev/video1 --get-ctrl focus_absolute
focus_absolut: 75

Dar după câteva zeci de secunde cel mult, setările revin la valorile implicite:

$ v4l2-ctl -d /dev/video1 --get-ctrl focus_auto
focus_auto: 1
$ v4l2-ctl -d /dev/video1 --get-ctrl focus_absolute
focus_absolut: 0

De ce ar putea fi asta? Este posibil să dezactivați acest comportament? Dacă da, cum?

Puncte:1
drapel cn

După câteva cercetări suplimentare, se pare că restabilirea automată a setărilor implicite este o caracteristică, nu o eroare (TM): https://www.reddit.com/r/obs/comments/fflg5g/logitech_cam_keeps_resetting_video_settings_back/

Așa că mi-a venit o idee: ce se întâmplă dacă aș putea seta focalizarea la fiecare câteva secunde sau cam asa ceva, pentru a preveni ca setările să revină la valorile implicite? Se pare că acest lucru este posibil, deși nu direct cu udev, deoarece este un proces de lungă durată și regulile udev se blochează. În schimb, am folosit o combinație de reguli udev, unități de dispozitiv systemd și unități de service.

Ideea la nivel înalt este următoarea:

  • Creați un fișier de reguli udev care etichetează systemd astfel încât unitatea de dispozitiv asociată să fie creată și setată SYSTEMD_WANTS pentru a indica un fișier de unitate șablon de serviciu, trecând numărul de dispozitiv minor șablonului
  • Unitatea de șablon de serviciu rulează un script, trecând argumentul său (numărul dispozitivului minor) scriptului
  • Scriptul folosește numărul minor de dispozitiv pentru a se referi la camera corectă și pentru a seta parametrii de focalizare în mod repetat pe acea cameră, la un interval de 5 secunde

Soluția detaliată poate fi găsită în esența asta.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.