2024年9月25日水曜日

ディスプレイがRaspberry Pi と相性が悪い場合の対処法

Raspberry Pi には、相性の悪いディスプレイがあるという問題があるようです。そのようなディスプレイでは、OSをインストールしたmicroSDカードを挿入してRaspberry Piに電源を入れてもディスプレイに映像が映りません。

本ページではその場合の対処法を記します。

0. 準備

Raspberry Pi 用に OS をインストールした microSD カードを PC に接続します。そして、エクスプローラーの「PC」の項目を見ると、下記のように「bootfs」というディスクが存在していることがわかります。ここをダブルクリックすると、中に「cmdline.txt」や「config.txt」というテキストファイルがあるので、用いている OS に対応するファイルをメモ帳などのテキストエディタで開きます。

1. 用いている OS が最新 (Bookworm) の場合

2023年10月にリリースされた、2024年8月時点で最新のOSである、Bookworm を用いている方は、「cmdline.txt」を編集する必要があります。 通常は、「cmdline.txt」をダブルクリックすると、メモ帳などでファイルが開かれるでしょう。その中に、下記の1行が記されています。
console=serial0,115200 console=tty1 root=PARTUUID=877fcbb5-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP
この行の末尾に、半角スペースを一文字挿入してから、「video=HDMI-A-1:1920x1200@60D」などのようにディスプレイの解像度を追記します。「1920x1200」の部分は、お使いのディスプレイに適した値に設定してください。私の場合、ここに「1280x768」と記したことがあります(参考:株式会社クリスタージュ ディスプレイ解像度・サイズ 一覧)。
console=serial0,115200 console=tty1 root=PARTUUID=877fcbb5-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP video=HDMI-A-1:1920x1200@60D
以上の記述を行ったら、ファイルを保存してテキストエディタを閉じてください。そして、microSDカードを Raspberry Pi に取り付け、電源を投入してみましょう。 うまくいけば、ディスプレイが表示されるでしょう。
なお、この設定を行ったときの副作用として、「Raspberry Pi の電源投入時にディスプレイが接続されておらず、あとから接続してもディスプレイが映る」という効果があります。

また、ディスプレイが映り起動した後、デスクトップ左上のメニューから「設定」→「Screen Configuration」を起動し、下図のように 「レイアウト」→「Screens」→「HDMI-1(または HDMI-A-1)」→「解像度」の項目を cmdline.txt に記した解像度の設定に合わせ、「Apply」ボタンを押して設定変更を適用する必要がある場合があります。
上図は、cmdline.txt に video=HDMI-A-1:1280x768@60D と記した場合の例です。

2. 用いている OS が一世代前の Legacy (Bullseys) の場合

2023年10月より前にリリースされていた OS である、Bullseye などを用いている方は、「config.txt」を編集する必要があります。 通常は、「config.txt」をダブルクリックすると、メモ帳などでファイルが開かれるでしょう。その中に、下記の1行が記されています。 すると、下図のようなファイルが開かれますので、6行目の「#hdmi_safe=1」という行の先頭の「#」を削除し、上書き保存してメモ帳を閉じてください。

なお、古い Windows を用いている方は、このファイルが正しく開けません(正しく改行されて見えない)。その場合「サクラエディタ (V2 (Unicode版))」のように改行を正しく処理できるテキストエディタをインストールし、そのサクラエディタで config.txt を開くようにしてください。
さて、「#」を削除して保存したら microSD カードを Windows から取り外し、Raspberry Pi に取り付け、電源を投入してみましょう。

ディスプレイに映像が映ったでしょうか。
ただし、映ったとしても画面の解像度は低い状態かもしません。 その場合、config.txt でさらに下記の設定を行うと、解像度を変更できる可能性があるようです(参考:ラズパイの電源を入れた後にHDMIを挿しても画面が表示される方法)。
下記の行の先頭の「#」を削除してディスプレイの幅 (width) と高さ (height) を適切に設定し、
#framebuffer_width=1280
#framebuffer_height=720
さらに、次の行の先頭に「#」を記述して無効化します。
dtoverlay=vc4-kms-v3d

3. 安価なモバイルディスプレイでのトラブルについてのコメント

さて、以上の対応でディスプレイのトラブルは解消されたでしょうか?
解消されたならば良いのですが、残念ながらそうならないケースも多いのではないかと思います。

個人的には、amazon などで 1 万円前後で購入した安価なモバイルディスプレイが期待した動作をしない、という経験を何度かしています。
そのモニターが、「Raspberry Pi 対応」をうたっていたにも関わらず、です。

そういう場合はあきらめるしかない、と個人的には思っています。私が経験した「使い物にならなかった安価なモバイルディスプレイ」の挙動は以下の通りです。
  • [ケース1] 画面は映るのだが、モバイルディスプレイの電源がONの状態では Raspberry Pi の Wifi が切れる。モバイルディスプレイの電源がOFFのときのみ、Wifi が繋がる(電源の容量の問題?)。そのため、書籍やブログ用に画面のスクリーンショットを取るときくらいにしか役に立たない
  • [ケース2] 特定の手順での接続と電源ONをしないと画面が映らない。例えば、Raspberry Pi の電源投入時は、HDMI 接続をしておくがモバイルディスプレイの電源はOFFのままにしておく。そろそろ OS が起動しただろうな、というタイミングでモバイルディスプレイの電源をONにすると画面が映る。それ以外の手順では一切画面が映らない。画面が映った状態で Raspberry Pi を再起動すると、この特定の手順に当てはまらないので画面は映らなくなる。これもほぼ役に立たない
どちらのケースも、Windows PCに接続すると問題なく動作するので、Raspberry Pi での利用はあきらめるしかないのかな、と思っています。

ちなみに、期待通りに動作したモバイルディスプレイは下記の通りです。
  • Raspberry Pi モニター 15.6インチ: モバイルディスプレイというにはやや大きいのですが、さすがに公式だけあって問題なく動作します
  • IODATA LCD-CF161XDB-MT/E: さすがに大手メーカーだけあってしっかりしています。ただし、お値段もそれなりです
安価でなおかつ安定して動作するモバイルディスプレイははなかなか見つからないなあ、というのが個人的な印象です。

0 件のコメント:

コメントを投稿