Деякі зі світлодіодів є лише апаратними засобами, і немає можливості програмно змінити свій статус.
До них можна керувати через sysfs
віртуальну файлову систему за адресою /sys/class/leds/
.
Чи можна певним світлодіодом керувати програмно чи ні, залежить від конкретного обладнання. Наприклад, у мого робочого столу є кілька світлодіодів, але жоден з них не здається керованим. Я також експериментував на декількох ноутбуках, і, хоч було кілька записів під /sys/class/leds/
, я не зміг контролювати стан світлодіодів, це означає, я думаю, що конкретний драйвер ядра не дозволяє вручну керувати Світлодіоди, що забезпечують інтерфейс лише для читання. Ось що я спробував, без ефекту:
# 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
Щось подібне вище, теоретично, дозволяє вам керувати тими світлодіодами, які підтримуються драйверами ядра для конкретного обладнання. Якщо у ядрі немає підтримки для управління певним світлодіодом, то, якщо писати модуль ядра, ви не можете багато чого зробити.
Ось додаткові відомості з цього приводу на сайті суперпользователя.
Ось кінцеве джерело: документація на ядро