Jetson Nano はじめました

## 【内容】
nvidia のエッジデバイス、「Jetson Nano」はじめました。

## 【Jetson Nano とは】
2019年３月にnvidiaから発表されたGPU付きのエッジデバイスです。
一般購入が可能になったのは6月からでしたでしょうか?
SDカードブート、ラズパイコンパチのGPIOピン、ラズパイ専用カメラが使えるなど、Raspberry Piを非常に意識した構成となっています。
ラズパイと比べて値段3倍、パフォーマンス4倍程度らしいです。
ただし、ラズパイとは異なりWifiやBluetoothなどの無線通信モジュールはついていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/b902b5e0-1e93-0c56-bec3-1911f60f6a66.png)
(写真上部に写っている箱は…)

## 【必要なハードウェア】
本体、USB電源(2.5A以上推奨)、SDカード(16GB以上)、HDMI or DPケーブル、モニタ、キーボード、マウスが最低限必要になります。
必要に応じてwifiモジュールも必要になります。

ラズパイのときは主にヘッドレスセットアップを行っていたのでディスプレイやキーボードなどは用意しませんでした。
本機ではヘッドレスセットアップは可能なのでしょうか?


### 【ディスプレイについて】
当初ラズパイで利用していた7インチのHDMIディスプレイを使おうと思っていましたが、Jetson Nanoを接続したところ、映像信号は来ているようですがうまく表示ができませんでした。
ディスプレイの解像度がFullHDではないので解像度が合わず表示できなかったようです。

次に大量に余っているVGAのディスプレイを使おうと画策しました。
捨てるのも何だし、使いみちを探していました。
エッジデバイスのディスプレイなんて写りゃいいので、これで十分だと。

そこで、ラズパイで使っていたHDMI->VGAアダプタを使って接続しましたがNo Signal状態でした。
解像度も合わせてみましたが状況は変わりません。
改めて公式HPを見てみるとトラブルシュートに以下の一文が…

[【Getting Started With Jetson Nano Developer Kit - Troubleshooting】](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#troubleshooting)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/48ecf147-be79-03e0-04ac-cc4ce8452405.png)

変換器はサポート外ということで、素直に直結にします。
結果、手元にある一番高いディスプレイを取られてしまいました。


## 【外観】
本体外観はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/13ba138e-f491-ca61-6857-d7a906142ea6.png)

この写真ではアクリルケースのプレートの上に設置済みですが、本体を収納していた箱を台座にすることが可能なようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/e6989def-781a-09e3-f7be-45c53408222b.png)

背面はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/427ce0b8-f7d1-9cbb-0c69-c2bbf9fada1f.png)

本体上部のCPU部分は取り外しが可能です。
取り外した下にはM.2コネクタが存在しており、Wifi/BTモジュールなどを接続することが可能です。
ネジ位置からして2230タイプのものしか取り付けできなさそうです。
試しにWifiモジュールを付けてみようと思いましたが、Jetson Nanoの価格に対して意外に高かったので今回は諦めました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/667e6203-4305-d689-15f3-5b85e0a85790.png)

ちなみにUSBコネクタに刺さっているのはWifiのドングルです。

## 【セットアップ】
基本的には公式サイトの手順を踏襲します。

[【Getting Started With Jetson Nano Developer Kit】](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit)

大きく分けると以下の手順になります。

1. SDカードにOSイメージを焼く  
　OSイメージは以下の「Jetson Nano Developer Kit SD Card Image 」からダウンロードできます。  
　[【Jetson Download Center】](https://developer.nvidia.com/embedded/downloads)  
　イメージを焼く方法はクライアントOSに依存します。  
　公式ページにも詳細が書いてありますので、そちらをご確認ください。  
　[【Write Image to the microSD Card】](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write)  
1. 本体にSDカード、マウス、キーボード、ディスプレイを接続して電源を接続する
1. 初期セットアップを行う。 (デフォルトで進めば良い)

OSイメージさえきちんと焼けていれば、こんな感じで起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/7145fb55-70bc-86fb-413f-36e4ff35d61a.png)
私の場合、最初の一回目の起動時にOEM installerがタイムアウトを繰り返し、起動途中で止まってしまいましたが電源再投入ですんなり進みました。
再度イメージを焼き直して再現するか試してみましたが、幸か不幸か再現しませんでした。
一応フォーラムにも同様の症状が書かれていますが、イマイチよくわからないです。  
 [【Jetson Nano OEM installer failed】](https://devtalk.nvidia.com/default/topic/1052371/jetson-nano/jetson-nano-oem-installer-failed/)

## 【Wifiモジュールの接続】
今回作業した場所は有線LANをすべて撤去してしまった環境だったのですが、Jetson Nanoには無線通信手段がありません。
たまたま鞄の中で眠っていたWifiドングル(BUFFALO WLI-UC-GNM)を見つけたのでUSBコネクタに繋いでみました。
おそらく十年ぐらい前に購入したものなので動くかどうか心配でしたが、特に何もせずに勝手に認識し、以下のような表示がされて無線通信が可能になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/77bd314f-8dad-9f7a-f7c7-6a35e9c149ce.png)
あとは、WifiのAP設定などを行い、無事にネットワークが利用可能になりました。


## 【システムアップデート】
Wifiに接続してネットワークが使えるようになったので、システムアップデートを行います。
ターミナルを起動して、以下のコマンドを実行するだけです。
初回実行時にはそこそこ時間がかかると思います。

```bash
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
```
以上で初期セットアップは完了です。


## 【最後に】
Jetson Nanoですが、比較的安価にGPU付きのエッジデバイスが使えるようになります。
セットアップも特に難しいところもなく、起動にこぎつけることができます。
現時点ではどこまで使えるかは未知数ですが、エッジデバイスとしてラズパイの性能に限界を感じた際には、Jetson Nanoを使ってみるという選択肢あるかと思います。

今後、Jetson NanoにTensorflowを入れたりして、AI用エッジデバイスにしていきたいと思います。