MacBook Pro で Jetson AGX Xavier をセットアップ

2018年11月現在のセットアップ方法を記載していきます。
[Jetson TX2](https://qiita.com/baba5246/items/916c292662c9af5b7e44) の時と同様にセットアップしていきます。

（Jetson TX2（右）よりも立体的にコンパクトになった Jetson Xavier（左））
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/7f36ca44-2866-4671-d16f-aa36cea19e44.png)


# 前提

今回セットアップするのは「 NVidia Jetson AGX Xavier Developer Kit 」です。スペックは以下の通り。

<img width="914" alt="スクリーンショット 2018-11-07 12.03.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/29717/ee5153a8-44fe-6c3f-4844-b61c05411cc3.png">

セットアップのために用意するホスト PC は「 MacBook Pro (Retina, 15-inch, 2017) 」です。
こちらのスペックは以下の通り。

<img width="581" alt="スクリーンショット 2018-11-07 12.00.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/29717/875bf7be-bd3c-6055-fedf-076971df6a90.png">

このあたりの記事を参考にセットアップしていきます。
* [Jetson Xavier を動かしてみた。](http://takesan.hatenablog.com/entry/2018/09/13/233334)
* [Mac Book Pro で Jetson TX2 のセットアップ](https://qiita.com/baba5246/items/916c292662c9af5b7e44)

# 準備

* Jetson AGX Xavier Developer Kit に入っているもの（で今回使うもの）
    * Jetson TX2
    * 電源アダプタ
    * 電源コード
    * USB Type-C - USB3.0（オス）ケーブル
    * USB Type-C - USB3.0（メス）ケーブル
* 自分で準備するもの
    * USB Hub (USB 3.0)
    * USB キーボード
    * USB マウス
    * ディスプレイ
    * HDMI ケーブル（Jetson  は HDMI 出力しかできないので注意）
    * 無線 LAN カード**（NEW!!）**
    * WiFi 環境
    * ３ ピンプラグ用電源タップ
    * JetPack インストール用 Host PC (MacBook Pro)

# 1. Xavier を起動する

配線はこんな感じ。電源、USBポート（マウス + キーボード）、HDMIを挿した状態。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/1b4b3ba8-c333-be71-5888-d2356317af81.png)

一番右の POWER ボタンを押して Xavier を起動する。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/f13e7010-40eb-aae1-deb5-de21688b0f51.png)

すると、下記のような端末が表示される。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/5bd6d44a-0548-53fa-7df5-0080230ac8ae.png)

上記の指示通りに、以下のコマンドを入力して、Ubuntu 18.04 をインストールし、再起動する。

```shell
$ cd NVIDIA-INSTALLER
$ sudo ./installer.sh
$ sudo reboot
```


# 2. Xavier を WiFi につなげる

Jetson Xavier は TX2 と異なり、WiFi や Bluetooth のアダプタがついてないので、WiFi を利用するには別途 WiFi カードを購入する必要があります。「[Jetson AGX Xavier Dev. KitをWiFiに繋げるには](https://qiita.com/Seiya_S/items/882d5a37fafc25e85653)」を参考に、WiFi 接続を試みます。

#### 1. 無線 LAN カードを購入する

参考記事に従って、[Intel の無線 LAN カード](https://www.amazon.co.jp/Wireless-AC-802-11ac-867Mbps-Bluetooth-%E7%84%A1%E7%B7%9ALAN%E3%82%AB%E3%83%BC%E3%83%89/dp/B075ZVKKM7)を購入する。

#### 2. 無線 LAN カードをとりつける

![IMG_7894.JPG](https://qiita-image-store.s3.amazonaws.com/0/29717/22eaaae3-9478-725e-eeba-d1a31dd990de.jpeg)


#### 3. ファームウェアをインストールする

下記コマンドでインストールできる。

```shell
$ sudo cp iwlwifi-8265-22.ucode /lib/firmware
$ sudo reboot
```

#### 4. 確認

ネットワークに繋がることを確認する。


# 3. Host PC に VirtualBox で Ubuntu 環境を構築する

[Jetson Xavier ユーザーガイド](https://developer.download.nvidia.com/assets/embedded/secure/jetson/xavier/docs/jetson_agx_xavier_developer_kit_user_guide.pdf?rJV10drLwNYUvLZW11X_oV8xr-Qsbytf5l1-rwb65A1OtZ4QxD-vLo04Uo-ey86DzJNk7OgVFcXl9vaO7xbAtfJ2HM7SKAVjEX8aYxD9YN7Z-svjaQaQ95y0tSCrg3PAOkZOyBaqQ13Ov3-tjiVF7Mw1nhBgmrDztc1McBgTpmT51WcsDrn3u3KJGPTXdDtHM1kGqzOLcg)によるとインストールには Ubuntu 18.04 or 16.04 が入った Host PC が必要とのこと。手元には Mac Book Pro しかないので、VirtualBox で Ubuntu 18.04 環境を手に入れます。

1. Ubuntu 18.04 のイメージを入手： http://www.ubuntulinux.jp/download/ja-remix
2. [MacにVirtualBoxとUbuntuをインスールしてみた](http://www.morinao-freelan.com/entry/2016/02/26/Mac%E3%81%ABVirtualBox%E3%81%A8Ubuntu%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F) に従って Ubuntu 環境を入手
    * 作成時の Disk Space は 32GB ぐらいに設定しておくとよいかも。
    * 32GBで「容量が1GBしかありません」という警告が出てました。

3. Ubuntu が起動したら、Jetpack 4.1 をダウンロードする
    * [Jetpack | NVIDIA Developer](https://developer.nvidia.com/embedded/jetpack) からダウンロードできます（NVIDIAのユーザー登録が必要です。）
    * 今回は、"JetPack-L4T-4.1-linux-x64_b5.run" でした。

# 4. Xavier をホスト PC に接続してリカバリーモードにする

1. Xavier とホスト PC を接続する
    * Xavier の電源を落とし、付属の USB Type-C - 3.0（オス+メス） ケーブルで、Xavier とホスト PC を接続する。
    * このとき、電源ライトの側のUSB Type-C に接続しないと、認識しませんでした。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/77c3c875-7150-8ddf-a526-f692d96ccf6d.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29717/d10b64e4-3f41-7f6b-d9ff-1d98f85f9e25.png)


2. Xavier をリカバリーモード（FORCE RECOVERY MODE）にする
    * 真ん中の FORCE RECOVERY ボタンを押しながら、右の POWER ボタンを押して、両方を同時に離す。
    * 電源ライトがついていながら、ディスプレイに何も映らなければリカバリーモードになっています。

3. ホスト PC 側の VirtualBox で、USB ポートの設定を行う
    * VMの設定画面から「ポート」 > 「USB」のプラスアイコンを押して「NVIDIA Corp.*」を追加する。
    * [USBポートの割当](https://qiita.com/0x0c@github/items/bc2683b00617981e4468#usb%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E5%89%B2%E5%BD%93) を参考


# 4. JetPack をインストールする

1. 先ほどダウンロードした JetPack 4.1 を以下のコマンドで実行可能状態にし、実行する

    ```shell
    $ chmod +x ~/JetPack-L4T-4.1-linux-x64_b5.run
    $ ./JetPack-L4T-4.1-linux-x64_b5.run
    ```

2. TX2 の時と同様にガイドに従ってインストールをする
    * 参考1：[JetsonTX2初期セットアップ(Jetpack)からサンプルのコンパイルまでの手順](https://qiita.com/akrian/items/54c321bfa95d8eaef17d#3jetpack%E3%82%92host%E5%81%B4pcubuntu%E3%81%B8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
    * 参考2：[jetpack 4.1 developer preview early access - NVIDIA Developer](https://developer.download.nvidia.com/embedded/L4T/r31_Release_v0.2/EA/JetPack-4.1-Developer-Preview-Early-Access.pdf?sqFeSmvPlHaBJiBhAMMk_yVjthWJzD2BFWyVdXs33sdYmNyflGu8WprblaZTPBHSdeOLpf66MrczXHYdiesres4zSeUc-OPskJ1bbiAolgVDk-H_cluK4ZaiAe_a3H-18KmhDhh19XF4KrgVh2haQqb4nfVZsRdePgU2HcLDGIoiDsvjEAbdec5VeKSlbw)
    * 全体的な流れとしては
        1. ホスト PC 側にダウンロード＆インストール
        2. USBケーブルを通して、Xavier 側にコピー＆インストール＆OSフラッシュ
    * **注意点1： USB で Jetson を認識できるか先に確認する**
        <img width="584" alt="スクリーンショット 2018-11-07 19.35.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/29717/2be12221-1bc4-3b37-254b-ec0bb33c2302.png">
    * **注意点2：ホストPC側の Ubuntu の自動サスペンド設定をオフにする**
        * JetPack インストール中に自動サスペンドしてしまうと、タイムアウトしてエラー吐かれます。
    * 注意点3：不要なライブラリは "no action" に変更してインストールしない

# 5. 確認する

smokeParticles を動かして動作を確認します。

```shell
$ cd ~/NVIDIA_CUDA-10.0_Samples/bin/aarch64/linux/release
$ ./smokeParticles
```

![Screenshot from 2018-11-08 08-39-23.png](https://qiita-image-store.s3.amazonaws.com/0/29717/9a8d6104-1ece-2919-c43d-a9a98bfc8249.png)


お疲れ様でした。