【前文】
Raspberry Pi 4B 導入 の続き。画面解像度の変更ができなかったので、その対応。
2020/10/25 追記
更に続きは以下参照。
Raspberry Pi 4B 画面解像度設定(TV出力版)改
【環境】
出力は今となっては少々古いプラズTV。勿論入力は HDMI。
型番 | メーカー | 備考 |
---|---|---|
TH-42PX60 | Panasonic | 42V型 液晶テレビ ビエラ |
【現象】
「Raspberry Pi の設定」画面の「システム」タブに「解像度」項目が表示されない。初期状態 1280x720
から変更のしようがない。
raspi-config
で解像度を変更しても反映されない。
残る手段は /boot/config.txt
での設定。しかしこれって項目が多すぎて苦手なんだよなぁ。とはいえ、42型で上記の解像度は残念なので重い腰を上げる。
【結論】
/boot/config.txt
に hdmi_ignore_edid=0xa5000080
を追記する。
【経緯】
多少の試行錯誤、紆余曲折はあったので記録に残す。
公式のヘルプは以下。
Video options in config.txt
モニターに有効な値はどれですか?
ご使用の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モードの問題をトラブルシューティングするときにも提供する必要があります。
まず上記説明に従いサポートするモードを確認。
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 という見当がつく。
次に現在のモードを確認。
pi@raspberrypi4:~ $ /opt/vc/bin/tvservice -s
state 0xa [HDMI CUSTOM RGB lim 16:9], 1280x720 @ 60.00Hz, progressive
config.txt
の変更前にバックアップ。
pi@raspberrypi4:~ $ cd /boot
pi@raspberrypi4:/boot $ sudo cp config.txt config.txt.org
config.txt
のhdmi_group
hdmi_group
のコメント(#)を外し、値を変更、保存。再起動。
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 となるので、結論として前述の通りということになる。
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.