VNCでRaspberryPi4を操作できるようにする


需要があるかどうかはわからないが、自己満で初めての記事を書く。

RaspberryPiでVNCを構築する記事は調べれば出てくるがその殆どはTigerVNCを利用している。しかし、基本的にはTigerVNCはLAN内だけでしか接続できない。RaspberyPiOSに標準で搭載されているRealVNCは外出時でも接続ができたり、友人も接続する(同時に接続はできないが)ことが可能である。そこでRealVNCの環境をUbuntuで構築していく。

注意:この記事の内容は2021年9月時点のものです

前提条件

  • Raspberry pi 4 Model B 8GB RAM
  • Ubuntu Server 21.04 64bit
  • ラズパイがインターネットに接続できている
  • 接続先のPCはWindows10 21H1

デスクトップ環境のインストール

RealVNCはデスクトップ環境があることが前提なので入れておく。
ubuntu-desktopやLubuntuなど様々な物があるので、好みに合わせる。今回はXubuntuを入れる。
パッケージの一覧を更新

sudo apt update

デスクトップ環境のインストール。結構時間かかる

sudo apt install xubuntu-desktop

インストールが完了したら再起動しておく

sudo reboot

参考

RaspberryPiにVNCserverを入れる

RaspberryPiOSに標準で入っているものにはライセンスが付与されているが、自前で入れるとライセンスはないのでアカウントが必要になってくる。
Sign up or sign inでRealVNCのアカウントを作る。
- plan to use VNC Connect forは personal use
- Phone numberは無くてもok

できたら、ここからrealvnc-vnc-serverのarm64となっている最新ものをダウンロードして、インストールする。

次にRealVNCに必要なファイルのパスをリンクする。これをしないと正しく動作しない。

sudo ln /usr/lib/aarch64-linux-gnu/libbcm_host.so /usr/lib/libbcm_host.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libvcos.so /usr/lib/libvcos.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libmmal.so /usr/lib/libmmal.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libmmal_core.so /usr/lib/libmmal_core.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libmmal_components.so /usr/lib/libmmal_components.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libmmal_util.so /usr/lib/libmmal_util.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libmmal_vc_client.so /usr/lib/libmmal_vc_client.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libvchiq_arm.so /usr/lib/libvchiq_arm.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libvcsm.so /usr/lib/libvcsm.so.0
sudo ln /usr/lib/aarch64-linux-gnu/libcontainers.so /usr/lib/libcontainers.so.0

全てできたら、vncserverの2つのサービスを有効化、起動する

sudo systemctl enable vncserver-x11-serviced.service
sudo systemctl enable vncserver-virtuald.service

sudo systemctl start vncserver-x11-serviced.service
sudo systemctl start vncserver-virtuald.service

そして、次のコマンドを実行する

sudo vnclicensewiz

すると次の画面が出るので指示に従って、先程作ったアカウントでログインする

これで、RealVNCのセットアップは完了。

HDMIを取り外しても使えるようにする

ただ、このままではラズパイにHDMIを繋げたままでないとVNCの接続ができないので、HDMIを取り外しても使えるようにする。

sudo vim /etc/gdm3/custom.conf

#WaylandEnable=false この行の#を消してコメントを解除する
sudo vim /boot/firmware/config.txt

##下の5つを追記する##
dtoverlay=vc4-fkms-v3d-pi4
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82
hdmi_drive=2

hdmi_modeは、RaspberyPiDocumentationのThese values are valid if hdmi_group=2 (DMT)の一覧からモニターに合わせて選ぶ。
例えば1920x1080,60Hzなら82、1280x720,60Hzなら85である

最後に再起動しておく。HDMIを外すなら、その際に外す。
これでHDMIを取り外してもVNCで使える。

参考

RealVNC Server on UBUNTU 20.10 (ARM64) on Raspberry Pi 4 (8GB) (2021 UPDATE) - YouTube

PCにVNCViewerを入れる

Download VNC® Viewerからexeファイルをダウンロードして、インストール。
インストール後、先程作ったアカウントでログイン。自分のラズパイを選んで開けばラズパイをリモートで操作できる。
LAN内だけであればログインせずにipアドレスを入力しても繋げる事もできる。


アプリを入れればAndroidからも。