Eu tenho a ponte National Instruments USB < - > GPIB. É uma placa USB que precisa de um procedimento especial para se tornar utilizável. Eu tenho o pacote linux_gpib instalado que fornece dois módulos do kernel: gpib_common
e ni_usb_gpib
. Além disso, o mastro da ferramenta gpib_config
pode ser executado antes que eu possa falar com qualquer instrumento no barramento GPIB. O truque é que a placa precisa de cerca de 2 segundos depois que ela foi conectada ao USB para inicialização interna antes que o comando gpib_config
tenha efeito. Então, eu tenho a seguinte regra de 99-gpib.rules
udev que faz o trabalho perfeito:
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="3923", ATTR{idProduct}=="709b", RUN+="/bin/sh -c '/usr/bin/sleep 2; /usr/sbin/gpib_config --minor 0'"
KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"
O problema é que só funciona se eu conectar a placa quando o sistema host estiver funcionando. Quando eu reinicio com o dongle conectado, consigo ver ambos os módulos do kernel carregados, mas a placa está inutilizável, o que significa que a ferramenta gpib_config
não foi executada. Se eu executar manualmente, funcionará perfeitamente.
Como o cenário de reinicialização é mais real, conectando-o enquanto o sistema está em execução, eu preciso da maneira correta de fazer o udev fazer isso na inicialização. Claro, eu posso escrever algum script de inicialização que irá verificar se a placa está conectada e os módulos do kernel estão carregados e rodar a ferramenta durante o processo de carregamento, mas isso é trabalho do udev, algo para lidar com hardware, eu acho. Alguma idéia?