LoginSignup
1

More than 3 years have passed since last update.

RaspberryPiにx11vncサーバーを導入して、物理ディスプレイが使用しているディスプレイ番号にリモートから接続する

Last updated at Posted at 2019-04-04

問題

ディスプレイが接続してあるRaspberryPiに対してUbuntuからリモート接続してみたところ、ディスプレイが同期されなかった。つまり、RaspberryPiに接続されているディスプレイが表示しているデスクトップとは別のデスクトップに繋がってしまった。

原因

これまではRaspberryPiのVNCサーバーとしてXtightvncを用いていたのだが、Xtightvncには物理ディスプレイが用いているディスプレイ番号(0)を使用することができないという特性があり、VNCサーバーを立ち上げる際は必ず1以上のディスプレイ番号が割り当てられてしまうことが問題の原因だった。

ディスプレイ番号について

私の場合、RaspberryPiのGUI(デスクトップシステム)にはXWindowSystemを使用していた。
このXWindowSystemではデスクトップ1つ1つにデスクトップ番号が割り振られる。
ディスプレイ番号はxdpyinfoを実行してname of display欄を確認することによって確かめられる。
例えば、


$ xdpyinfo
name of display:    localhost:0.0
...

となっていた場合localhost:(ディスプレイ番号).(スクリーン番号)となっているため、ディスプレイ番号は0、スクリーン番号は0となる。

解決

x11vncを用いることでディスプレイ番号0に接続して、物理ディスプレイに表示されているデスクトップを操作することができた。

実行コマンドは以下の通り。


sudo apt update --fix-missing
sudo apt install xorg-dev #必要パッケージ
x11vnc --storepassword #ここでVNC接続に用いるパスワードを設定する
x11vnc -auth guess -display :0 -rfbauth /home/pi/.vnc/passwd -rfbport 5900 -forever -loop -noxdamage -repeat -shared #動作確認
sudo gedit /etc/systemd/system/x11vnc.service #デーモンファイル作成(内容は後述)

#以下デーモン起動
sudo systemctl daemon-reload
sudo systemctl enable x11vnc
sudo systemctl start x11vnc

なお、デーモンファイルの中身は以下のとおりである。

escription=x11vnc (Remote access)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -display :0 -rfbauth /home/pi/.vnc/passwd -rfbport 5900 -forever -loop -noxdamage -repeat -shared
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target

使用ツール

  • Rapberry Pi 3 Model B
  • x11vnc
  • xorg-dev
  • VNC Viewer (realVNC)

参考文献

http://extstrg.asabiya.net/pukiwiki/index.php?vncserver%A4%CE%BB%C8%CD%D1%CA%FD%CB%A1
https://blog.asial.co.jp/842
https://ubuntuforums.org/showthread.php?t=1538189
http://mixture.dcmnjp.net/linux/ubuntu/x11vnc.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1