วิธีการปิดการใช้งานเว็บแคมในตัวและยังสามารถใช้งานภายนอกได้


13

ฉันกำลังมองหาวิธีปิดใช้งานเว็บแคมที่รวมอยู่ในแล็ปท็อปของฉัน เว็บแคมใช้โมดูล uvcvideo แต่ฉันไม่ต้องการขึ้นบัญชีดำเพราะมันถูกใช้โดยเว็บแคมภายนอกที่ฉันมี

มีวิธีการปิดการใช้งานอุปกรณ์เองโดยไม่ต้องสัมผัสรายการโมดูลหรือไม่?

นี่คือวิธีแสดงเว็บแคมโดย lsusb ตัวแรกเป็นตัวรวม (มันถูกระบุโดยบางแอพเป็น BisonCam NB Pro) ตัวที่สองคือ Logitech C525 ภายนอก:

Bus 002 Device 004: ID 5986:0361 Acer, Inc 
Bus 003 Device 002: ID 046d:0826 Logitech, Inc. 

ฉันตรวจสอบ BIOS แล้ว - ไม่มีวิธีปิดการใช้งานเว็บแคม นอกจากนี้ฉันชอบที่จะเรียนรู้วิธีการปิดการใช้งานอุปกรณ์โดยใช้ ID อยู่แล้ว

ขอบคุณ!


ไขว้เรื่องนี้ใน LinuxQuestions ในที่สุดสิ่งที่ฉันทำคือการแฮ็กโมดูลเคอร์เนล uvc_driver.c โดยการบังคับให้เกิดข้อผิดพลาดเมื่อพบอุปกรณ์นี้โดยเฉพาะ นี่ไม่ใช่วิธีการแก้ปัญหา แต่เป็นการแก้ปัญหาที่สกปรก แต่ใช้งานได้สำหรับฉัน ฉันอธิบายไว้ที่นี่: linuxquestions
AtomHeartFather

คำตอบ:


14

มันค่อนข้างง่าย การทำงานอย่างหนักคือการหาเส้นทางไปยังอุปกรณ์ USB เราต้องเริ่มต้นด้วยการค้นหาอุปกรณ์ที่เราต้องการปิดการใช้งาน เราสามารถทำได้ด้วยlsusb:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0402:5602 ALi Corp. M5602 Video Camera Controller
Bus 001 Device 003: ID 045e:0723 Microsoft Corp. LifeCam VX-7000 (UVC-compliant)

เปลี่ยน 1-6 เป็นพอร์ตอุปกรณ์ของคุณเพื่อปิดใช้งาน พอร์ตมักไม่ได้เป็นตรรกะ (เป็นแบบกายภาพ) แต่คุณสามารถรับการแมปพอร์ตlsusb -tได้ เมื่อคุณคิดว่าคุณมีคุณสามารถทดสอบกับ:

cat /sys/bus/usb/devices/1-6/id{Vendor,Product} 

สิ่งนี้ให้ฉัน0402และ5602ผู้ขายและรหัสผลิตภัณฑ์สำหรับอุปกรณ์ที่เหมาะสม (ตามที่ระบุไว้ในlsusb)

ตอนนี้เราได้พบแล้วการปิดใช้งานง่าย:

echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue

หลังจากทำให้แน่ใจว่าทำงานได้ตามที่ต้องการแล้วให้ทำการโหลดทุกครั้งที่เริ่มต้น (ตัวอย่างเช่นนิ้ว/etc/rc.local)


1
น้ำยาทำความสะอาดที่ยอดเยี่ยม ขอบคุณมากสำหรับการแบ่งปัน!
AtomHeartFather

1
เทคนิคนี้ไม่ทำงานอีกต่อไปใน 14.10 ไม่มีไฟล์ "bConfigurationValue" อยู่และหากมีความพยายามที่จะเขียนหนึ่งไฟล์ในฐานะผู้ใช้หรือรูทการอนุญาตจะถูกปฏิเสธ
lysdexia

ฉันไม่เข้าใจว่า 'เปลี่ยน 1-6 เป็นพอร์ตอุปกรณ์ของคุณ' หมายถึงอะไร ฉันไม่พบ dir ชื่อ 1-6
surajck

ใน Ubuntu 14.04 แม้ว่าฉันจะทำอย่างไรecho "0" > /sys/bus/usb/devices/1-6/bConfigurationValueกับ sudo สิ่งนี้ไม่ทำงาน ค่าไม่ได้อยู่ที่นั่นไฟล์ไม่มีอะไรเลย เว็บแคมยังใช้งานได้
soham

โอเคมันใช้ได้หลังจากที่ฉันเพิ่มecho "0" > /sys/bus/usb/devices/1-6/bConfigurationValueบรรทัดไป/etc/rc.localแล้ว
soham

6

@surjack: 1-6ขึ้นอยู่กับการจับคู่พอร์ตของคุณ ถ้าคุณพิมพ์คุณจะได้รับมันแล้วเปรียบเทียบกับการส่งออกของlsusb -t lsusbสำหรับฉันฉันได้รับผลลัพธ์ต่อไปนี้:

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 5986:0525 Acer, Inc 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 012: ID 413c:2107 Dell Computer Corp. 

และ

lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Video, Driver=uvcvideo, 5000M
    |__ Port 1: Dev 2, If 1, Class=Video, Driver=uvcvideo, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 9, If 0, Class=Vendor Specific Class, Driver=hdm_usb, 480M
    |__ Port 4: Dev 10, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 3: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M

ตอนนี้หา Bus ที่ถูกต้องซึ่ง04ในกรณีของฉันเพราะAcer, Incมันคือกล้อง Bus 04.Port 1แสดงให้เห็นว่าการทำแผนที่พอร์ตกล้องตั้งอยู่ที่ วิธีการแทนการใช้นี้ฉันต้องใช้1-6 4-1ฉันไม่ใช่ผู้เชี่ยวชาญ Linux / Ubuntu แต่นี่ทำให้ฉันรู้สึกว่าคุณต้องใช้Bus-Portและใช้ตัวเลขเพียงอย่างเดียว ถ้าคุณต้องการให้ 100% ใช้catคำสั่งตามที่อธิบายไว้:

cat /sys/bus/usb/devices/<Bus>-<Port>/id{Vendor,Product} 

และเปรียบเทียบกับ lsusb

ในกรณีของฉัน:

cat /sys/bus/usb/devices/4-1/id{Vendor,Product}
5986
0525

ซึ่งเป็นเหมือนกันกับการส่งออก lsusb 5986:0525นี้:

ตอนนี้คุณพบเว็บแคมภายในแล้ว

แต่น่าเสียดาย lysdexia ที่ถูกต้องและคำสั่ง echo Permission deniedไม่ทำงานเพราะ

มีวิธีแก้ไขปัญหาอื่นอีกหรือไม่


3
sudo -iecho "0" > ...และหลังจากนั้น
sygi

หรือsudo echo "0" > sudo /sys/bus/usb/devices/...
soham

0

หากคุณต้องการเปิดใช้งานเฉพาะอุปกรณ์ภายนอกเมื่อต่อพ่วง แต่ให้เปิดใช้งานอุปกรณ์ภายในหากไม่ได้เชื่อมต่ออุปกรณ์ภายนอกไว้นี่เป็นสคริปต์สำหรับสิ่งนั้น มันขึ้นอยู่กับคำตอบของ Wildneuro แต่สามารถหาเส้นทางอุปกรณ์สำหรับคุณที่ได้รับ ID

ฉันใช้เพราะแอพบางตัวที่ฉันพึ่งพาไม่ได้มีวิธีในการเลือกกล้องที่คุณต้องการได้อย่างง่ายดาย คุณสามารถปรับแต่งได้อย่างง่ายดายด้วยรหัสกล้องของคุณเอง (จากlsusb)

รหัสที่นี่: https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


เนื่องจากเนื้อหาของลิงก์สามารถเปลี่ยนแปลงได้โปรดเพิ่มเนื้อหาที่เกี่ยวข้องของหน้าที่ลิงก์ไว้ที่นี่
ชัยต. เร็กซ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.