Entegre web kamerası nasıl devre dışı bırakılır ve harici bir web kamerası hala kullanılabilir


13

Dizüstü bilgisayarıma entegre olan web kamerasını devre dışı bırakmanın bir yolunu arıyorum. Web kamerası uvcvideo modülünü kullanıyor ancak aynı zamanda sahip olduğum harici bir web kamerası tarafından kullanıldığından kara listeye almak istemiyorum.

Modüller listesine dokunmadan cihazın kendisini devre dışı bırakmanın herhangi bir yolu var mı?

Web kameraları lsusb tarafından listelenir. Birincisi entegre bir uygulamadır (Bazı uygulamalar tarafından BisonCam NB Pro olarak tanımlanır), ikincisi harici Logitech C525:

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

BIOS'u zaten kontrol ettim - web kamerasını oradan devre dışı bırakmanın bir yolu yok. Ayrıca cihazı nasıl ID ile devre dışı bırakacağımı öğrenmek isterim.

Teşekkürler!


LinuxQuestions'da bunu çapraz olarak yayınladık. Sonunda ne yaptım bu özel cihaz bulunduğunda bir hata zorlayarak uvc_driver.c çekirdek modülünü kesmek oldu. Bu gerçekten bir çözüm değil, kirli bir çözüm, ama benim için çalışıyor. Ben burada tarif: linuxquestions
AtomHeartFather

Yanıtlar:


14

Oldukça basit. Zor iş, USB cihazının yolunun ne olduğunu bulmaktır. Hangi cihazı devre dışı bırakmak istediğimizi bularak başlamalıyız. Bunu şu şekilde yapabiliriz 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'yı devre dışı bırakılacak cihaz bağlantı noktalarınızla değiştirin. Bağlantı noktası genellikle mantıklı değildir (fizikseldir), ancak bağlantı noktası eşleştirmesi alabilirsiniz lsusb -t. Sahip olduğunuzu düşündüğünüzde, aşağıdakilerle test edebilirsiniz:

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

Bu bana 0402ve 5602doğru cihaz için satıcı ve ürün kimliklerini verir (listelendiği gibi lsusb).

Şimdi bulduk, kapatmak basit:

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

İstendiği gibi çalıştığından emin olduktan sonra, her başlatmayı yüklemesini sağlayın (örneğin, içinde /etc/rc.local.)


1
Parlak, temiz bir çözüm. Bunu paylaştığın için çok teşekkür ederim!
AtomHeartFather

1
Bu teknik artık 14.10'da işe yaramıyor gibi görünüyor. "BConfigurationValue" dosyası yok ve dosyalardan birini kullanıcı veya kök olarak yazmaya çalışırsa, izin reddedilir.
lysdexia

"Cihaz bağlantı noktanızdaki 1-6 numaralı değişimin" ne anlama geldiğini anlamadım. 1-6 adlı bir
direk

Ubuntu 14.04'te, echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValuesudo ile yapsam bile , bu çalışmaz. Değer orada kalmaz, dosya hiçbir şey içermez. Web kamerası hala çalışıyor.
soham

Tamam, ben echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValuesatır ekledikten sonra çalışır /etc/rc.local.
soham

6

@surjack: 1-6liman eşlemenize bağlıdır. Eğer yazarsanız lsusb -tonu alırsınız ve çıktısıyla karşılaştırırsınız lsusb. Benim için aşağıdaki çıktıları alıyorum:

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. 

ve

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

Şimdi sadece 04benim durumumda doğru Otobüs bulmak çünkü Acer, Inckamera. Port eşleme, kameranın bulunduğu yeri gösterir Bus 04.Port 1. Yani kullanmak yerine kullanmak 1-6zorundayım 4-1. Ben bir Linux / Ubuntu uzmanı değilim ama bu bana Bus-Portsayıları kullanmanız ve kullanmanız gerektiği izlenimini veriyor . % 100 emin olmak istiyorsanız catkomutu açıklandığı gibi kullanın :

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

ve lsusb ile karşılaştırın.

Benim durumumda:

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

ki lsusb çıkışına eşit olduğu: 5986:0525.

Artık dahili web kameranızı buldunuz.

Fakat ne yazık ki lysdexia haklı ve echo komutu çalışmıyor çünkü Permission denied.

Başka bir çözüm var mı?


3
sudo -ive daha sonra echo "0" > ....
sygi

Veyasudo echo "0" > sudo /sys/bus/usb/devices/...
soham

0

Eklendiğinde yalnızca harici olanı etkinleştirmek, ancak harici olanı bağlı değilse dahili olanı etkinleştirmek istiyorsanız, işte bunun için bir komut dosyası. Wildneuro'nun cevabına dayanıyor, ancak kimliğinizi verdiğiniz cihaz yolunu bulabilir.

Kullanıyorum çünkü bağımlı olduğum bazı uygulamalar tercih ettiğiniz kamerayı kolayca seçmenin bir yolunu sunmuyor. Kendi kamera kimliklerinizle (içinden lsusb) kolayca özelleştirebilirsiniz .

Buradan kodlayın: https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


Bağlantıların içeriği değişebileceğinden, lütfen bağlantılı sayfanın alakalı içeriğini buraya ekleyin.
Chai T. Rex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.