Raspberry Pi Zero 2 WにAI Cameraを使って表示はVNC経由で遊んでいました。
その後、なんとなくつけたSPIディスプレイ(240x240)の影響でVNCも240x240に表示され、アワアワしたので解決方法を記載しておきます。
/boot/firmware/config.txtの修正
以下の4行を追加
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82
hdmi_ignore_edid=0xa5000080
hdmi_force_hotplug=1で物理的に接続されていなくても「HDMIポートというものが存在しますよ」とOSに仮想的なHDMIポートを認識させています。
それ以降のhdmi_xxxは、仮想ポートのデフォルトの解像度や設定をおこなっています。
/boot/firmware/cmdline.txtの修正
最後に以下を追加
cmdline.txtは、1行にしておく必要があり、最後に空白を入れて追記する
video=HDMI-A-1:1920x1080@60D
追加後
console=tty1 root=PARTUUID=e2a564ca-02 rootfstype=ext4 fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP video=HDMI-A-1:1920x1080@60D
video=HDMI-A-1:1920x1080@60Dは、OSが起動する際にSPIディスプレイのドライバなど他の設定に上書きされないように「HDMI-A-1の解像度は絶対に1920x1080にしなさい」と命令しています。
再起動
$ sudo reboot
マルチディスプレイになっているか確認
$ wlr-randr
SPI-1 "(null) (null) (SPI-1)"
Enabled: yes
Modes:
240x240 px, 60.000000 Hz (preferred, current)
Position: 0,0
Transform: normal
Scale: 1.000000
HDMI-A-1 "(null) (null) (HDMI-A-1)"
Enabled: yes
Modes:
640x480 px, 59.939999 Hz
848x480 px, 60.000000 Hz
800x600 px, 56.250000 Hz
800x600 px, 60.317001 Hz
1024x768 px, 60.004002 Hz (current)
Position: 240,0
Transform: normal
Scale: 1.000000
2つのディスプレイは認識しているようですが、1920x1080@60ではなく、1024x768@60で動作しているようです。
Geminiに聞いて解決方法を教えてもらったのですが、効果なし。
- グラフィック用のメモリを増やす
- /boot/firmware/config.txtにgpu_mem=128を追記
- グラフィックドライバが利用できる連続したメモリ領域を増やす
- /boot/firmware/config.txtのdtoverlay=vc4-kms-v3dに ,cma-256を追記
- 解像度の指定からリフレッシュレートを削除
- /boot/firmware/cmdline.txtのvideo=HDMI-A-1:1920x1080@60Dをvideo=HDMI-A-1:1920x1080Dに変更
おまけ
マルチディスプレイにしてVNCの方は1024x768で表示されるようになりましたが、あくまでもサブディスプレイ扱いでメニューとかはメインディスプレイの240x240の方に表示されていました。
メインディスプレイを仮想ディスプレイにしようかと思ったのですが、その場合単体で起動した時に困りそうだったので、メインディスプレイはあくまでも240x240にしています。
で、VNC経由の方はcontrol + option + t(Macの場合)をつかってショートカットキーでターミナルを起動して使っております。