アプリとサービスのすすめ

アプリやIT系のサービスを中心に書いていきます。たまに副業やビジネス関係の情報なども気ままにつづります

MacからJetson NanoにVNC接続する(headless化)

Macからjetsonにssh接続できる環境は前の記事でできた。
trafalbad.hatenadiary.jp



けどいかんせん、Jetson Nano用のキーボード、マウス、ディスプレイをいちいち接続するのが面倒で邪魔だから、なんとかしたいということで、

コマンドライン操作だけできればいい
・他のデバイスにマイクロデバイス(PC)として付属させたい

という前提で、リモートデスクトップがいらないVNC接続をJetson NanoとMac間でやってみた備忘録。

あとロボットとか、外部のデータを送るマイクロデバイスとして使うときにこの操作は大事



目次
1. MacからJetson NanoにVNC接続
2. Jetson NanoでVNC Serverをデーモンとして自動起動させる


1. MacからJetson NanoにVNC接続

Jetson Nano側

初めは設定のためにキーボード、マウス、デイスプレイが必要。

重要:まずJetson側でGUIでログイン時にパスワードを要求しないように設定。

# Ubuntuのipアドレスを確認
$ ifconfig
>>>
## enp0s5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
## inet 10.xxx.xx.8  netmask 255.255.255.0  
$ sudo apt update 
$ sudo apt install tigervnc-standalone-server tigervnc-scraping-server
# パスワード設定
$ vncpasswd
>>> 

# Password:

# Verify:

# TigerVNCを起動
# x0vncserver -display :1 -passwordfile ~/.vnc/passwd
$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

Mac

[command]+[スペース]でSpotlight検索で「画面共有」で開く
10.xxx.xx.8
パスワード:[jetsonのパスワード]

VNC接続を確認。



2. Jetson NanoでもVNC Serverをデーモンとして自動起動させる

VNCサーバを毎回手動で起動するのは面倒なので、システム起動時に自動的にVNCサーバが起動するようにする。

# systemdデーモンのサービス設定ファイルの作成
$ sudo vi /etc/systemd/system/x0vncserver.service


/etc/systemd/system/x0vncserver.service

・ユーザー名==> hagi
pwd ==> /home/hagi

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target
After=network.target remote-fs.target nss-lookup.target
After=x11-common.service 
 
[Service]
Type=forking
User=hagi
Group=hagi
WorkingDirectory=/home/hagi
ExecStart=/bin/sh -c 'sleep 10 && /usr/bin/x0vncserver -display :0  -rfbport 5900 -passwordfile /home/hagi/.vnc/passwd &'
 
[Install]
WantedBy=multi-user.target
# 設定 & 起動確認
$ systemctl daemon-reload
$ sudo systemctl start x0vncserver.service
$ sudo systemctl status x0vncserver.service
>>>
# 正しく動いてると以下のように表示される
#● x0vncserver.service - Remote desktop service (VNC)
#   Loaded: loaded (/etc/systemd/system/x0vncserver.service; en
#   Active: active (running) since Mon 2023-02-06 19:39:33 JST;
#  Process: 4717 ExecStart=/bin/sh -c sleep 10 && /usr/bin/x0vn
# Main PID: 4791 (x0vncserver)
#    Tasks: 1 (limit: 4181)
#   CGroup: /system.slice/x0vncserver.service
#           └─4791 /usr/bin/x0vncserver -display :0 -rfbport 59

# 2月 06 19:39:33 jetson systemd[1]: Starting Remote desktop se
# 2月 06 19:39:33 jetson systemd[1]: Started Remote desktop ser
#lines 1-11
# サービスを有効化して再起動
$ sudo systemctl enable x0vncserver.service
>>>>
# Created symlink /etc/systemd/system/multi-user.target.wants/x0vncserver.service → /etc/systemd/system/x0vncserver.service.

$ sudo reboot yes
# 再起動後、ちゃんとサービスが起動しているか確認
$ systemctl list-units | grep vnc
>>>
# loaded active     running   Remote desktop service (VNC)  

# 停止
$ systemctl stop x0vncserver.service


もうこの時点でVNC接続できたので、キーボード、マウス、HDMIケーブルは外してもOK。

ここまできたら、キーボード、マウス、HDMIケーブルは不要で、MacからVNC接続できる。


1. Jetson Nano電源接続
2. Macの[command]+[スペース]でSpotlight検索で「画面共有」で開く
3. ipアドレスを入力
4. パスワードを入れて接続完了。


MacからVNC接続で、もう重いにキーボード、マウス、HDMIケーブル不要でJetson nanoに簡単接続できた。

キーボード、マウス、HDMIケーブル不要でMacから接続


重要
・パスワードなしの自動ログインに設置しておく
・displayが「0」でエラーになるなら使用済みの可能性もあるので「1」とかにしてみる

これでJetbotととかのロボットにJetsonを取り付けて動かせる。

参考

Jetson Nanoにリモートデスクトップ(VNC)環境を用意する