Por que as regras do udev param de funcionar depois de adicionar o ATTRS {serial}?

0

Eu estava tentando resolver meu problema olhando para outros segmentos, como Por que a porta USB que está corrigindo as regras do udev não está funcionando e As regras do udev não funcionam com um pequeno número entre outras publicações relacionadas às regras do udev, mas nenhuma das postagens que eu verifiquei está me ajudando a descobrir por que estou tendo esse problema.

A regra do udev com bInterfaceNumber não funciona é muito muito semelhante problema para o que eu tenho, essencialmente o mesmo, mas não tem uma resposta desde 2013 e acho que está esquecido até agora.

Eu tenho as seguintes regras que funcionam perfeitamente:

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", SYMLINK+="USB-TTL-0", MODE="0777"

O problema é que eu tenho 2 dispositivos que são iguais e a única diferença entre os atributos dos dois é o número de série, eles ainda têm o mesmo VID / PID, portanto eu preciso adicionar ATTRS {serial } para as regras para ter:

SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="0", SYMLINK+="USB-RS232-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="mos7840", ATTRS{port_number}=="1", SYMLINK+="USB-RS232-1", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="AFYS1HLQ", SYMLINK+="USB-TTL-0", MODE="0777"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="ftdi_sio", ATTRS{port_number}=="0", ATTRS{serial}=="FTV8IUSR", SYMLINK+="USB-TTL-1", MODE="0777"

Então, depois de adicionar ATTRS {serial} às duas últimas regras, as duas deixarão de funcionar.

Por que isso acontece?

Obrigado !!

    
por m4l490n 07.11.2016 / 06:02

1 resposta

1

A informação chave está neste parágrafo na página udev(7) man (my emhpasis):

ATTRS{filename}

Search the devpath upwards for a device with matching sysfs attribute values. If multiple ATTRS matches are specified, all of them must match on the same device. Trailing whitespace in the attribute values is ignored unless the specified match value itself contains trailing whitespace.

Portanto, se você tiver mais de uma regra ATTRS (como faz), todas as propriedades (nomes de arquivos) correspondentes devem estar no mesmo diretório de dispositivos.

Isso não precisa ser o mesmo dispositivo que corresponde a uma regra SUBSYSTEMS ou DRIVERS .

    
por 09.11.2016 / 20:54