機械学習・AI【物体検出】vol.11 :NVIDIA Jetson AGX Xavierのリモート接続

【物体検出】vol.11 :NVIDIA Jetson AGX Xavierのリモート接続

Jetson Xavierをお使いの皆さん。快適なXavier生活をお過ごしでしょうか?
実は、私は、新型コロナによるリモート勤務で、Xavierだけは、手元に置いて動作検証をしなければならない事に不満を感じていました。
ハードウェアの構成による組み合わせ動作の検証などは、どうしてもリモートでというわけにはいかないのですが、ソフトウェアの組み合わせ検証であれば、リブートとVNCでなんとかリモート勤務できる...というわけで早速やってみました。

ともあれ、結論を先に:XavierにVNCで接続したうえ、USBカメラを使ってYOLOv3の物体検出ができました。
GPUを使ったプログラムもVNCで動くというのは知りませんでした。

Xavier_VNC.jpg

 

母艦とUSBケーブルでSSH

いきなりネットワーク経由でフルオープンというのは、昨今のセキュリティ事情からはお進めできませんので、まずは母艦となるLinux機とUSBケーブルで接続します。まずは、SSHを使って母艦のコンソールから接続できる環境を確保します。(母艦のLinuxは先に、VNCで接続できるようにしておくと幸せになれます)
具体的な方法は、Xavierを母艦とUSB接続すると出てくるテキスト"README-usb-dev-mode.txt"に書いてあります。

 

SSHでの接続

毎度の事ながら、他力本願で申し訳ない。下記サイトを参考にしました。
参考サイト:
リモートデスクトップでの接続設定 for Ubuntu18.04 on Jetson Xavier
JETSON NANO開発者キットにVNC接続するには vino版

ssh nvidia@192.168.55.1
nvidiaの所は、ユーザ名なのでいつもログインしているユーザ名に変えてください。192.168.55.1は、USBに対して振られているIPv4アドレスです。
パスワードが認証されると、下記のようなメッセージで出迎えてくれるはずです。
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.9.140-tegra aarch64)

おめでとうございます。次は、XavierのEthernetの設定を確認します。
ifconfig -a

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.nnn.xxx netmask 255.255.255.0 broadcast 192.168.nnn.xxx
inet6 fe80::7ed5:5699:f9d8:cd prefixlen 64 scopeid 0x20
ether 00:04:4b:cb:ad:74 txqueuelen 1000 (イーサネット)
RX packets 965 bytes 87123 (87.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 67 bytes 7140 (7.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 40

 

VNC(Vino)のインストール

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install vino
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
vino はすでに最新バージョン (3.22.0-3ubuntu1) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

これは既に入っていましたね。
$ sudo nano /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas
$ export DISPLAY=:0
$ gsettings set org.gnome.Vino enabled true
$ gsettings set org.gnome.Vino prompt-enabled false
$ gsettings set org.gnome.Vino require-encryption false
$ gsettings set org.gnome.Vino prompt.enabled false No such key "prompt.enabled" ※あれ?そんなキーは無いって
$ gsettings set org.gnome.Vino require-encryptsion false
No such key "require-encryptsion" ※あれ?そんなキーは無いって

EthernetのUUIDを調べます。
$ nmcli connection show
NAME UUID TYPE DEVICE

l4tbr0 02207e0c-1e81-4a19-a62c-f92697b07657 bridge l4tbr0
有線接続 1 a1126263-ba14-37c1-b6e5-36633ba02e2d ethernet eth0

得られたUUID"a1126263-ba14-37c1-b6e5-36633ba02e2d"をコピーします。
$ dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['a1126263-ba14-37c1-b6e5-36633ba02e2d']"

ここで使います。
$ export DISPLAY=:0

サービスとして登録します。(ユーザがグラフィカルログインしているときにしか動作しません)
$ sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical-session.target.wants
$ gsettings set org.gnome.Vino prompt-enabled false
$ gsettings set org.gnome.Vino require-encryption false
$ gsettings set org.gnome.Vino authentication-methods "['vnc']"
$ gsettings set org.gnome.Vino vnc-password
$(echo -n 'thepassword'|base64)
$ sudo reboot

$ netstat -an |more


tcp 0 0 192.168.55.1:22 192.168.55.100:38456 ESTABLISHED
tcp 0 73133 192.168.nnn.xxx:5900

のように、5900ポートで待ち受けしていたらOKです。

 

PCのVNCクライアントからアクセス

VNCクライアントで新しい接続先(今設定したXavier)のIPアドレスを入力します。

screenshot.756.jpg

必要事項であるパスワードを入力して設定を保存します。

screenshot.757.jpg

screenshot.758.jpg

 

めでたくログインできました。

 

Xavierでもリモートワークにも対応できます。
(デスクトップにログインしていないとVNCで接続できないという設定が、実は非常に重要だと思います)

 

▼この記事を書いたひと

001@2x.png

R&Dセンター 松井 良行

R&Dセンター 室長。コンピュータと共に35年。そしてこれからも!

 

おすすめの関連記事


機械学習・AIの最新記事


お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図
交通部 R&Dセンター

Email:メールでのお問い合わせ