Score:1

โฟกัสของ Logitech c930e กลับสู่การตั้งค่าเริ่มต้นแม้จะมีกฎ udev แบบกำหนดเอง

ธง cn

ระบบปฏิบัติการ: Ubuntu 20.04 (โฟกัส Fossa)

ฉันเพิ่งซื้อกล้อง Logitech c930e เพื่อใช้ในการสอบออนไลน์ที่มีผู้คุมสอบ ซึ่งเจ้าหน้าที่อาจขอให้แสดงบัตรประจำตัวที่ออกโดยรัฐบาล กล้องมีฟังก์ชันโฟกัสอัตโนมัติซึ่งสามารถโฟกัสวัตถุระยะใกล้ได้ในระยะแรก (หากวางไว้ด้านหน้ากล้องขณะที่เริ่มทำงาน) แต่เมื่อเปลี่ยนโฟกัสไปยังวัตถุที่อยู่ไกล กล้องจะไม่สามารถตรวจจับซ้ำและโฟกัสซ้ำที่วัตถุระยะใกล้ได้ในภายหลัง วางไว้หน้ากล้อง ซึ่งทำให้ข้อความบนบัตรประจำตัวที่ออกโดยหน่วยงานราชการที่วางอยู่หน้ากล้องอ่านไม่ออก

หลังจากการวิจัยเบื้องต้น ปรากฎว่าฉันสามารถติดตั้งได้ v4l-ยูทิลิตี้ และรับรายการพารามิเตอร์ที่ฉันสามารถปรับแต่งในกล้องได้ดังต่อไปนี้ (สมมติว่าโหนดอุปกรณ์ที่เกี่ยวข้องคือ /dev/video1):

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

การกรองเอาต์พุตเพื่อรวมเฉพาะตัวเลือกที่เกี่ยวข้องกับโฟกัสจะทำให้:

$ v4l2-ctl -d /dev/video1 --list-ctrls | เกรป โฟกัส
                 focus_absolute 0x009a090a (int) : min=0 max=255 step=5 default=0 value=0 flags=inactive
                     focus_auto 0x009a090c (บูล) : ค่าเริ่มต้น=1 ค่า=1

ดังนั้น โฟกัส_อัตโนมัติ ถูกตั้งค่าเป็น 1 และ focus_absolute ถึง 0 ตามค่าเริ่มต้น ซึ่งสามารถดูได้จากการรันคำสั่งต่อไปนี้:

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

หลังจากการทดลองด้วยตนเองดูเหมือนว่า โฟกัส_อัตโนมัติ: 0 และ focus_absolute: 75 ให้ความสมดุลที่ดีในการทำให้ข้อความระยะใกล้ชัดเจนพอในขณะที่ไม่เบลอวัตถุที่อยู่ห่างไกลมากเกินไป:

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

ดังนั้นฉันจึงเขียนไฟล์กฎ udev /etc/udev/rules.d/90-logitech-c930e.rules เพื่อใช้การตั้งค่าเหล่านี้:

KERNEL=="วิดีโอ[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"

ไฟล์นี้สามารถพบได้ บน GitHub

เดอะ รหัสผู้ขาย: 046d และ รหัสสินค้า: 0843 ฉันได้รับกับ แย่แล้ว:

$ lsusb | grep โลจิเทค
อุปกรณ์บัส 001 002: ID 046d:0843 Logitech, Inc. เว็บแคม C930e

จากนั้นฉันเริ่มต้นใหม่ systemd-udevd.service:

$ sudo systemctl รีสตาร์ท systemd-udevd.service

ถอดปลั๊กกล้องแล้วเสียบกลับเข้าไปใหม่ ในช่วงสองสามวินาทีแรก โฟกัส_อัตโนมัติ ถูกตั้งค่าเป็น 0 และ focus_absolute ถึง 75 อย่างที่คาดไว้:

$ v4l2-ctl -d /dev/video1 --get-ctrl focus_auto
โฟกัส_อัตโนมัติ: 0
$ v4l2-ctl -d /dev/video1 --get-ctrl focus_absolute
focus_absolute: 75

แต่หลังจากไม่เกินสองสามวินาที การตั้งค่าจะเปลี่ยนกลับเป็นค่าเริ่มต้น:

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

ทำไมถึงเป็นเช่นนั้น? เป็นไปได้ไหมที่จะปิดการทำงานนี้? ถ้าเป็นเช่นนั้นได้อย่างไร?

Score:1
ธง cn

หลังจากการค้นคว้าเพิ่มเติม ดูเหมือนว่าการคืนค่าการตั้งค่าเริ่มต้นโดยอัตโนมัติคือคุณสมบัติ ไม่ใช่ข้อบกพร่อง (TM): https://www.reddit.com/r/obs/comments/fflg5g/logitech_cam_keeps_resetting_video_settings_back/

ดังนั้นฉันจึงเกิดความคิด: จะเกิดอะไรขึ้นถ้าฉันสามารถตั้งโฟกัสทุกๆ 2-3 วินาทีเพื่อป้องกันไม่ให้การตั้งค่ากลับไปเป็นค่าเริ่มต้น ปรากฎว่าเป็นไปได้ แม้ว่าจะไม่ใช่โดยตรงกับ udev เนื่องจากเป็นกระบวนการที่ใช้เวลานานและกฎของ udev กำลังบล็อกอยู่ แต่ฉันใช้กฎ udev หน่วยอุปกรณ์ systemd และหน่วยบริการร่วมกันแทน

ความคิดระดับสูงมีดังนี้:

  • สร้างไฟล์กฎ udev ที่แท็ก systemd เพื่อสร้างและตั้งค่าหน่วยอุปกรณ์ที่เกี่ยวข้อง SYSTEMD_WANTS เพื่อชี้ไปที่ไฟล์หน่วยเทมเพลตบริการ โดยส่งหมายเลขอุปกรณ์รองไปยังเทมเพลต
  • หน่วยเทมเพลตบริการเรียกใช้สคริปต์ ส่งผ่านอาร์กิวเมนต์ (หมายเลขอุปกรณ์รอง) ไปยังสคริปต์
  • สคริปต์ใช้หมายเลขอุปกรณ์รองเพื่ออ้างอิงถึงกล้องที่ถูกต้องและตั้งค่าพารามิเตอร์การโฟกัสซ้ำๆ บนกล้องนั้น ในช่วงเวลา 5 วินาที

วิธีแก้ปัญหาโดยละเอียดสามารถพบได้ใน ส่วนสำคัญนี้.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา