ラズパイの最新OSは RaspberryPi OS (64-bit) bookworm なのですが、VNCを有効化してもRealVNCで接続できなくなっていたので、接続方法を調べました。
原因
bookwormからデスクトップのウィンドウマネージャーが X11 から Wayland に変更されたようで、RealVNCがWaylandに対応していないため接続できないようでした。
/usr/bin/raspi-config
を読んでみたところ、wayvncというVNCサービスが起動するようになっていました。
RealVNCの公式によるとこの解決方法は2種類あるみたいです。
Connecting to WayVNC on a Raspberry Pi device running Wayland using RealVNC Viewer | RealVNC
解決策1
※ WayVNC のバージョンが0.7.0以降であればこちらの解決策
バージョン0.7.0以降の WayVNC は RealVNC と互換性のある RSA-AES 認証が追加されたらしく、適切な証明書を生成すると、RealVNCから接続できるようになるみたいです。
ラズパイ側の操作
# waylandのバージョン確認
wayvnc --version
# vncを有効化 (0=有効, 1無効)
sudo raspi-config nonint do_vnc 0
# 証明書の生成
sudo ssh-keygen -m pem -f $HOME/.config/wayvnc/rsa_key.pem -t rsa -N ""
$HOME/.config/wayvnc/config
に下記の設定を追加
rsa_private_key_file=rsa_key.pem
use_relative_paths=true
# 再起動
sudo reboot
接続端末の操作
Real VNC Viewer をダウンロードして接続。
ラズパイのIP
ポート (5900)
ユーザー名
パスワード
を指定して接続します。
解決策2
ウインドウマネージャーをX11に戻して、RealVNCサーバーを起動します。
ラズパイ側の操作
# デスクトップのウィンドウマネージャーを Wayland から X11 に変更 (W1=X11, W2=Wayland)
sudo raspi-config nonint do_wayland W1
# リブート
sudo reboot
# vncを有効化 (0=有効, 1無効)
sudo raspi-config nonint do_vnc 0
# vncが有効化されているか確認 (0=有効, 1無効)
sudo raspi-config nonint get_vnc
接続端末の操作
Real VNC Viewer をダウンロードして接続。
ラズパイのIP
ポート (5900)
ユーザー名
パスワード
を指定して接続します。