Como ligar as câmeras USB v4l2 aos mesmos nomes de dispositivos, mesmo após a reinicialização?

5

Eu tenho 3 câmeras USB em um único PC, uma câmera não será usada e poderá ser ignorada. Preciso forçar duas câmeras idênticas a serem mapeadas para nomes de dispositivos constantes (como /dev/video1 e /dev/video2 ). As câmeras não devem alterar seu pedido (digamos, câmera 1 montada como video1 e câmera 2 como video2 após desconectar, devem estar na mesma ordem, não câmera1 - > /dev/video2 , câmera2 - > /dev/video1 . Como fazer essa configuração funcionar?

Vou alimentar a saída da câmera para Gstreamer . As câmeras estão usando a interface do driver v4l2 e uvc . A distro Linux em questão é Archlinux , câmeras - algumas webcams da Logitech.

    
por IBr 26.05.2013 / 18:10

2 respostas

9

Sugiro que você autocriar% sy_links /dev usando udev , usando propriedades exclusivas (número de série? número da porta?) de suas câmeras USB. Veja isto (deve aplicar-se ao Arch também) tutorial sobre regras do udev . Ou talvez este tutorial seja mais claro .

Você pode obter a lista de propriedades dos seus dispositivos usando:

sudo udevadm info --query=all --name=/dev/video1

então

sudo udevadm info --query=all --name=/dev/video2

Descubra o que é diferente e crie um arquivo .rules dentro de /etc/udev/rules.d (você pode usar 99-myvideocards.rules como nome de arquivo, digamos); digamos que você queira usar o número de série, você obterá um conjunto de regras que se pareça com:

ATTRS{ID_SERIAL}=="0123456789", SYMLINK+="myfirstvideocard"
ATTRS{ID_SERIAL}=="1234567890", SYMLINK+="mysecondvideocard"

Depois de desconectar / reconfigurar seus dispositivos (ou depois de uma reinicialização), você receberá /dev/myfirstvideocard e /dev/mysecondvideocard que sempre apontam para os mesmos dispositivos.

    
por 26.05.2013 / 18:25
3

O método Patrice Levesque funciona bem, mas descobri que já existem links simbólicos no Linux como /dev/v4l/by-id/usb-046d_0819_92E84F10-video-index0 na pasta /dev/v4l/by-id/ , então não é necessário fazer nada, se o programa puder aceitar argumentos diferentes de /dev/videoX .

    
por 26.05.2013 / 19:55

Tags