Edited at

【JetCardを使えば一瞬】NVIDIA Jetson Nanoセットアップ [2019年7月版]


TL;DR


  • NVIDIA Jetson Nanoは、128コアのMaxwell GPUを搭載しながら、70 x 45 mmとRaspberry Piの様な超小型コンピュータ

  • 公式のJetCardイメージを使うと、セットアップが60分以下で終わる


    • SDカードイメージのダウンロードに15分(ネットワーク次第)

    • SDカードへの書き込みに30分

    • 電源を入れ、USB有線での接続からWiFi接続に切替えるまで15分以下



  • ディスプレイやキーボードをNanoに繋がなくてもセットアップできる

  • JupyterLabも、SSHも、セットアップすればVNCで画面も見られる


はじめに

2019年3月の発表以降、先人の皆様がJetson Nanoの有用な情報をまとめて下さっています。

2019年6月末に、NVIDIAからJetson Nano関連の有用なプロジェクトが複数公開されました。特にJetCardにより、セットアップの簡略化が図られています。

ふまえて、今日(2019年7月時点)での、最速セットアップ方法(?)をまとめます。

本稿はMac中心で進めますが、Windows、Linuxパソコンからも実行できます。公式のチュートリアルコース Getting Started with AI on Jetson Nano 中のSetting up your Jetson Nanoに、各OSに対応した詳細のガイドがあります(英語)。


BOM

まず、以下を揃えます。Jetson Nanoは品薄状態が概ね解消したようです。Jetson Nano開発者キット単体では動作しないので、注意が必要です。オンラインならAmazon等で、オフラインなら秋葉原などの店舗(秋月電子、千石通商、あきばおーなど)でも揃います。

項目
目安価格
メモ

Jetson Nano Developer Kit
12,300円

電源アダプタ(5V, 4A, 2.1mm内径DCプラグ)
1,000円

USBケーブル(Micro-B to Type-A)
90円

2 pinジャンパ(電源プラグ給電用)
100円
J48をショートしDCプラグ型電源を使うため

Raspberry Pi カメラモジュール V2
3,900円
USB Webカメラも可

microSDカード(最低32GB, UHS-I)
1,000円

WiFiドングル
750円
RPiと異なりWiFiが付属しない

上記以外に、


  • インターネットに接続でき、USB端子を持つMac/ Windows/ Linuxいずれかのパソコン

  • WiFiルータ

が必要です。またJetson Nanoは熱を持つため、空冷ファンを後付けする方も多いようです。


セットアップ 60分チャレンジ

NVIDIA公式から公開されたJetCardは、必要なソフトウェアがプリインストールされたSDカードイメージです。zip圧縮され7GB程度で配布されます。この公開により、とても手軽にセットアップできるようになりました。


JetCardイメージのダウンロード [15分]

NVIDIA JetCard GitHubリポジトリにある、Googleドライブへのリンク から圧縮されたイメージファイル jetcard_v0p0p0.zip をWindows、Linux、またはMacのデスクトップマシンにダウンロードします。ファイルが正しくダウンロードされているか、md5sumも確認できます。


マイクロSDカードの書き込み [30分]


  1. デスクトップマシンに32GB以上の容量があるSDカードを挿入する

  2. FAT32でSDカードの初期化をする


注意: 初期化されていないと、次に Flash!を押しても、 Startingのまま書き込みに進みません。

MacでのSDカード初期化方法

ディスクユーティリティ.app を開き、対象のSDカードを左メニューから選択(自身のハードディスクを選ばないように注意!)する。上メニューの消去を押下する。<ドライブ名称>を消去しますか?というダイアログでフォーマット MS-DOS(FAT)、方式 GUIDパーティションマップを選択、消去を実行します。



  1. Etcherをインストールし、起動します。


  2. 以下の画面が出たら、書き込むイメージに、先ほどダウンロードした jetcard_v0p0p0.zip を選びます。次に、書き込み先に対象のSDカードを選びます。その上で Flash!を押します。



Tips: SDカードイメージはzip圧縮されたままで問題ありません。



  1. 上の通り、Flashingに12分、Validatingに10分程度を要する。完了したらデスクトップマシンからSDカードを取り出す


注意: Macの場合、 セットしたディスクはこのコンピュータで読み取れないディスクでしたという警告が表示されるが、フォーマット形式によるものなので、気にせず 取り出すを押下して問題ありません。



電源を入れてUSB経由で接続する [5分]

準備したSDカードを挿入、必要な配線をし、Jetson Nanoの電源を入れます。ヘッドレス(Jetson Nano用のモニタなどがない状態)でも、USB経由で接続し、セットアップができます。

具体的には、USB-microUSBケーブルでPC(USB側)とJetson Nano(マイクロUSB側)を直結すると、PCのWebブラウザからJetson Nano上で立ち上がったJupyter Labに接続できます。


  1. 設定したSDカードをJetson Nanoに挿入する

  2. J48を、2pinジャンパを取り付けショートさせる(microUSBではなく、プラグからの給電に切り替える)

  3. 電源アダプタを差し込み、電源を入れる

  4. Windows、Linux、またはMacマシンをマイクロUSB経由でJetson Nanoに接続する

  5. Windows、Linux、またはMacマシンでブラウザを開き、 http://192.168.55.1:8888 をアドレスバーに入力する



  6. デフォルトパスワードjetsonを使ってサインインする



Jetson NanoをWiFiに接続する [5分]

まず、Jetson NanoにUSB WiFiドングルなどを挿しておく。


  1. Jupyter Labのメニューから、File - > New - > Terminalをクリックしてターミナルを開く



  2. 次のコマンドを入力して利用可能なWiFiネットワークを一覧表示し、接続したいssid_nameを見つける


$ sudo nmcli device wifi list


*注意: * [sudo] password for jetson:と聞かれたら、デフォルトは jetsonと答えれば良い。



  1. 選択したWiFiネットワークに接続する

$ sudo nmcli device wifi connect <ssid_name> password <password>

Device 'wlan0' successfully activated with xxxというメッセージが返れば接続成功です。


Tips: この後無線接続に使うPCが所属するネットワークと、同一のネットワークに所属させます



  1. 次のコマンドで返されたWiFiインタフェースwlan0のWiFi IPアドレス( inet )を<jetson_ip_address>として書き留めます。

$ ifconfig


結果例:

<略>

wlan0: flags=4163 mtu 1500

inet 192.168.2.111 netmask 255.255.255.0 broadcast 192.168.2.255

<略>



WiFi経由でJetson Nanoに接続する [5分〜]


  1. マイクロUSBケーブルをJetson Nanoから取り外す

  2. 前のJupyter Labブラウザタブを閉じる

設定が正しく済んでいれば、WiFi経由でJetson Nanoにアクセスできます。ひかえておいた を使って繋いでみます。


Jupyter Labに接続する

新しいブラウザタブを開き、 http://<jetson_ip_address>:8888 へ移動、パスワードjetson でサインインする。


SSH接続する

PC側のターミナルから、user: jetson / password: jetson でSSH接続できます。JupyterLab上で制約がある場合は、こちらを使います。

$ ssh jetson@<jetson_ip_address>


VNC接続する

以下を参考に設定しました。


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


$ sudo apt update

$ sudo apt install tigervnc-standalone-server tigervnc-scraping-server
$ vncpasswd
$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

vncpasswd でVNC接続時のパスワードを設定します。最後のコマンドで、デフォルトではポート 5900 でVNC接続の待ち受け状態になります。

適当なVNCクライアントを準備し、接続します。Google Chromeをブラウザに使っている場合、VNC® Viewer for Google Chrome™が便利です。

PC側でVNC Viewerを起動、Address欄に <jetson_ip_address>:5900 と入力して Connect を押すと、Jetson Nano側のUbuntuデスクトップを表示できます。

ここまで、部品が揃っていれば60分以内でセットアップを終えることができました。


その他


Jetson NanoのIPアドレスを確認したい

PC側のターミナルから、arp コマンドで、同一ネットワークで使われているIPアドレスがリスト表示できます。

# Mac OSXの場合

$ arp -a


空いているポートを確認したい

PC側のターミナルから、 nmap コマンドを使います。Mac OSXの場合、デフォルトでは入っていないため brew install nmap などでインストールします。

JetCardデフォルトに、VNCの接続を加えると以下のような状態です。

$ nmap 192.168.2.111

Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-04 02:06 JST
Nmap scan report for 192.168.2.111
Host is up (0.030s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
5900/tcp open vnc
8888/tcp open sun-answerbook

Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds


Raspberry Pi カメラモジュールV2の動作確認

USBカメラと異なり、単純に cv2.VideoCapture(0) では動作しません。一工夫必要です。

import matplotlib.pyplot as plt

import numpy as np
import cv2

GST_STR = 'nvarguscamerasrc \
! video/x-raw(memory:NVMM), width=3280, height=2464, format=(string)NV12, framerate=(fraction)30/1 \
! nvvidconv ! video/x-raw, width=(int)1920, height=(int)1080, format=(string)BGRx \
! videoconvert \
! appsink'
cap = cv2.VideoCapture(GST_STR)

以下の実行毎に、キャプチャされた画像がNotebook上に表示でき、動作が確認できます。

ret, img = cap.read()

plt.imshow(np.array(img))

以上