BeagleBoneBlackでLEDを制御する

BeagleBoneBlackの基板上にはユーザ用の青色LEDが4個搭載されています。
これらのLEDはデータの通信に応じて点滅します。
点滅する様子は奇麗なのですが、
部屋の電気を真っ暗にするとチカチカ眩しくて寝る事が出来ません(涙)

という訳で、これらのLEDの点滅を無効にすべく
ユーザによるLED制御方法をまとめました。

■LEDデバイスファイルの場所
LEDデバイスファイルは、/sys/class/leds/以下にシンボリックリンクとして格納されています。

bbb:~# ll /sys/class/leds
total 0
lrwxrwxrwx 1 root root 0 Jan  1  2000 beaglebone:green:usr0 -> ../../devices/ocp.2/gpio-leds.7/leds/beaglebone:green:usr0/
lrwxrwxrwx 1 root root 0 Jan  1  2000 beaglebone:green:usr1 -> ../../devices/ocp.2/gpio-leds.7/leds/beaglebone:green:usr1/
lrwxrwxrwx 1 root root 0 Jan  1  2000 beaglebone:green:usr2 -> ../../devices/ocp.2/gpio-leds.7/leds/beaglebone:green:usr2/
lrwxrwxrwx 1 root root 0 Jan  1  2000 beaglebone:green:usr3 -> ../../devices/ocp.2/gpio-leds.7/leds/beaglebone:green:usr3/
bbb:~#

beaglebone:green:usr0~3が基板上のユーザLED0~3に対応しています。

bbb-leds

■LEDの制御
beaglebone:green:usr0~3はディレクトリへのシンボリックリンクになっています。
LEDの点滅はトリガとしてbeaglebone:green:usr{数字}/triggerに指定されています。
試しにこのトリガファイルの中身を表示してみると・・・

bbb:~# cat /sys/class/leds/beaglebone:green:usr0/trigger
none nand-disk mmc0 mmc1 timer oneshot [heartbeat] backlight gpio cpu0 default-on transient
bbb:~# cat /sys/class/leds/beaglebone:green:usr1/trigger
none nand-disk [mmc0] mmc1 timer oneshot heartbeat backlight gpio cpu0 default-on transient
bbb:~# cat /sys/class/leds/beaglebone:green:usr2/trigger
none nand-disk mmc0 mmc1 timer oneshot heartbeat backlight gpio [cpu0] default-on transient
bbb:~# cat /sys/class/leds/beaglebone:green:usr3/trigger
none nand-disk mmc0 [mmc1] timer oneshot heartbeat backlight gpio cpu0 default-on transient
bbb:~#

[]で囲まれた名前がLED点滅のトリガとして指定されている箇所です。
ユーザからLEDのON/OFF状態を指定するためには、noneをトリガーに指定します。

bbb:~# echo none > /sys/class/leds/beaglebone:green:usr0/trigger
bbb:~# echo none > /sys/class/leds/beaglebone:green:usr1/trigger
bbb:~# echo none > /sys/class/leds/beaglebone:green:usr2/trigger
bbb:~# echo none > /sys/class/leds/beaglebone:green:usr3/trigger
bbb:~#

これで、LEDがチカチカしなくなりました。

LEDのON/OFF状態指定は、/sys/class/leds/beaglebone:green:usr{数字}/brightnessに
0~255の値を書き込むことで行います。
これはLEDの輝度を指定するものですが、
今回制御するLEDはON/OFFの2状態しかないので、
0がOFF、1~255がONとなります。

bbb:~# echo 0 > /sys/class/leds/beaglebone:green:usr0/brightness
bbb:~# echo 1 > /sys/class/leds/beaglebone:green:usr1/brightness
bbb:~# echo 0 > /sys/class/leds/beaglebone:green:usr2/brightness
bbb:~# echo 1 > /sys/class/leds/beaglebone:green:usr3/brightness
bbb:~#

LED0と2をOFF、LED1と3をONにした例です。
実際にLEDの点灯パターンもそうなっていることが確認できます。
(分かりづらい写真で申し訳ありません><)

bbb-leds-sample

これで、LEDのチカチカに悩まされる心配はなくなりますね!

■参考文献
BeagleBone Black System Reference Manual
BeagleBone Black Built-In LEDs