🍎

Mac から Raspberry Pi に VNC 接続しようとしたら、ハマって時間を溶かした話

に公開

はじめに

この記事は下の動画の記事版です!
動画の方が操作方法とかがわかりやすと思うのでぜひ見てみてください

https://youtu.be/Vt6RhlHD6QA

今回は、Mac から Raspberry Pi に VNC 接続しようとしたら、ハマって時間を溶かした話です

https://youtu.be/P3iPE91sjfw?si=H_2ru1wmJ3wJl53Z
https://youtu.be/69L6ABHA7YI?si=VXd2ffnXqeekHHHe

こういう系も需要ありそうで動画化してるので、誰かの何かの役に立てば幸いです
一応、今回のはハマって時間を溶かした話なので最終的には成功してます

つながるやり方

まず、やりたかったことは『Mac 標準の VNC 接続で Raspberry Pi に接続する』ですね
『割と普通だし、すぐ終わるっしょ』と思って気軽に始めたのが悲劇の始まりでした

バージョン

  • MacBook Air ( M1 )
    • Sequoia 15.4.1
  • Raspberry Pi 4B
    • Raspberry Pi OS
      • Debian version: 12 (bookworm)
    • RealVNC Server 7.11.0 (r18) ARMv8-A (Apr 22 2024 15:20:33)

それで、今回使用したハードウェアと OS, ソフトウェアのバージョンはこんな感じです
こちらも動画編集時点ならほぼ最新で、至って普通の構成だと思いますね

コマンド

今回はだいぶハマったので、とりあえずこの環境でちゃんとつながるまでを CUI オンリーで解説します
Raspberry Pi の方は新規インストールして検証しているので、再現性は大丈夫なはずです

# X11 に切替
sudo raspi-config nonint do_wayland W1

# X11 有効化
sudo reboot

# VNC 有効化
sudo raspi-config nonint do_vnc 0

# 0 で VNC が有効になっている
sudo raspi-config nonint get_vnc

# Mac で接続する用の設定を書き込み
echo -e "Authentication=VncAuth\nEncryption=PreferOff" | sudo tee /etc/vnc/config.d/common.custom > /dev/null

# 内容確認
sudo cat /etc/vnc/config.d/common.custom

# VNC パスワード設定
sudo vncpasswd -service -legacy

# 再起動して設定有効化
sudo systemctl restart vncserver-x11-serviced.service

使うコマンドはこんな感じで、そんなに多くないですよね
一応、コメントは書きましたが簡素なので、上から順に解説しますね

  1. Raspberry Pi 設定ツールの非インタラクティブモードで X11 に切り替え
  2. 再起動して X11 を有効化
  3. 同じく設定ツールで VNC を有効化
    • これで RealVNC Server が起動していると思います
  4. コマンドでも有効化されていることを確認
    • 0 になってれば有効です
  5. ワンライナーで認証方法の変更と暗号化の設定を VNC の設定ファイルに書き込み
  6. こちらも正しくファイルに書き込めてるかコマンドで確認
  7. さっき変更した VNC 認証用パスワードを legacy オプション付きで設定
  8. 最後に RealVNC Server を再起動して設定を反映したら完了

あとは Mac の Finder からサーバ接続で vnc://ホスト名(xxx.local) って、さっき設定したパスワードで認証すればちゃんとつながります
こんな感じで、分かればコマンドそんなに多くないし、GUI でもそこそこ簡単にできるんですけど、この方法にたどり着くまでにめっちゃ回り道しちゃったっていうのが今回の動画ですね

原因

ここからが、原因深堀りパートですね
まず、つながらなかった原因の前にハマって時間溶かした原因ですが、エンジニアあるあるで参照してた情報が古かったですね
そういうこともあって、動画化した側面もあります
改めて、前提とかバージョンとかをしっかりチェックすること、他の人のためにバージョンとかをちゃんと書くことの大事さを学びました

根本原因

それで、本題のつながらなかった原因ですが、一番の原因はウィンドウシステムが X11 から Wayland に変更されたことでした

これが変わったのが、Raspberry Pi OS が Debian version: 11 (bullseye) から Debian version: 12 (bookworm) に変わった時ですね

つながらなかったおおまかな流れとしては
X11 から Wayland に変わる
→ 標準 VNC サーバの RealVNC Server が Wayland 未対応で起動しない
→ Mac からつながらない
って感じでしたね

当たり前かもですが、今回やったコマンド全てに意味があって、たとえば、パスワード設定で legacy オプション忘れると表示上は同じエラー画面でつながらなかったりと、ハマるポイントは多かった気がしますね

転用

原因から考えるに Mac のハードウェアと OS は、とりあえず Apple Slicon 系ならどれでも同じ方法でいけると思います
Raspberry Pi の方ですが、OS は Debian version: 12 (bookworm), ハードウェアは多分どれでも流用できそうって感じですね

別案

Mac からつなぐだけなら、適切な VNC Viewer 入れれば楽につながると思います
Viewer 入れないなら、 編集時点で Beta 版ですが Raspberry Pi Connect ってのもあるので、そっちを試しても良かったかなって感じです

https://www.raspberrypi.com/software/connect/

まとめ

最後にまとめです

  • ちゃんとつながるコマンドは見つけた
  • X11 から Wayland に変わったのが原因
  • Apple Slicon 系の Mac なら流用できそう
  • bookworm の Raspberry Pi なら流用できそう
  • 簡単にやるなら VNC Viewer いれる
  • Raspberry Pi Connect も検討
  • 前提とかバージョンとかをしっかりチェック
  • 前提とかバージョンとかをしっかりチェック
    • 大事なことなので二度言いました

締め

最後まで見ていただき、ありがとうございました
気に入っていただけた方は、いいね、動画のチャンネル登録、高評価をよろしくお願いします!

Discussion