एकीकृत वेबकैम को कैसे अक्षम करें और अभी भी एक बाहरी का उपयोग करने में सक्षम हो


13

मैं अपने लैपटॉप में एकीकृत वेबकैम को अक्षम करने का एक तरीका ढूंढ रहा हूं। वेब कैमरा uvcvideo मॉड्यूल का उपयोग कर रहा है, लेकिन मैं इसे ब्लैक लिस्ट नहीं करना चाहता क्योंकि इसका उपयोग मेरे पास किसी बाहरी वेब कैमरा द्वारा भी किया जा रहा है।

क्या मॉड्यूल सूची को छूने के बिना डिवाइस को स्वयं अक्षम करने का कोई तरीका है?

यह कैसे वेबकैम lsusb द्वारा सूचीबद्ध है। पहला एक एकीकृत एक है (इसे कुछ ऐप्स द्वारा बिसनकेम एनबी प्रो के रूप में पहचाना जाता है), दूसरा एक बाहरी लॉजिटेक 525 है:

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

मैंने पहले से ही BIOS की जांच कर ली है - वहां से वेबकैम को अक्षम करने का कोई तरीका नहीं है। इसके अलावा मैं आईडी द्वारा डिवाइस को निष्क्रिय करने का तरीका सीखना पसंद करूंगा।

धन्यवाद!


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 19

1
यह तकनीक अब 14.10 में काम नहीं करती है। कोई फ़ाइल "bConfigurationValue" मौजूद नहीं है, और यदि कोई उपयोगकर्ता या रूट के रूप में एक लिखने का प्रयास करता है, तो अनुमति से इनकार किया जाता है।
lysdexia

मुझे समझ में नहीं आया कि '1-6 को अपने डिवाइस पोर्ट में बदलें' का क्या मतलब है। मुझे
सूरजेक

उबंटू 14.04 में, भले ही मैं सूडो के echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValueसाथ करता हूं , यह काम नहीं करता है। मान वहाँ नहीं रहता है, फ़ाइल में कुछ भी नहीं है। वेबकैम अभी भी काम करता है।
सोहम

ठीक है, यह मेरे द्वारा echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValueलाइन जोड़ने के बाद काम करता है /etc/rc.local
सोहम

6

@ सुरजैक: 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

अब बस सही बस खोजें जो 04मेरे मामले में है क्योंकि Acer, Incकैमरा है। पोर्ट मैपिंग से पता चलता है कि कैमरा किस स्थान पर स्थित है Bus 04.Port 1। इसका मतलब उपयोग करने के बजाय 1-6मुझे उपयोग करना है 4-1। मैं लिनक्स / उबंटू विशेषज्ञ नहीं हूं लेकिन इससे मुझे यह आभास होता है कि आपको 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 सही है और गूंज कमांड काम नहीं करता है क्योंकि Permission denied

क्या कोई और उपाय उपलब्ध है?


3
sudo -iऔर बाद में echo "0" > ...
sygi

याsudo echo "0" > sudo /sys/bus/usb/devices/...
सोहम

0

यदि आप इसे संलग्न करते समय केवल बाहरी एक को सक्षम करना चाहते हैं, लेकिन क्या आंतरिक एक सक्षम है यदि बाहरी संलग्न नहीं है, तो इसके लिए एक स्क्रिप्ट है। यह वाइल्डनुरो के उत्तर पर आधारित है, लेकिन आपके द्वारा दिए गए आईडी के लिए डिवाइस पथ का पता लगा सकता है।

मैं इसका उपयोग करता हूं क्योंकि कुछ एप्लिकेशन जिन पर मैं निर्भर करता हूं, वे आसानी से अपने पसंदीदा कैमरे को चुनने का एक तरीका प्रदान नहीं करते हैं। आप आसानी से अपने खुद के कैमरा आईडी (से lsusb) के साथ अनुकूलित कर सकते हैं ।

यहाँ कोड: https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


चूंकि लिंक की सामग्री बदल सकती है, कृपया यहां लिंक किए गए पृष्ठ की प्रासंगिक सामग्री जोड़ें।
चाई टी। रेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.