Pertanyaan Cara menonaktifkan webcam terintegrasi dan masih bisa menggunakan yang eksternal


Saya mencari cara untuk menonaktifkan webcam yang terintegrasi ke laptop saya. Webcam menggunakan modul uvcvideo tetapi saya tidak ingin memasukkannya ke daftar hitam karena ini juga digunakan oleh webcam eksternal yang saya miliki.

Adakah cara menonaktifkan perangkat itu sendiri tanpa menyentuh daftar modul?

Ini adalah bagaimana webcam terdaftar oleh lsusb. Yang pertama adalah yang terintegrasi (Ini diidentifikasi oleh beberapa aplikasi sebagai BisonCam NB Pro), yang kedua adalah Logitech C525 eksternal:

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

Saya sudah memeriksa BIOS - tidak ada cara untuk menonaktifkan webcam dari sana. Selain itu saya ingin belajar cara menonaktifkan perangkat dengan ID pula.

Terima kasih!


12
2017-09-17 11:13


asal


Buat silang ini di LinuxQuestions. Apa yang akhirnya saya lakukan adalah meretas modul kernel uvc_driver.c dengan memaksa kesalahan saat perangkat khusus ini ditemukan. Ini bukan benar-benar solusi tetapi solusi kotor, tetapi bekerja untuk saya. Saya menggambarkannya di sini: linuxquestions - AtomHeartFather


Jawaban:


Ini cukup sederhana. Kerja kerasnya adalah mencari tahu apa jalur ke perangkat USB. Kita harus mulai dengan mencari perangkat yang ingin kita nonaktifkan. Kita bisa melakukan ini dengan 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)

Ubah 1-6 ke port perangkat Anda untuk dinonaktifkan. Port sering tidak logis (itu fisik) tetapi Anda bisa mendapatkan pemetaan port dengan lsusb -t. Setelah Anda merasa memilikinya, Anda dapat mengujinya dengan:

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

Ini memberi saya 0402 dan 5602, vendor dan ID produk untuk perangkat yang tepat (seperti yang tercantum dalam lsusb).

Sekarang kami telah menemukannya, mematikannya sederhana:

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

Setelah memastikan itu bekerja sesuai keinginan, buatlah memuat setiap startup (misalnya, di /etc/rc.local.)


13
2017-11-25 10:04



Solusi brilian dan bersih. Terima kasih banyak telah membagikannya! - AtomHeartFather
Teknik ini tidak lagi berfungsi pada 14.10. Tidak ada file "bConfigurationValue", dan jika seseorang mencoba untuk menulis salah satunya sebagai pengguna atau root, izin ditolak. - lysdexia
Saya tidak mengerti apa artinya 'ubah 1-6 ke port perangkat Anda'. Saya tidak dapat menemukan dir yang bernama 1-6 - surajck
Di Ubuntu 14.04, bahkan jika saya melakukannya echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue dengan sudo, ini tidak berfungsi. Nilai tidak tinggal di sana, file tidak berisi apa-apa. Kamera web masih berfungsi. - soham
Oke, ini berhasil setelah saya tambahkan echo "0" > /sys/bus/usb/devices/1-6/bConfigurationValue baris ke /etc/rc.local. - soham


@surjack: 1-6 tergantung pada pemetaan port Anda. Jika Anda mengetik lsusb -t Anda akan mendapatkannya dan kemudian membandingkannya dengan output lsusb. Bagi saya, saya mendapatkan output berikut:

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. 

dan

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

Sekarang cari Bus yang tepat 04 dalam kasus saya karena Acer, Inc adalah kameranya. Pemetaan port menunjukkan kamera berada di Bus 04.Port 1. Ini berarti alih-alih menggunakan 1-6 Saya harus menggunakannya 4-1. Saya bukan ahli Linux / Ubuntu tapi ini memberi saya kesan yang harus Anda gunakan Bus-Port dan cukup gunakan angka. Jika Anda ingin 100% yakin menggunakan cat perintah seperti yang dijelaskan:

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

dan bandingkan dengan lsusb.

Dalam hal ini:

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

yang identik dengan output lsusb: 5986:0525.

Sekarang Anda menemukan webcam internal Anda.

Tapi sayangnya lysdexia benar dan perintah echo tidak berfungsi karena Permission denied.

Apakah ada solusi lain yang tersedia?


6
2018-06-10 10:17



sudo -i dan kemudian echo "0" > .... - sygi
Atau sudo echo "0" > sudo /sys/bus/usb/devices/... - soham


Jika Anda ingin mengaktifkan hanya eksternal ketika terpasang, tetapi memiliki internal yang diaktifkan jika eksternal tidak terpasang, inilah skrip untuk itu. Ini didasarkan pada jawaban Wildneuro, tetapi dapat mengetahui jalur perangkat untuk Anda diberi ID.

Saya menggunakannya karena beberapa aplikasi yang saya andalkan tampaknya tidak menawarkan cara mudah memilih kamera pilihan Anda. Anda dapat dengan mudah menyesuaikan dengan ID kamera Anda sendiri (dari lsusb).

Kode di sini: https://gist.github.com/shimon/12cd1080fb8669549aadc2b5408922bc


0
2018-01-25 23:00



Karena konten tautan dapat berubah, tambahkan konten yang relevan dari laman yang ditautkan di sini. - Chai T. Rex