udev não aplica regras

0

Estou com algum problema ao atribuir regras do udev.

Eu tenho 2 chips FTDI232 montados na minha placa (eles são totalmente 3 mas eu estou interessado em 2 deles agora), o kernel gerencia eles com os drivers ftdi_sio , nomeia-os como ttyUS0 e ttyUSB1 e estou aplicando essas regras para nomeá-las como usbS1 e usbS2 :

KERNELS=="1-2.1" KERNEL=="ttyUSB0" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="1-2.2" KERNEL=="ttyUSB1" ATTR{idVendor}=="0403" ATTR{idProduct}=="6001" SUBSYSTEMS=="usb" NAME="usbS2"

de acordo com a informação do dmesg

[    4.676116] usb 1-2.1: new full-speed USB device number 3 using ehci-omap
[    4.811920] usb 1-2.1: New USB device found, idVendor=0403, idProduct=6001
[    4.819244] usb 1-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.826965] usb 1-2.1: Product: FT232R USB UART
[    4.831726] usb 1-2.1: Manufacturer: FTDI
[    4.835968] usb 1-2.1: SerialNumber: A101XRTT
[    4.963256] usb 1-2.2: new full-speed USB device number 4 using ehci-omap
[    5.102355] usb 1-2.2: New USB device found, idVendor=0403, idProduct=6001
[    5.109649] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.117370] usb 1-2.2: Product: FT232R USB UART
[    5.122161] usb 1-2.2: Manufacturer: FTDI
[    5.126403] usb 1-2.2: SerialNumber: A101XRTQ

...

[   16.839935] usbserial: USB Serial support registered for FTDI USB Serial Device
[   16.848327] ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected
[   16.856781] usb 1-2.1: Detected FT232RL
[   16.977935] usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0
[   16.986785] ftdi_sio 1-2.2:1.0: FTDI USB Serial Device converter detected
[   16.994720] usb 1-2.2: Detected FT232RL
[   17.099914] usb 1-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
[   17.108581] ftdi_sio 1-2.7:1.0: FTDI USB Serial Device converter detected
[   17.116485] usb 1-2.7: Detected FT232RL
[   17.165710] i2c 2-005c: Driver mt9v032 requests probe deferral
[   17.187561] twl4030_madc 48070000.i2c:twl@48:madc: clk disabled, enabling
[   17.228759] usb 1-2.7: FTDI USB Serial Device converter now attached to ttyUSB2

Mas não está funcionando. Eu não sei porque.

Em um sistema antigo (com o kernel 2.6.34) eu estava simplesmente aplicando estas regras:

KERNELS=="2-2.1" SUBSYSTEMS=="usb" NAME="usbS1"
KERNELS=="2-2.2" SUBSYSTEMS=="usb" NAME="usbS2"

que funciona bem nesse sistema, mas não neste que estou trabalhando agora (claro que com os parâmetros KERNELS alterados).

O que há de errado no meu arquivo de regras?

    
por simozz 30.09.2015 / 13:57

3 respostas

0

Eu resolvi assim:

KERNELS=="1-2.1", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS0"
KERNELS=="1-2.2", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS1"
KERNELS=="1-2.7", SUBSYSTEMS=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", SYMLINK+="usbS3"

As vírgulas e as diretivas SYMLINK fizeram com que funcionasse.

    
por 01.10.2015 / 17:42
1

Pode ser uma das seguintes situações:

  1. Na regra, você se refere diretamente a esses dispositivos pelo nome do kernel (KERNEL =), e talvez o kernel não chame seus dispositivos ttyUSB? , portanto, a regra não se aplica
  2. udev não lê ou não pode ler o arquivo onde você escreveu suas regras.
  3. udev já tem outra regra sobrepondo a sua para os mesmos dispositivos, aplicando o nome ttyUSB? a eles.

Então, eu sugiro que você ...

  • Verifique se o nome do kernel do seu dispositivo é realmente ttyUSB?
  • Verifique se nenhuma outra regra de udev faz outra renomeação do mesmo dispositivo que possa substituir suas regras.
  • Verifique se realmente udev carrega novas regras (teste com outros dispositivos, se possível) e que udev pode ler o arquivo onde suas novas regras estão ... ou teste se essas regras são lidas colocando-as dentro um arquivo de regras existente.
por 30.09.2015 / 15:17
1

Para ajudar na depuração, você pode (não como root):

udevadm monitor

conecte o dispositivo para ver o evento que o udev vê. Você provavelmente verá que suas regras correspondem a mais de um dos eventos add .

Você pode converter o nome do dispositivo em um caminho, por exemplo,

udevadm info -q path -n /dev/ttyUSB0

então dê este caminho de saída para

udevadm test <path>

para rastrear quais arquivos o udev está lendo e as regras a seguir. Na verdade, ele não executa comandos e assim por diante, portanto, é apenas uma dica.

    
por 30.09.2015 / 19:43

Tags