け い ざ ん の D I Y 工 房

◆Home
◆住まいの D I Y
◆パソコン D I Y
◆ROBOT D I Y
◆電子工作 D I Y
◆Science

●パソコンから RaspberryPi 4BにVNC接続する。

 2020.07.18

Raspberry Pi の Display 表示画面を、パソコン上にそのまま表示させる事の
できる VNC というSOFT があります。
これを install すれば Raspberry Pi の専用 Display の取付・取外しは
しなくて済む様になり、パソコン側からすべての操作が可能になります。
これには、Raspberry Pi 側の設定変更と、Windows PC 側の
install 作業があります。


Raspberry Pi 側の設定
  まず、Raspberry Pi 側は、立ち上げた Top画面から左上のラズパイマークを
  Click して Menu から「設定」を行います。
  GUI を含む Desk Top 用で標準サポートのアプリも含まれています。
  Desk Top の表示画面
raspiTop


  左上の RasPi マークから menu を開いて Raspberry Pi 設定を選択。
setUp


  初期設定は GUI で行うことができます。
setup


  VNC 有効設定
 「インターフェイス」Tabを開いて「VNC」の「有効」に Check を入れます。
VNC


右下の「OK」を押して画面操作は完了です。
これは再起動を要求されますので、「はい」を押して再起動します。


再起動が完了すると、右上の Task bar に VNC の I-con が表示
される様になります。
このI-con を Click して、VNC Control 画面を表示させます。
右上のMenu I-con を Click して Menu bar を表示させます。
Menu が表示されたら、2行目の Options を選択します。
「UNIX Password」を「VNC Password」に変更します。

  VNC Server Options : UNIX Password → VNC Password
VNC-passwd


  Password 登録
vnc-passwd


Options を変更したら、Password の登録を求められますので
8文字のPassword を登録します。
これは、Windows 側から Login する時に使用する Password になります。



Windows PC 側の作業

「VNC-Viewer」は、Windows 版、Linux 版、Raspberry Pi 用などが
ありますので Windows 版で 64bit zip File を DownLoad します。

こちらから DownLoad → realvnc.com

install が終わって立上げた VNC Viewer 画面



DownLoadしたら VNC Viewerを立上げてFile → New connectionを開きます。


New Connection 画面


VNC Server欄に Raspberrey Piの IP Addressを key inします。
IP Address の後には :1を付けます。
例: 192.168.1.11:1
Name:欄には、Raspberry Pi の名称「pi」を key in します。
「OK」を押せば、Raspberry Pi の Login 画面が表示されます。

これで、接続可能となりました。
Raspberry Pi の画面を消しても、VNC Viewer 画面の I-con を
Click すれば再度表示できます。

Password のkey in を求められますので、continue を押します。



Password入力画面が開きますので Raspberry Piの Passwordをkey inします。


Password key in 画面



Raspberry Pi に設定した Password を key in してください。



Raspberry Pi の IP Address は、ifconfig で知る事ができます。
$ ifconfig


Ethernet の一覧が表示されたら、wlan0:欄の inet 部分が
Raspberry Pi の IP Address になりますのでメモしておきます。


パソコン画面に Raspberry Pi 画面と、Tera Term を表示させる。




Raspberry pi の CPU名で VNC を起動
VNC にIP Address を使用しなくても、avahi を install すれば、
Raspberry Pi の CPU名で設定する事もできます。
avahi の install
$ sudo apt-get install avahi-daemon
$ sudo systemctl enable avahi-daemon
$ sudo systemctl start avahi-daemon
$ systemctl status avahi-daemon


avahi-daemon の install が終わったら config を確認しておきましょう。
use-ipv4=yes, use-ipv6=yes に設定されていれば、OK です。
$ cd /etc/avahi
$ sudo nano avahi-daemon.conf

use-ipv4=yes
use-ipv6=yes


Windows 側の VNC Server 設定画面で、IP Address の代わりに、
Raspberry pi CPU名.localを書き込めば raspberry Piと接続する事ができます。
New Connection 画面
VNC server欄 : CPU名.local
Name欄   : pi

これで、IP Address がころころ変わっても大丈夫。


● VNC接続すると真黒い画面が出る。

 2020.11.24

 画面が出ない時の対処方法
VNC接続した時にパソコン画面に、真黒い画面が出て
「Cannot currently show the desktop」
と表示される場合があります。
これは、Raspberry Pi の HDMI Connector に Display が接続されていない時に
おきます。
Raspberry Pi は接続されている Display の解像度を読み取っていますから
Connector に何も差していなければ、この Error がでます。
対処方法
boot の config.txt を編集して下記の行の # を外します。
$ cd /boot
$ sudo nano config.txt
------------config.txt----------------
#hdmi_force_hotplug=1
 ↓
hdmi_force_hotplug=1

編集後再起動すれば、VNC 画面が表示できる様になります。


上記設定には弊害があります。
この設定を行うと、Raspberry Pi には、Display の有無が分からなく
なりますので、OS 側が HDMI Connector の抜き差しを検出するために
HDMI の優先度を上げてしまいます。
結果として今まで Speaker を使用していた人は、Speaker の優先順位が
下がるので、この設定を行なうと音が出なくなります。

Speaker/Headphones の優先順位
$ cat /proc/asound/cards



この状態では Stereo mini jack 側出力への強制 Command は機能しません。
$ sudo amixer cset numid=3 1  #Stereo mini jack 側への固定

これをたたいても機能しません。



● VNC接続時に画面解像度を Defaultから変更できない。

 2023.11.14

【Raspi display VNC接続の設定】
RaspberryPiにVNC接続した時に低解像のDefault解像度で表示されDisplayの解像度(1920x1080)にできない。

・acer 1600x900 display接続
起動するとGUI側、VNC側いずれも Defaultの 1280x720の解像度で表示される。
設定→Screen Configurationから解像度を 1920x1080に設定値に変更すると下記XRandR faildが出る。
これは当たり前か

XRandR failed:
XRandR returned error code 1: X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 7 (RRSetScreenSize)
Serial number of failed request: 27
Current serial number in output stream: 28

・acer 1920x1080 display接続
RasberryPi に 1920x1080 Displayを取り付けた場合、GUI側及びVNC側いずれも Defaultの 1280x720で表示されるが設定→Screen Configurationで 1920x1080に設定する事ができる。
しかし、RaspberryPiからDisplayを取外して VNC接続すると1280x720で表示されて 1280x720以上の設定項目が無く変更する事ができない。

下記の方法を行なったが解像度を変える事ができない。
・raspi-configの Display options → Resolutionを使用する方法
・/boot/config.txtでframebufferを指定する方法
 #framebuffer_width=1280 → framebuffer_width=1920
 #framebuffer_height=720  → framebuffer_height=1080
・/boot/config.txtでhdmi_groupと hdmi_modeを直接記述して設定する方法
 hdmi_group=2  #DMT
 hdmi_mode=82 #1920x1080 60.0

xrandrを使う方法なら設定できた。
$ cvt 1920 1080 ・・・確認command
# 1920x1080 60.00 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline “1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Modelineから後ろを Copyして下記Commandを入力する。
$ xrandr --newmode “1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
$ xrandr --addmode HDMI-1 1920x1600_60.00
$ xrandr --output HDMI-1 --mode 1920x1600_60.00

この3行を実行する事により、画面解像度を変更することができる。
これを VNC経由で設定すると Can’t open displayが出て設定できない。
RaspberryPIに displayを接続した状態にして、直接mouse,keyboardから入力しないと設定できない。

xrandrで設定しても電源を切ると元の設定に戻ってしまう。
これは別途設定を考える。



● Raspi 4B VNC接続時の画面解像度の永続的な設定変更

 2023.11.29

 xrandrを使用して 1920x1080 の設定値を書いても電源を切れば設定は
 消えてしまうので毎回 Displayを取り付けて電源投入を行い解像度設定を
 行わねばならない。
 これは面倒なので、永続的に画面解像度を固定する方法を検討します。
 まず、display Cableを外した状態にした時に VNC接続すると黒い画面が
 出ない様に /boot/config.txtの #hdmi_force_hotplug=1の#を外します。
 $ sudo nano /boot/config.txt
 #hdmi_force_hotplug=1 → hdmi_force_hotplug=1

●raspi-config画面から解像度の変更をする。
 CUI画面からLXTerminalを起動する。
 raspi-configを起動して Display Options → D1 Resolution →
 → DMT Mode 82 1920x1080 60.00を選択する。
 OK → 終了を押すと再起動を求められるので「はい」を押して再起動する。
 画面は 1280x720で立ち上がり残念ながらこれはうまく行かなかった。

●/boot/config.txt の変更
$ cd /boot
$ sudo nano config.txt
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1   → hdmi_group=2
#hdmi_mode=1   → hdmi_mode=82
 これは再起動しないと反映されないので再起動を行う。
 画面は 1280x720で立ち上がり残念ながらこれはうまく行かなかった。

●/usr/share/dispsetup.sh の画面解像度を変更する
 xrandr Commandの 1280x720部分を 1920x1080に変更する。
#!/bin/sh
if ! grep -q 'Raspberry Pi' /proc/device-tree/model || (grep -q okay /proc/device-tree/soc/v3d@7ec00000/status 2> /dev/null || grep -q okay /proc/device-tree/soc/
firmwarekms@7e600000/status 2> /dev/null || grep -q okay /proc/device-tree/v3dbus/v3d@7ec04000/status 2> /dev/null) ; then
if xrandr --output HDMI-1 --primary --mode 1920x1080_60.00 --rate 59.96 --pos 0x0 --rotate normal --dryrun ; then
xrandr --output HDMI-1 --primary --mode 1920x1080_60.00 --rate 59.96 --pos 0x0 --rotate normal
fi
fi
if [ -e /usr/share/tssetup.sh ] ; then
. /usr/share/tssetup.sh
fi
exit 0

 これは再起動しないと反映されないので再起動する。
 残念ながらこれではうまく行かなかった。

●/etc/profile.dにスクリプトを作成してして画面解像度を変更する
 /etc/profile.d に display_setup.shを作成して xrandrの3行を書きこむ。
$ cd /etc/profile.d
$ sudo nano display_setup.sh
xrandr --newmode “1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode HDMI-1 1920x1600_60.00
xrandr --output HDMI-1 --mode 1920x1600_60.00
 終了後に再起動して VNCで接続して画面解像度の確認する
 再起動すると Can’t open display Errorがでた。
 残念ながらこれではうまく行かなかった。

●/etc/X11/xorg.conf.d/10-monitor.confに画面解像度を追加する
 Archlinuxの説明ページにある解像度の永続的設定を適用してみます。
 xorg.conf.dに 10-monitor.confは無かったので作成します。
 10-monitor.confに下記の Sectionを追加します。
  $ cd /etc/X11/xorg.conf.d
$ sudo nano 10-monitor.conf
Section "Monitor"
Identifier "HDMI-1"
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
Option "PreferredMode" "1920x1080_60.00"
EndSection

 これは再起動しないと反映されないので再起動する。
 残念ながらこれではうまく行かなかった


 Raspiは Monitorを外した状態で使用するのでいずれの方法もうまくいかない。
 起動時に Displayが無い事を検出した時点で、Defaultの 1280x720で
 表示してしまう様だ。
 このため Displayの解像度をどこに書いても適用されない。
 Defaultの設定値がどこに書いてあるのかがわかれば問題は解決するのだが。
 Programの中なのか configがあるのかすらわからない。
 
 色々と設定しているうちに Displayを接続していなくても VNC側から解像度の
 1280x720以上の項目が設定できる様になった。
 1回でも設定してしまうと解像度の項目Menuは、電源を切っても記憶されて
 いる様だ。



 OS versionの問題かも
 2020年に構築してから update, upgrade, FirmWare updateは行っているが
 Busterから Bullseyeへの更新はしていない。
 RasPiのOS versionが Buster 10であり古いので問題があるのかもしれない。




 OSを最新の Bullseyeに変えてみたらどの様になるか Testしてみる。
 Bullseye version 11にして Display接続なしで VNC接続をしてみると
 電源を切っても設定が消える事はなかった。
 すでにこの問題は解決していた。
 設定は/boot/config.txtを変更するだけでよかった。
 $ cd /boot
 $ sudo nano config.txt
  #hdmi_force_hotplug=1 → hdmi_force_hotplug=1
  #hdmi_group=1   → hdmi_group=2
  #hdmi_mode=1   → hdmi_mode=82

 Bullseyeにすると、最初の1回だけは Default解像度で表示されるが
 1920x1080に設定変更後は電源断を行っても記憶していた。


----------------------------------------------------------------------------------------------------------------------------
・けいざん美術館
・Blog 油絵もろもろ
・EXCEL VBAであくせく
・けいざんの食べログ


                 Site Designed by Kasio Keizan