Defina a ordem lirc dos dispositivos

1

Eu tenho dois dispositivos remotos. Um dongle remoto USB MCE, que eu quero usar, e um dispositivo embutido na minha placa PCI-E por satélite que nem eu uso nem desejo.

Quando as coisas são inicializadas, o lirc atribui a esses dispositivos um /dev/lircX device (onde X é um número). Tome este dmesg output como um exemplo:

[...] rc rc0: lirc_dev: driver ir-lirc-codec (saa716x) registered at minor = 0
[...] rc rc1: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 1

Acima, meu controle remoto do MCE está em /dev/lirc1 . O problema é da próxima vez que eu inicializar, será /dev/lirc0 . Isso torna a configuração de aplicativos muito mais difícil.

Eu quero uma dessas coisas:

  1. Para definir meu dispositivo mceusb como / dev / lirc0 para sempre ou
  2. Consiga o mesmo desativando o lirc processando o dispositivo saa716x . Observe que este é um módulo de dispositivo com vários recursos que também lida com o vídeo para streaming de TV.
    A lista negra de saa716x não é uma opção.
  3. De alguma forma, "acertar as coisas" depois de inicializar ... Eu examinei isso antes, mas não tenho idéia de como descobrir qual módulo é /dev/lircX , e muito menos trocá-los.

Estou aberto a qualquer coisa. Você deve ser capaz de ver o que eu estou procurando.

    
por Oli 04.07.2015 / 00:16

1 resposta

1

  

7.3.3.6. A ordem de nomenclatura do dispositivo muda aleatoriamente após a reinicialização

     

Isso se deve ao fato de que o Udev, por design, manipula uevents e carrega módulos em paralelo e, portanto, em uma ordem imprevisível. Isto nunca será “consertado”. Você não deve confiar que os nomes de dispositivos do kernel sejam estáveis. Em vez disso, crie suas próprias regras que criam links simbólicos com nomes estáveis baseados em alguns atributos estáveis do dispositivo, como um número de série ou a saída de vários utilitários * _id instalados pelo Udev. Veja Seção 7.4, “Gerenciando Dispositivos” e Seção 7.5, “Configuração Geral de Rede” para exemplos.

Fonte: Linux From Scratch: 7.3. Visão geral do manuseio de dispositivos e módulos

  1. Verifique os atributos do nó de destino e seus nós principais

    udevadm info -a /dev/lirc1
    
  2. Verifique as variáveis de ambiente do nó de destino (algo diferente que pode ser usado para correspondência de regras)

    udevadm info /dev/lirc1
    
  3. Criar novo arquivo de regras UDEV

    sudo nano /etc/udev/rules.d/99-lirc-symlinks.rules

    #2 or only setup link for usb device
    ACTION=="add", KERNEL=="lirc?", ATTRS{idVendor}=="1934", ATTRS{idProduct}=="5168", SYMLINK+="lirc90"
    

    lirc90 , que está longe de ser alcançado de qualquer maneira.

  4. Recarregue as regras

    sudo udevadm control -R
    
  5. Solicitação de evento de acionador, reconecte o dispositivo USB ou talvez seja necessário reinicializá-lo.

    sudo udevadm trigger
    
  6. Configure seu aplicativo para usar /dev/lirc90

Notas:

  • Existem muitas maneiras de implementar uma regra para o mesmo dispositivo. Então eu posso escrever outro para dongle USB:

    ACTION=="add", KERNEL=="lirc?", DRIVERS="mceusb", SYMLINK+="lirc90"
    
  • KERNELS , SUBSYSTEMS , DRIVERS , ATTRS pesquisa o devpath para cima para uma correspondência. veja man udev .

por user.dz 05.07.2015 / 05:22