ラズパイの赤LED、緑LEDの挙動を変える方法

# ラズパイの赤LED、緑LEDの挙動を変える

ラズパイには赤LED、緑LEDがついていますが、/boot/config.txtに書いておくと、その挙動をある程度、変えることができます。ラズパイ4B、3B、3B+で確認。

挙動を一時的に変えることもできます。

そもそも、なんで変えたいかというと、ラズパイは、電源を切ったら良いのか？？という話からつながっています。
「不安定なラズパイの作り方、あるいはラズパイの電源の切り方」
https://qiita.com/naohiro2g/items/1767f5a775ef8e4283d6

ちなみに、「赤LED、緑LEDの挙動を変えて、稼働中かどうかをわかりやすくする」という趣旨の記事は散見されますが、この記事含め、根本的な解決である、安心して電源が切れる、になりません。残念ながら、(2)の期間が長い時があり、(4)との区別がつかないからです。


| #  |    状態                | 赤LED  | 緑LED   |備考|
|:---:|:----------------------|:------:|:-------:|:-:|
| (0) | 電源投入→起動中         |点灯    | アクセス  ||
| (1) | 稼働中（オリジナル設定）|点灯| アクセス | |
| **(1')** | **稼働中（今回の設定）**  |**アクセスランプ**| **ゆっくり点滅** | **「稼働中」が明確**|
| (2) | シャットダウン処理開始→  |点灯    | 消灯     | 数秒〜数分|
| (3) | シャットダウン処理終了時  |点灯    | 10回点滅 ||
| (4) | シャットダウン完了後     |点灯    |  消灯    |電源を切ることができる|

オリジナル設定では、赤LEDがいつも点灯しているので、稼働中／シャットダウン指示後の区別がつきにくい。今回の設定では、稼働中が明らかにわかるところが改善点。しかし、依然、シャットダウン中／完了がはっきりしない。

結果、「緑LEDの10回点滅」あるいは「ディスプレイ信号がなくなりました」を見逃せない状況はあまり変わらないのです。シャットダウン処理がいつも数秒で終わるとよいのですが。。




## デフォルト設定

赤LED：「input」
 - 電源低下の監視。一定以上電源電圧が低下すると消灯。それ以外は常に点灯。
緑LED：「mmc0」
 - マイクロSDの読み書きのときにチカチカ点滅。


## 設定キーワード紹介

設定して、再起動で反映されます。
使えそうなグループ。

```
heartbeat：ハートビート、心臓の鼓動のように点滅。チカチカ、、チカチカ、、
(1010 0000 1010 0000....)
timer：0.5秒点灯、0.5秒消灯、つまり、1秒周期でゆっくりチカチカ点滅。
mmc0：マイクロSDアクセス
mmc1：USB接続のSSDアクセス   赤のほうがおとなしく見える。
```

その他

```
none：消灯、赤LEDには効かない模様。
default-on：常時点灯
input：電源電圧監視、低下すると消灯
cpu：少しでも動いていると点灯なので、ほぼ意味なし。
cpu0, cpu1, cpu2, cpu3：各コア別。同上。
rfkill0：WiFi 起動中、シャットダウン中など無効時のみ消灯。
rfkill1：Bluetooth  無効時に消灯。
backlight：純正LCDのバックライトと連動？、使ってないとずっと消灯。（未確認）
```
cpu、スレッショルドが設定できれば、使えるのに残念。。
WiFi/Bluetoothもアクセス状況の監視には使えません。

ちなみに、赤に動作を割り当てても、以下のフェーズではデフォルトの電源インジケータ（input設定）になります。

 - 電源投入直後から起動終了まで
 - shutdown開始からshudown完了後まで


## 一時的に挙動を変えたい！

ファイルシステム上のデバイスとして、ここにあります。
緑色：` /sys/class/leds/led0`
赤色：` /sys/class/leds/led1`

### 挙動を変える（各設定値を試すときに便利です。）


```
sudo sh -c 'echo heartbeat  >led0/trigger'
```

### 強制で点灯／点滅

```
$ sudo sh -c 'echo 1 >led0/brightness'  # 緑色消灯
$ sudo sh -c 'echo 0 >led0/brightness'  # 緑色点灯
```
クラスなどでラズパイを複数台使っている時、どれがどれだかわからなくなった／わかりにくい時に便利。遠目でもわかりやすい。（レアケースだけど、あるんです！ 非常に実用的。）


### 設定キーワードを試す

お試しは、以下のように

```
sudo sh -c 'echo heartbeat  >led0/trigger'
```

キーワード一覧はこちら。

```
cat led0/trigger   # green-act led

none rc-feedback kbd-scrolllock kbd-numlock
kbd-capslock kbd-kanalock kbd-shiftlock
kbd-altgrlock kbd-ctrllock kbd-altlock
kbd-shiftllock kbd-shiftrlock kbd-ctrlllock
kbd-ctrlrlock timer oneshot heartbeat backlight
gpio cpu cpu0 cpu1 cpu2 cpu3 default-on input
panic mmc1 [mmc0] rfkill-any rfkill-none
rfkill0 rfkill1

cat led1/trigger   # red-pwr led

none rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer oneshot heartbeat backlight gpio cpu cpu0 cpu1 cpu2 cpu3 default-on [input] panic mmc1 mmc0 rfkill-any rfkill-none rfkill0 rfkill1

```
キーボードのロック表示で使おうとしていた形跡がありますね。



## 個人的に気に入っている設定例

稼働中は、緑が1Hzでゆっくり点滅、ファイルアクセスで赤がチカチカ。
シャットダウンのプロセスに入ると、緑が点滅、赤が点灯。
シャットダウン完了後は、赤が点灯。（本当は全部、消灯してほしい。）

通常のマイクロSDカード起動の場合

```
dtparam=act_led_trigger=timer        # slow blink for green
dtparam=pwr_led_trigger=mmc0         # microSD for red
```

SSDブートの場合

```
dtparam=act_led_trigger=timer        # slow blink for green
dtparam=pwr_led_trigger=mmc1         # SSD for red
```