Como desabilitar a webcam integrada e ainda poder usar uma externa

13

Estou procurando uma maneira de desativar a webcam integrada ao meu laptop. A webcam está usando o módulo uvcvideo, mas eu não quero colocá-la na lista negra, pois ela também está sendo usada por uma webcam externa que eu tenho.

Existe alguma maneira de desativar o próprio dispositivo sem tocar na lista de módulos?

É assim que as webcams são listadas por lsusb. O primeiro é integrado (é identificado por alguns aplicativos como BisonCam NB Pro), o segundo é o externo Logitech C525:

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

Já verifiquei o BIOS - não há como desativar a webcam de lá. Além disso, gostaria de aprender como desativar o dispositivo por ID de qualquer maneira.

Obrigado!

    
por AtomHeartFather 17.09.2012 / 13:13

3 respostas

14

É bem simples. O trabalho árduo é descobrir qual é o caminho para o dispositivo USB. Precisamos começar descobrindo qual dispositivo queremos desabilitar. Podemos fazer isso com 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)

Altere de 1 a 6 para as portas do dispositivo a serem desativadas. A porta geralmente não é lógica (é física), mas você pode obter um mapeamento de porta com lsusb -t . Depois de pensar que você tem, você pode testá-lo com:

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

Isso me dá 0402 e 5602 , IDs de fornecedores e produtos para o dispositivo correto (conforme listado em lsusb ).

Agora, descobrimos que desativá-lo é simples:

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

Depois de verificar se funciona como desejado, faça com que carregue todas as inicializações (por exemplo, em /etc/rc.local .)

    
por Wildneuro 25.11.2012 / 11:04
6

@surjack: 1-6 depende do seu mapeamento de porta. Se você digitar lsusb -t , irá obtê-lo e compará-lo com a saída de lsusb . Para mim eu recebo as seguintes saídas:

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. 

e

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

Agora é só encontrar o barramento correto, que é 04 no meu caso, porque Acer, Inc é a câmera. O mapeamento de porta mostra que a câmera está localizada em Bus 04.Port 1 . Isso significa que, em vez de usar 1-6 , preciso usar 4-1 . Eu não sou um especialista em Linux / Ubuntu, mas isso me dá a impressão de que você tem que usar Bus-Port e simplesmente usar os números. Se você deseja ter 100% de certeza, use o comando cat , conforme descrito:

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

e compare com o lsusb.

No meu caso:

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

que é idêntico à saída do lsusb: 5986:0525 .

Agora você encontrou sua webcam interna.

Mas infelizmente a lisdexia está certa e o comando echo não funciona porque Permission denied .

Existe outra solução disponível?

    
por DamBedEi 10.06.2015 / 12:17
0

Se você quiser ativar somente o externo quando ele estiver conectado, mas tiver o interno ativado, se o externo não estiver anexado, aqui está um script para isso. É baseado na resposta de Wildneuro, mas pode descobrir o caminho do dispositivo para você, dado o ID.

Eu uso porque alguns aplicativos dos quais eu dependo não parecem oferecer uma maneira de escolher facilmente sua câmera preferida. Você pode personalizar facilmente com seus próprios IDs de câmera (de lsusb ).

Codifique aqui: link

    
por Shimon Rura 26.01.2018 / 00:00