Raspberry Pi のモニタが動かない件を直す

机の上のサイネージ

Raspberry Pi 3B に、公式のタッチディスプレイを接続して個人用のサイネージに使っている。
デスク上の時計として結構便利で、これを見ながらそろそろこの会議終わるかなーとか思って生活している。

これがapt upgradeなんかしたときに再起動すると、デスクトップが立ち上がらないトラブルに度々見舞われており、
今回はちょっとだけちゃんと調べて直した。

構成

MagicMirror は、デジタルサイネージに使えるOSSで、
ほんとに簡単な設定だけで npm runして使える。

事象

Raspberry Pi を再起動すると、OSの起動スクリーンはモニタに表示されるものの、
カーソルが点滅したまま画面が固まってしまうケースが多々あった。

SSHはできており、単にDesktopが立ち上がっておらず、
/var/log/Xorg.0.log には No devices detected. とエラーが。

[  1730.754] (EE) open /dev/dri/card0: No such file or directory
[  1730.754] (EE) No devices detected.
[  1730.754] (EE) 
Fatal server error:
[  1730.754] (EE) no screens found(EE) 
[  1730.754] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[  1730.754] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[  1730.755] (EE) 
[  1730.757] (EE) Server terminated with error (1). Closing log file.

 

だめな対処経緯

これまで無理やり電源ON/OFFという暴挙で、たまにちゃんと動く時があったので耐えていた。

またapt upgradeするとすんなりデスクトップが立ち上がってくれたときもあったので、
うーん、裏のリボンケーブルが悪いんだろうなと勝手に思っていた。

裏には、周りの照度で画面の明るさを変えれるようにluxセンサもつけていたし、
ジャンパワイヤもブレッドボードも10年選手のため不安であった。

モニタの裏

「ラズパイ モニタ 動かない」なんてダサいキーワードで治るはずもなく、
ChatGPTにログを送って対処したもののなんだかうまくいかない。

なおす

ちゃんと調べるといくつかIssuesが見つかる

どうやらどれも /boot/config.txt をちょっといじるようだ。
rpi-update コマンドを叩く方法もあるようだが、これは辞めとけ記事が多くてビビって辞めた。

次の通り直してみた。以下関係ありそうなあたりの抜粋。

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
# dtparam=i2c_arm=on
#dtparam=i2s=on
dtparam=spi=on ← なぜかこれをONにする記事を見かけたので有効化してみる

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
# dtparam=audio=on ← 音使ってないからいっそ無効化

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
# dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

# Rotate screen for mydisp
lcd_rotate=2 ← これはもともと入れてた画面の回転用設定

dtparam=i2c_vc_baudrate=50000 ← これが激推しされていた設定。末尾に追記。

 

このbootの設定を入れて今は調子良く動いている。

今度再起動かけたりしたときの挙動がきになる。