ラズベリーパイは、シャットダウンしても赤色LED(電源LED)が点灯したままなので、シャットダウンした後なのか、それとも稼働中なのかがひと目ではわかりにくいことがあります。
この区別をしやすくするために、この赤色LED(あるいは緑色LED)の点灯の仕方を制御する方法を書きます。
LEDの点灯方法を変更する理由
ラズベリーパイには、基板上に2つのLEDが実装されています。
この2つのLEDは、デフォルトでは以下のように点灯します。
- 緑色LED: アクセスランプ。SDカードへのアクセス時に点灯。
- 赤色LED: 電源ランプ。microUSB端子から電源供給している時に点灯。
使用してみるとわかりますが、SDカードへのアクセスがないときには緑色LEDが消灯、赤色LEDが点灯の状態になります。
そして、この状態が、「シャットダウンする前の状態」なのか「シャットダウンした後の状態」なのかの区別がつきにくいのです。
マウスやキーボードを動かしてみればわかるのですが、特に複数の人が使用する場合など、2つのLEDの状態だけを見て、まだシャットダウンしていないのに「シャットダウンした後の状態」と勘違いすることが起こりえます。
そして、シャットダウンする前に電源を切ったり入れたりすることが起こるのです。
スポンサーリンクシャットダウンする前に電源を切るときの危険性については、以下の記事で書きました。
一回で壊れることはほとんどありませんが、そのうちSDカードを電気的に破損したり、データが読み出せなくなったりすることが起こりえます。
ですので、いつでもLEDの点灯状態でラズベリーパイがシャットダウンする前なのか後なのかを区別できるかどうかはとても重要です。
ここでは、よく知られている設定方法について2つ紹介します。
いずれも、ラズベリーパイが稼働中(シャットダウン前)のときに、赤色LED(電源ランプ)の点灯状態を変更するというものです。
- 赤色LEDをheartbeat設定で点滅させる
- 赤色LEDをtimer設定で、かつ時間間隔を指定して点滅させる
いずれも、ラズベリーパイが稼働中(シャットダウン前)のときは赤色LEDは点滅、シャットダウン後は赤色LEDが常時点灯という状態になります。
これで両者を区別できます。
点灯方法1:heartbeat設定で点滅させる。
まず、heartbeat設定で点滅させる方法です。
ちょっと言葉では説明しにくいですが、この設定では、点灯と消灯を2回繰り返し、そのあと少し長めの消灯時間があって、再び点灯と消灯を2回繰り返す、という挙動をします。
この設定方法は簡単です。
画面左上の左から4つめのアイコンをクリックし、LX Terminal(ターミナルソフト)を起動します。
次に、/boot/config.txtというファイルを編集します。編集の前にバックアップを取っておくとよいしょう。
1 | sudo cp -pr /boot/config.txt /boot/config.txt.bak |
/boot/config.txt.bakはバックアップのファイル名で、適切なものに決めてください。
万一編集を失敗したときに、このファイルで復元できます。
さて、その次に、
1 | $ sudo leafpad /boot/config.txt |
と打ち込んで、編集を開始します。パスワードを聞かれたら、ここではご自身のアカウントのパスワードを入力します。(sudo権限があることが前提です。)
開いたら、ファイルの末尾でよいので、
1 2 | # Power LED: heartbeat dtparam=pwr_led_trigger=heartbeat |
上記の2行を追加してください。(1行目はコメントですが、入れておくとよいでしょう)
このあと、このファイルを保存し、そののちラズベリーパイをリブートすると、この設定が有効になります。
1 | $ sudo reboot |
リブート後、赤色LEDが前述のように点滅しているのがわかると思います。
なお、赤色LEDではなく、緑色LEDの方を点滅させたい場合は、pwr_led_trigger を act_led_trigger に変更すれば実現できます。
点灯方法2:timer設定で、かつ時間間隔を指定して点滅させる。
もう1つの方法です。
heartbeat 設定では、チカチカする間隔が短すぎて気になってしまうという方向けの設定です。
ここでご紹介する設定方法によれば、点滅のOn時間とOff時間を任意に設定できます。
まず、leafpadなどのエディタで、pwr_led_blink.sh というファイルを作ります。
ご自身のホームディレクトリでも構いませんが、ここでは/sbinの下に格納しておくことにします。
1 | $ sudo leafpad /sbin/pwr_led_blink.sh |
開いたら、以下のコードをコピー&ペーストしてください。
1 2 3 4 5 | #!/bin/sh sh -c 'echo timer > /sys/class/leds/led1/trigger' sh -c 'echo 2000 > /sys/class/leds/led1/delay_on' sh -c 'echo 2000 > /sys/class/leds/led1/delay_off' |
ペーストしたら、ファイルを保存して終了します。
ここで、テスト実行してみましょう。
1 | $ sudo /sbin/pwr_led_blink.sh |
すると、赤色LEDが2秒後とに点灯と消灯を繰り返すはずです。
さきほど作成した pwr_led_blink.sh の中に2000という数字が入っていましたが、この2000は2000msecを表しています。つまり、2秒です。
この2000という数字を調整すれば、点灯時間と消灯時間を調整できます。ご自分の好みの時間に調整するとよいです。
ただし、この設定は、一度電源を切ったりリブートしたりすると無効になってしまいます。
そこで、いつもこの設定が有効になるように、さらに設定を加えます。
ここでは、/etc/rc.local というファイルを修正します。(必要に応じて、このファイルも事前にバックアップしてください。)
1 | $ sudo leafpad /etc/rc.local |
開いたら、末尾にexit 0という行があると思いますので、その行の直前あたりに ”/sbin/pwr_led_blink.sh” という一文を挿入してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | : (省略) : _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi : (省略) : /sbin/pwr_led_blink.sh exit 0 |
このような感じです。
編集が終わったら、rc.localファイルを保存して、リブートしてみてください。
すると、自動的に赤色LEDが設定値通りに点滅するはずです。
もし、赤色LEDではなく、緑色LEDを点滅させたい場合は、led1 を led0 に変更すれば実現できます。