Como identificar a webcam USB por número de série na linha de comando do Linux

2

Como você obtém o número de série de uma webcam USB na linha de comando do Linux?

Eu tenho várias webcams USB conectadas a uma máquina Ubuntu. Todos eles aparecem como /dev/video0 , /dev/video1 , /dev/video2 , etc, mas não consigo encontrar nenhuma maneira de saber programaticamente qual é qual. Várias das câmeras são do mesmo modelo, portanto, apenas obter um nome de modelo não é suficiente.

Note que não estou perguntando como usar lsusb . Sim, eu sei que você pode usar lsusb ou libusb para obter o número de série do dispositivo, o ID do produto, o nome do fabricante etc. Mas, até onde eu sei, nada mostrado por lsusb pode ter referência cruzada com /dev/video* caminho.

por exemplo. Se alguém conectar duas webcams idênticas e elas aparecerem como /dev/video1 e /dev/video2 e, em seguida, desconectá-las e conectá-las a portas completamente diferentes, para que /dev/video2 se torne /dev/video3 e /dev/video1 se torne /dev/video4 , pode saber imediatamente que o atual /dev/video3 "costumava ser" /dev/video2 .

As únicas questões semelhantes que encontrei sugerem apenas hacks como desligar e reinstalar enquanto estiver pesquisando o dmesg. Estou procurando uma solução puramente programática que não requer manipulação de hardware para identificar as webcams.

    
por Cerin 15.04.2015 / 20:34

1 resposta

2

É possível identificar todas as câmeras. O comando

 $ sudo lsusb -v -d 046d:082d | grep -i serial
   iSerial                 1 05C6D16F

retorna o número de série da minha câmera (um Logitech HD Pro Webcam, usado como um exemplo com o fornecedor correto: códigos de produto obtidos de um uso anterior de lsusb ). Observe que o uso de sudo é absolutamente necessário: um usuário não privilegiado não obtém acesso a todas as informações disponíveis através do comando.

O número de série é frequentemente, mas nem sempre, exclusivo. Se não for exclusivo (basta comparar a saída dos comandos acima para dois dispositivos com o mesmo fornecedor: códigos de produto), você pode definir para que eles sejam distintos. Existem guias em todo o Google para fazer isso, vou apenas apontar para alguns deles, por uma questão de meticulosidade: aqui e aqui . Mas lembre-se, este é um procedimento dependente do dispositivo , então você terá que descobrir como fazer para a sua própria câmera .

Agora o comando

$ sudo udevadm info --query=all /dev/video1 | grep 'VENDOR_ID\|MODEL_ID\|SERIAL_SHORT'
  E: ID_MODEL_ID=082d
  E: ID_SERIAL_SHORT=05C6D16F
  E: ID_VENDOR_ID=046d

retorna os códigos apropriados para essa câmera específica. A tentativa e o erro com todos os dispositivos /dev/videoX permitem que todos sejam agrupados por pombo.

    
por 04.03.2016 / 11:42