Alcuni LED sono solo hardware e non c'è modo di modificare il loro stato a livello di codice.
È possibile accedere a quelli che è possibile controllare tramite il sysfs
filesystem virtuale all'indirizzo /sys/class/leds/
.
Se un determinato LED può essere controllato a livello di codice o meno dipende dal particolare hardware. Ad esempio, la mia macchina desktop ha alcuni LED ma nessuno di essi sembra essere controllabile. Ho anche sperimentato su un paio di laptop e, anche se c'erano alcune voci sotto /sys/class/leds/
, non ero in grado di controllare lo stato dei LED, il che significa, penso, che il driver del kernel particolare non consente il controllo manuale del LED, che forniscono un'interfaccia di sola lettura. Ecco cosa ho provato, senza effetto:
# 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
Qualcosa di simile a quanto sopra dovrebbe, in teoria, consentire di controllare quei LED che sono supportati dai driver del kernel per il particolare hardware. Se non c'è supporto per il controllo di un particolare LED nel kernel, quindi, a parte la scrittura di un modulo del kernel, non c'è molto che puoi fare.
Ecco maggiori informazioni sull'argomento su superutente.
Ecco la fonte definitiva: documentazione del kernel