Jetson Xavierをお使いの皆さん。快適なXavier生活をお過ごしでしょうか?
実は、私は、新型コロナによるリモート勤務で、Xavierだけは、手元に置いて動作検証をしなければならない事に不満を感じていました。
ハードウェアの構成による組み合わせ動作の検証などは、どうしてもリモートでというわけにはいかないのですが、ソフトウェアの組み合わせ検証であれば、リブートとVNCでなんとかリモート勤務できる...というわけで早速やってみました。
ともあれ、結論を先に:XavierにVNCで接続したうえ、USBカメラを使ってYOLOv3の物体検出ができました。
GPUを使ったプログラムもVNCで動くというのは知りませんでした。
いきなりネットワーク経由でフルオープンというのは、昨今のセキュリティ事情からはお進めできませんので、まずは母艦となるLinux機とUSBケーブルで接続します。まずは、SSHを使って母艦のコンソールから接続できる環境を確保します。(母艦のLinuxは先に、VNCで接続できるようにしておくと幸せになれます)
具体的な方法は、Xavierを母艦とUSB接続すると出てくるテキスト"README-usb-dev-mode.txt"に書いてあります。
毎度の事ながら、他力本願で申し訳ない。下記サイトを参考にしました。
参考サイト:
・リモートデスクトップでの接続設定 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
$ 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です。
VNCクライアントで新しい接続先(今設定したXavier)のIPアドレスを入力します。
必要事項であるパスワードを入力して設定を保存します。
めでたくログインできました。
▼この記事を書いたひと
R&Dセンター 松井 良行
R&Dセンター 室長。コンピュータと共に35年。そしてこれからも!
●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
交通部 R&Dセンター