Raspberry Pi 4B 画面解像度設定（TV出力版）

## 【前文】
[Raspberry Pi 4B 導入](https://qiita.com/god19/items/95ebf608fd38d1f18883 "Raspberry Pi 4B 導入 - Qiita") の続き。画面解像度の変更ができなかったので、その対応。

###### 2020/10/25 追記
更に続きは以下参照。
[Raspberry Pi 4B 画面解像度設定（TV出力版）改](https://qiita.com/god19/items/12db104cf5f77110480b "Raspberry Pi 4B 画面解像度設定（TV出力版）改 - Qiita.html") 

## 【環境】
出力は今となっては少々古いプラズTV。勿論入力は HDMI。

| 型番 | メーカー | 備考 |
| ---- | ---- | ---- |
| TH-42PX60 | Panasonic | 42V型 液晶テレビ ビエラ |

## 【現象】
「Raspberry Pi の設定」画面の「システム」タブに「解像度」項目が表示されない。初期状態 `1280x720` から変更のしようがない。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/b9caeaf7-ce85-cd38-1d4b-fbfac0fb0460.png" width=75%>
`raspi-config` で解像度を変更しても反映されない。
残る手段は `/boot/config.txt` での設定。しかしこれって項目が多すぎて苦手なんだよなぁ。とはいえ、42型で上記の解像度は残念なので重い腰を上げる。

## 【結論】
`/boot/config.txt` に `hdmi_ignore_edid=0xa5000080` を追記する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/6d0dbbbd-0b95-8828-6cd7-1c926c11c2c1.png" width=75%>

## 【経緯】
多少の試行錯誤、紆余曲折はあったので記録に残す。

公式のヘルプは以下。
[Video options in config.txt](https://www.raspberrypi.org/documentation/configuration/config-txt/video.md "Video options in config.txt - Raspberry Pi Documentation")
> モニターに有効な値はどれですか？
> ご使用のHDMIモニターは、限られた形式のセットのみをサポートする場合があります。サポートされている形式を確認するには、次の方法を使用します。
> 
> 出力形式をVGA 60Hz（hdmi_group=1およびhdmi_mode=1）に設定し、Raspberry Piを起動します
> 次のコマンドを入力して、CEAがサポートするモードのリストを表示します。 /opt/vc/bin/tvservice -m CEA
> 次のコマンドを入力して、DMTがサポートするモードのリストを表示します。 /opt/vc/bin/tvservice -m DMT
> 次のコマンドを入力して、現在の状態を表示します。 /opt/vc/bin/tvservice -s
> 次のコマンドを入力して、モニターからより詳細な情報をダンプします。 /opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat
> またedid.dat、デフォルトのHDMIモードの問題をトラブルシューティングするときにも提供する必要があります。

まず上記説明に従いサポートするモードを確認。

```shell-session
pi@raspberrypi4:~ $ /opt/vc/bin/tvservice -m CEA
Group CEA has 8 modes:
           mode 1: 640x480 @ 60Hz 4:3, clock:25MHz progressive 
           mode 2: 720x480 @ 60Hz 4:3, clock:27MHz progressive 
           mode 3: 720x480 @ 60Hz 16:9, clock:27MHz progressive 
  (prefer) mode 4: 1280x720 @ 60Hz 16:9, clock:74MHz progressive 
           mode 5: 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced 
           mode 6: 720x480 @ 60Hz 4:3, clock:27MHz x2 interlaced 
           mode 7: 720x480 @ 60Hz 16:9, clock:27MHz x2 interlaced 
           mode 16: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive 
```
何だ、取得できるじゃん。
ここら辺の情報の取得に失敗して「Raspberry Pi の設定」画面から「解像度」項目が消えているのかと思っていたんだけど。
`1920x1080` に変更したいので、mode は 5 か 16 という見当がつく。
次に現在のモードを確認。

```shell-session
pi@raspberrypi4:~ $ /opt/vc/bin/tvservice -s
state 0xa [HDMI CUSTOM RGB lim 16:9], 1280x720 @ 60.00Hz, progressive
```


`config.txt` の変更前にバックアップ。

```shell-session
pi@raspberrypi4:~ $ cd /boot
pi@raspberrypi4:/boot $ sudo cp config.txt config.txt.org
```

`config.txt` の`hdmi_group` `hdmi_group` のコメント（#）を外し、値を変更、保存。再起動。

```config.txt
hdmi_group=1
hdmi_mode=5
```

しかし画面解像度は変化せず。`hdmi_mode=16` でも同様。これだから `config.txt` は嫌いなんだよ。思うようになってくれない。
再び前述ヘルプを確認。関係ありそうな項目を探す。

> hdmi_ignore_edid
> に設定hdmi_ignore_edidすると0xa5000080、ディスプレイに正確なEDIDがない場合、EDID /ディスプレイデータを無視できます。この異常な値は、誤ってトリガーされないようにするために必要です。

自分の環境の場合、EDID がダメっぽいので `hdmi_ignore_edid=0xa5000080` を追記してみる。
これが正解だった。再起動後無事画面解像度が反映された。
更に、`hdmi_group` `hdmi_group` を初期状態に戻しても（コメント化しても）画面解像度は 1920x1080 となるので、結論として前述の通りということになる。

```shell-session
pi@raspberrypi4:/boot $ /opt/vc/bin/tvservice -s
state 0x9 [HDMI CUSTOM RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive
```

## 【その他】
公式フォーラムの `Troubleshooting` の上位にもこの手のトピックが挙がっているので躓く人は多いんでしょう。
[STICKY: Setting up HDMI output when video output is wrong.](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=5851 "STICKY_ Setting up HDMI output when video output is wrong. - Raspberry Pi Forums")