!!!BeagleBone Black User LEDs {{category OpenBSD,nolink}} [OpenBSD|https://www.openbsd.org/] で、 [BeagleBone Black|https://beagleboard.org/black] の [User LEDs|https://docs.beagleboard.org/latest/boards/beaglebone/black/ch06.html#user-leds] を操作する。 最終的には、ディスク・ネットワーク アクセス ランプ 代わりにできたらな… !!User LEDs BeagleBone Black には、4つのユーザLEDが付いている。これらは、GPIO ピンに接続されている。 ! ,LED ,GPIO SIGNAL ,PROC PIN ,USR0 ,GPIO1_21 ,V15 ,USR1 ,GPIO1_22 ,U15 ,USR2 ,GPIO1_23 ,T15 ,USR3 ,GPIO1_24 ,V16 USR0 が内側(LAN側)、USR3 が外側 になる。 !!!Lチカ BBB の User LED を点灯させる。 !!準備 GPIO ピン アクセスは、システム起動時の securelevel 0 で設定されたピンのみがアクセス可能になる。 '''/etc/rc.securelevel''' に下記を追加して、セキュアレベルが上がる前にコマンドを実行させ、User LED の設定を行う。 # Set GPIO pin directions for USR LEDs and give them names gpioctl gpio1 21 set out USR0 gpioctl gpio1 22 set out USR1 gpioctl gpio1 23 set out USR2 gpioctl gpio1 24 set out USR3 セキュアレベルが上がると、下げることはできないので、設定を行った後、反映させるために再起動が必要になる。 NetBSD もセキュアレベルが上がる前に GPIO の初期化を行う必要があるが、 '''/etc/rc.conf''' で '''gpio=YES''' で有効にして、 '''/etc/gpio.conf''' で GPIO の設定を行う ことができるっぽい… !!点灯 [gpioctl(8)|https://man.openbsd.org/gpioctl] コマンドで、GPIO ピン に対して on(1) / off(0) または toggle(2) でステータスを更新して、LED を点灯/消灯させる。 名前を定義してる場合は、ピン番号でなく設定した名前で指定することもできる。 bbb# gpioctl gpio1 21 pin 21: state 0 bbb# gpioctl gpio1 21 on pin 21: state 0 -> 1 bbb# gpioctl gpio1 22 on pin 22: state 0 -> 1 bbb# gpioctl gpio1 23 on pin 23: state 0 -> 1 bbb# gpioctl gpio1 24 on pin 24: state 0 -> 1 bbb# gpioctl gpio1 24 off pin 24: state 1 -> 0 bbb# gpioctl gpio1 23 off pin 23: state 1 -> 0 bbb# gpioctl gpio1 22 off pin 22: state 1 -> 0 bbb# gpioctl gpio1 21 off pin 21: state 1 -> 0 bbb# gpioctl gpio1 USR0 pin USR0: state 0 bbb# gpioctl gpio1 USR1 pin USR1: state 0 bbb# gpioctl gpio1 USR2 pin USR2: state 0 bbb# gpioctl gpio1 USR3 pin USR3: state 0 bbb# // ---- !!!Lチカ !!ALL bbb# cat /etc/rc.securelevel # Set GPIO pin directions for USR LEDs and give them names gpioctl gpio1 21 set out USR0 gpioctl gpio1 22 set out USR1 gpioctl gpio1 23 set out USR2 gpioctl gpio1 24 set out USR3 # USR LEDs on/off gpioctl -q gpio1 USR0 on gpioctl -q gpio1 USR1 on gpioctl -q gpio1 USR2 on gpioctl -q gpio1 USR3 on sleep 0.5 gpioctl -q gpio1 USR0 off gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR3 off bbb# bbb# cat /etc/rc.local #!/bin/sh # 〜中略〜 # USR LEDs blink gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off sleep 0.5 gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off bbb# !!USR3 !起動時のON bbb# cat /etc/rc.local #!/bin/sh # 〜中略〜 # BeagleBone Black User LED - USR3 on gpioctl -q gpio1 USR3 on !シャットダウン時のOFF bbb# cat /etc/rc.shutdown # BeagleBone Black User LED - USR3 off gpioctl -q gpio1 USR3 off !!USR0 !0.5秒おきに点滅させる bbb# crontab -l # 〜中略〜 # BeagleBone Black User LED - USR0 on #@reboot gpioctl -q gpio1 USR0 on # BeagleBone Black User LED - USR0 on/off #* * * * * for i in `seq 0 2 59`;do (gpioctl -q gpio1 USR3 on; sleep 1; gpioctl -q gpio1 USR3 off;) done; #* * * * * for i in `seq 0 1 119`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done; #* * * * * gpioctl -q gpio1 USR0 on; for i in `seq 0 1 118`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done; @reboot while true; do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done;