Estou usando duas regras do udev, como segue, para fornecer aos membros do grupo leds
acesso a todos os LEDs:
SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
SUBSYSTEM=="leds", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
Observe que a regra ACTION=="change"
é necessária para manipular atributos criados dinamicamente. Por exemplo, se o gatilho do LED estiver definido como "timer" ( echo timer > trigger
), os atributos extras delay_on
e delay_off
serão criados. A ação change
é especificada para que esses novos atributos tenham seus grupos e permissões definidos.
Percebi que um evento change
é gerado toda vez que o LED é desativado escrevendo 0
to /sys/class/leds/.../brightness
. Isso parece dever-se ao fato de a limpeza do código do driver LED do Linux ser acionada sempre que o brilho é definido como 0
. É por isso que a segunda regra tem a condição ENV{TRIGGER}!="none"
, para evitar que a regra seja acionada toda vez que um LED é desativado.