一部のLEDはハードウェアのみであり、プログラムでステータスを変更する方法はありません。
制御可能sysfs
なファイルには、の仮想ファイルシステムを介してアクセスできます/sys/class/leds/
。
特定のLEDをプログラムで制御できるかどうかは、特定のハードウェアによって異なります。たとえば、私のデスクトップマシンにはいくつかのLEDがありますが、どれも制御可能ではないようです。また、いくつかのラップトップで実験を行いましたが、の下/sys/class/leds/
にいくつかのエントリがありましたが、LEDのステータスを制御できませんでした。つまり、特定のカーネルドライバーでは、読み取り専用インターフェースを提供するLED。これが私が試したものですが、効果はありません:
# 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
上記のようなものは、理論的には、特定のハードウェアのカーネルドライバーによってサポートされるLEDを制御できるようにする必要があります。カーネル内の特定のLEDを制御するためのサポートがない場合、カーネルモジュールを作成する以外に、できることは多くありません。
これは、スーパーユーザーのテーマに関する詳細です。
これが究極のソースです:カーネルのドキュメント