Algunos de los LED son solo de hardware y no hay forma de cambiar su estado mediante programación.
Se puede acceder a los que se pueden controlar a través del sysfs
sistema de archivos virtual en /sys/class/leds/
.
Si un LED en particular se puede controlar mediante programación o no depende del hardware en particular. Por ejemplo, mi máquina de escritorio tiene algunos LED, pero ninguno de ellos parece ser controlable. También experimenté en un par de computadoras portátiles y, aunque había algunas entradas debajo /sys/class/leds/
, no pude controlar el estado de los LED, lo que significa, creo, que el controlador del kernel en particular no permite controlar manualmente el LED, que proporcionan una interfaz de solo lectura. Esto es lo que probé, sin efecto:
# cd /sys/class/leds/
# ls
ath9k-phy0
# cd ./ath9k-phy0
# ls
brightness device max_brightness power subsystem trigger uevent
# cat ./trigger
[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full BAT0-charging-blink-full-solid usb-gadget usb-host cpu0 cpu1 rfkill1 phy0rx phy0tx phy0assoc phy0radio phy0tpt rfkill4
# echo 'AC-online' > ./trigger
# cat ./trigger
none [AC-online] BAT0-charging-or-full BAT0-charging BAT0-full BAT0-charging-blink-full-solid usb-gadget usb-host cpu0 cpu1 rfkill1 phy0rx phy0tx phy0assoc phy0radio phy0tpt rfkill4
# echo 'none' > ./trigger
# echo 'phy0rx' > ./trigger
# echo 'none' > ./trigger
# cat ./trigger
[none] AC-online BAT0-charging-or-full BAT0-charging BAT0-full BAT0-charging-blink-full-solid usb-gadget usb-host cpu0 cpu1 rfkill1 phy0rx phy0tx phy0assoc phy0radio phy0tpt rfkill4
# cat ./brightness
0
# cat ./max_brightness
255
# echo 255 > ./brightness
Algo como lo anterior debería, en teoría, permitirle controlar los LED que son compatibles con los controladores del kernel para el hardware en particular. Si no hay soporte para controlar un LED particular en el núcleo, entonces, a menos que se escriba un módulo del núcleo, no hay mucho que pueda hacer.
Aquí hay más información sobre el tema en superusuario.
Aquí está la fuente final: documentación del núcleo