見出し画像

Jetson Nano Developer Kitの設定

設定の準備(Prepare for Setup

秋月電子通商からNVIDIA Jetson Nano 開発キットB01を購入した。Jetson Nanoには、RAMが4GBのモデルと2GBのモデルがある。これは、4GBモデル。4GBモデルには、型番A01と型番B01の2種類がある。B01が後継機種。A02とB02は、インタフェースと電源選択用ジャンパJ48の位置が違う。A01では、電源選択用ジャンパピンを購入する必要があったが、B02ではジャパンパピンが最初から付属している。

さらに、秋電子通商から、Jetson Nano用金属ケース(B01対応)、5V-4AのスイッチングACアダプタ128GBのmicroSDカードを購入した。無線接続するので、TP-Link WIFI 無線LAN子機TL-WN725NをAmazonで購入した。

NVIDIA Jetson Nano 開発キットB01は、5V-2AのUSB給電で動作できるが、NVIDIAは5V-2.4Aのスイッチング電源を推奨している。購入したスイッチングACアダプタは5V-4A。

HDMIで接続可能な7インチのモバイルモニタ、USBキーボード、USBマウスは、すでにあるものを使った。初期設定が終われば、無線LAN経由でSSH接続して、headlessで使うので、これらは不要になるはず。

microSDカードにImageを書き込む(Write Image to the microSD Card)

Jetson Download CenterからJetson Nano Developer Kit SD Card Imageをダウンロードする。Jetson NanoとJetson Nano Nano 2GBのSD Card Imageは異なる。Jetson Nano用は、2021/01/20にJetPack version 4.5がリリースされ、約6GBある。

Windows PCの場合、microSDカードをSD Memory Card Formatterでフォーマット後、Jetson Nano Developer Kit SD Card Imageを書き込む。

まず、midroSDカードのフォーマットから。フォーマットツールSD Memory Card Formatterの入手URLとフォーマット手順は、Write Image to the microSDに書いてある。microSDカードのフォーマットは、Quick formatなので、すぐに終わる。

次に、Jetson Nano Developer Kit SD Card Imageの書き込み。書き込みツールbalenaEtcherの入手URLと書き込み手順は、Write Image to the microSDに書いてある。balenaEtcherはインストール時に、インストール先を選ぶことができない。書き込みとValidatingの速度は約80MB/sで、約8分かかった。Validatingの最中に、「ドライブ??:を使うにはフォーマットする必要があります。フォーマットしますか?」というメッセージが大量に表示された。全部「キャンセル」にした。

設定と最初の起動(Setup and First Boot

本体(developer kit)の電源選択用ジャンパJ48をスイッチングACアダプタ用にする。つまり、ジャンパでJ48の二つのピンを接続する(Jetson Developer Kit user guides, p.5)。接続しないと、microUSB給電になる。後は、Setup and First Bootの通りに、本体に、microSDカードを差し、モバイルモニタ、USBキーボード、USBマウスを接続し、電源を入れる。

ここまでで、developer kitが使えるようになる。

運用のための設定

本体に、HDMI接続モバイルモニタ、USBキーボード、USBマウス、無線LANアダプタを差して、電源をONにする。起動すると、Ubuntuのセットアップが始まる。言語は英語、キーボードは日本語Japaneseを選ぶ。Ubuntuのセットアップは10分くらいで終了する。

購入したTP-Linkの無線LANアダプタは、そのままで使えた。SSIDを設定すれば、DHCPでIPアドレスが設定される。webブラウザで外部のサイトが閲覧できることを確認した。なお、有線LANアダプタは、Realtek RTL8111/8168/8411 Gigabit Ethernetのようだ。

RAMは4GBで、swapは2GB割り当てられている。CPUはARMv8 Processor ver 1 (v8l)で、4個のコアがある。AES、SHA1, SHA2命令が使えるようだ。JetPack 4.5は、Ubuntu 18.04.5 LTSを利用している。パッケージのバージョンは、gcc/g++ 7.5.0, python 2.7.17, python3 3.6.9, make 4.1。

エディタとして、nanoとemacs (X Windowなし) をインストールする。

sudo apt install nano emacs-nox

本体に電池はないので、起動時に日時の設定が必要はずだが、起動時に、systemd-timesyncdが0.pool.ntp.orgに同期しているので、正しい日時になる。

headlessで運用するため、sshサーバをインストールする。

sudo apt install ssh

別のPCから、ssh接続できることを確認した。これで、コマンドラインで使えるようになった。

xrdpサーバをインストールする。

sudo apt install xrdp

上のサイトの「Ubunu18.04用xrdp設定」にあるスクリプトu_setting.shとg_setting.shを実行する。

しかし、Windows10のリモートデスクトップで接続すると、パスワード入力後、すぐに切断される。そこで、下記のサイトにあるように、xfceをインストール、設定した。

今度は、リモートデスクトップで接続できたが、4Kではかなり重い。常用に耐えられる速度ではなかった。解像度を1280x800にすると、使えるレベルの速度になった。

下記のコマンドで、CUIログインに変更する。

sudo systemctl set-default multi-user.target

JetPack 4.5には、CUDA-10.2が入っているので、そのexamplesをビルドする。

cp -a /usr/local/cuda-10.2/samples .
cd samples
make

全てのexampleをビルドするので、約1時間かかった。ビルドしたうちの一つ、deviceQueryの実行結果は下のとおり。

./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA Tegra X1"
 CUDA Driver Version / Runtime Version          10.2 / 10.2
 CUDA Capability Major/Minor version number:    5.3
 Total amount of global memory:                 3964 MBytes (4156694528 bytes)
 ( 1) Multiprocessors, (128) CUDA Cores/MP:     128 CUDA Cores
 GPU Max Clock rate:                            922 MHz (0.92 GHz)
 Memory Clock rate:                             13 Mhz
 Memory Bus Width:                              64-bit
 L2 Cache Size:                                 262144 bytes
 Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
 Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
 Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
 Total amount of constant memory:               65536 bytes
 Total amount of shared memory per block:       49152 bytes
 Total number of registers available per block: 32768
 Warp size:                                     32
 Maximum number of threads per multiprocessor:  2048
 Maximum number of threads per block:           1024
 Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
 Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
 Maximum memory pitch:                          2147483647 bytes
 Texture alignment:                             512 bytes
 Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
 Run time limit on kernels:                     Yes
 Integrated GPU sharing Host Memory:            Yes
 Support host page-locked memory mapping:       Yes
 Alignment requirement for Surfaces:            Yes
 Device has ECC support:                        Disabled
 Device supports Unified Addressing (UVA):      Yes
 Device supports Compute Preemption:            No
 Supports Cooperative Kernel Launch:            No
 Supports MultiDevice Co-op Kernel Launch:      No
 Device PCI Domain ID / Bus ID / location ID:   0 / 0 / 0
 Compute Mode:
    < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1
Result = PASS