Escrevendo regras do udev do USB com base em informações de barramento de vendorid, productid & usb

1

Eu tenho algumas webcams usb, mas infelizmente elas não têm números de série. Então, na inicialização, eles tendem a trocar nomes de arquivos de dispositivos.

Como eles sempre estarão na mesma porta usb, quero criar uma regra com base nisso. Mas está falhando miseravelmente.

Veja o que tentei até agora:

# /sys/bus/usb/devices/2-5.1:1.1/uevent
#SUBSYSTEM=="usb", SYSFS{idVendor}=="05e1", SYSFS{idProduct}=="0408", PLACE=="2-5.1", NAME="video98"
#SUBSYSTEM=="usb", PLACE=="2-5.1", NAME="video98"
#SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devnum}="009", ATTR{idVendor}="05e1", NAME="video98"
SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devpath}="/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1", ATTR{idVendor}="05e1", NAME="video98"

# /sys/bus/usb/devices/2-5.3:1.1/uevent
#SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devnum}="010", ATTR{idVendor}="05e1", NAME="video99"
SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devpath}="/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3", ATTR{idVendor}="05e1", NAME="video99"

Então, sim, fiz algumas tentativas. Eu vi que o devnum também muda na inicialização, então eu não quero usar isso.

Na verdade, só quero usar a coisa "2-5.3" e "2-5.1". Isso é sempre o mesmo. Mas como?

    
por skerit 10.10.2012 / 00:31

1 resposta

0

Eu fiz quase exatamente isso antes, estranhamente. Os meus eram discos rígidos externos, mas não deveriam ser diferentes para câmeras USB. Eu usei os endereços de barramento SCSI para as portas, que funcionaram bem.

Eu tenho minhas informações usando lsscsi , que imprime algo semelhante ao seguinte para um dispositivo USB:

[2:0:0:0] disk <descriptor> <dev name>

Então, algo semelhante à seguinte regra deve fazer o que você quer:

SUBSYSTEM=="usb", KERNEL=="sd*1", KERNELS=="2:0:0:0", SYMLINK+="<label_1>"

    
por 10.10.2012 / 09:32