Jetson Orin Nanoの使い始め(初期セットアップ編)

## はじめに

ここ何年か、Jetson Nano開発者キットを使用して来ましたが、今回、同じくNVIDIAのJetsonシリーズで、その後継機種と言えるJetson Orin Nanoを購入しました。

![IMG20231222143227_rotated.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/dee3896e-f9fc-2604-4711-5897a4f54b36.jpeg)

Jetson Nanoは、もうソフトウェア環境のアップデートもなくてさみしいなと思っていましたが、とうとう、「Jetson Nano開発者キットは**EOL**(End Of Life)」ということのようで、Jetson Orin Nano開発者キットの検討を開始しました。

ということで、今回、Jetson Orin Nano開発者キットをセットアップしつつ、ひとまず、普通に使えるようになったところまでを紹介してみます。

## 初期セットアップ

キャリーボードはXavier NXと似た感じ。で、最初、HDMIの口がなくなって、Display Portだけになってることに気づいたとき、「えっ」となった。慌てて、とりあえず、手頃な値段の[DisplayPort-HDMI変換アダプタ](https://amzn.to/41QoiRM)をアマゾンで購入。

だが、これが、自宅で普段よく使っている[モバイルディスプレイ](https://amzn.to/41TwXTu)にはうまく表示できなくて、別のモニタならば表示できることに気づくまでに時間がかかった。

[SDK Manager](https://developer.nvidia.com/sdk-manager)によるセットアップもあるが、microSDカードを用いたセットアップ方法の方が慣れているので、今回も、その方向で考えてみる。

https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit

に従って、まず、セットアップ用のSDイメージをmicroSDカードに書き込み(Windows環境にて)、それを開発者キットのSDカードスロットに挿入し、初めての電源投入を行って起動し、初期セットアップを行う、という手法。

Write Image to the microSD Cardのところで、SDカードイメージは、

https://developer.nvidia.com/embedded/jetpack

のページから取得でき、SD Card Image MethodのJETSON ORIN NANO DEVELOPER KITを選択すると、

```If using JetPack 6.x SD Card image for the first time, you will need to update the QSPI bootloaders by installing JetPack 6 on your SD Card using SDK Manager, which will update the QSPI bootloaders as well. Please note that this is a one time requirement only. Once the QSPI bootloaders are updated, you can use JetPack 6.x SD card images for any future releases.```

という但し書きっぽい説明が書かれている。QSPIフラッシュに搭載されているブートローダを更新しないといけないので、最初は、SDK Managerによるセットアップが必須のようだ。

ということで、結局、今回は、SDK Manager Methodを使ったセットアップを行うことになる。

SDK Managerを使用するには、別にLinux PCが必要[^1]。
SDK Managerをインストール及び起動して、Jetson Orin Nanoを「Force Recoveryモード」[^2]にした状態で起動/接続すると、以下のような画面になる。

[^1]: Docker環境がサポートされたみたいだが、私は、素直に、Jetsonを扱うために用意しているUbuntu PCにて、素直に、SDK Managerをアップデートした。

[^2]: Force Recovery Mode: Jetson_Orin_Nano_DevKit_Carrier_Board_Specification_SP-11324-001_v1.1の[Table 3-4. Button Header Description – J14]に、「Connect pins 9 and 10 during power-on to put system in USB Force Recovery mode. 」という説明書きあり。また、今は、ソフト的にForce Recoveryモードに入れる。以下のページ参照。今回、始めて、このソフト的なForce Recoveryモードへの入り方を使ってみたが、一々、DIPスイッチを刺して再起動しなくていいので楽。https://developer.nvidia.com/embedded/learn/jetson-orin-nano-devkit-user-guide/howto.html#force-recovery-mode

![Screenshot from 2023-12-28 11-49-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/19d81c49-ff32-adab-a789-b4c7bb025f0a.png)

Jetson Orin Nano (8GB developer kit version) を選択する。

![Screenshot from 2023-12-28 11-49-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/93ac4203-bfdd-d7c5-5cf6-8e601e0faa54.png)

SYSTEM CONFIGURATIONの部分のHost Machineのチェックはひとまずはずして、右下のCONTINUEボタンを押す。

![Screenshot from 2023-12-28 11-50-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/93939ccc-4aa6-b18e-f8e2-1ecbf192704e.png)

I accept the terms and conditions of the license agreements. のチェックを入れて、右下のCONTINUE TO STEP 03ボタンを押して次に進む。

すると、SDK Managerを動作させているUbuntu PCのパーティションの空き容量に依っては、次のようなダイアログが出たりするが、大きなお世話、それぐらいは空いているのでContinueボタンを押す。

![Screenshot from 2024-01-08 11-22-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/c55e396f-a52f-60fb-ce35-15d57492842e.png)

PCに一旦色々とパッケージがダウンロードされるので、結構時間がかかるが、実際に、ターゲットのJetson Orin Nanoに書き込みが行われるあたりのタイミングで、以下のような画面が表示される。

![Screenshot from 2023-12-28 15-05-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/59f1645e-3efc-d1be-4f10-b95da6452496.png)

Flashボタンを押して書き込み開始。書き込みにも結構時間がかかるが、無事に完了。

![Screenshot from 2023-12-28 15-21-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/e0b37067-6e51-a23e-df66-964909cf585b.png)

![Screenshot from 2023-12-28 15-22-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/17c8e460-1cb6-e1a1-4fd6-c6ec910225e5.png)

ここで、すぐに次に進もうとボタンを押すと、ターゲットが認識されなくて、Installボタンを押しても何度かリトライする状態になったりするが、めげずにリトライしながらしばらく待つと、、、認識されて、続きに進むことができた。と思う。ここは、すぐに進もうとせず、しばらくしっかり待ってから、Installボタンを押す方がよいような気がする。

(2024/1/19追記)
ここは、Jetson Orin Nanoにリブートがかかっている。そして、最初のセットアップの際には特に、ネットワークブートの方が優先度が高い状態になっていて、ずっとネットワークからのブートを待っている時間が長いからのようだ。なので、ちゃんと、Jetson Orin Nanoの方もちゃんとモニタに接続しておいて、ちゃんとSDからブートした後を見計らってからボタンを押すと、スムーズに進められると思う。

![Screenshot from 2023-12-28 15-25-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/31436daa-353f-d11c-30d1-d92e8df6ed1d.png)

![Screenshot from 2023-12-28 15-27-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/353b96d3-7b38-1a05-8c3b-ce5b86f236e9.png)

![Screenshot from 2023-12-28 15-28-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/2515f142-e4fb-3849-c895-7f4830183870.png)

![Screenshot from 2023-12-28 16-03-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/9b1e8c25-eb36-fc19-6e36-ff5d0d8650d2.png)

ともかく、最後の、INSTALLATION COMPLETED SUCCESSFULLYのメッセージが表示されるところまで到達すると、無事、SDK Managerによる書き込みは完了ということになる。

SDK Managerからの書き込みが完了した後は、自動的にリブートがかかったと思う。そのときに、Jetson Orin Nanoもモニタに接続しておけば、いつもの、最初の起動時のセットアップの画面が現れて、Nextボタンを押し進めていけばセットアップは完了する。

![Screenshot from 2023-12-29 09-15-46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/2956e8ad-7747-100e-94e9-9c75f5934756.png)

オンラインアカウントの設定は後でもできるのでスキップ。

![Screenshot from 2023-12-29 09-16-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/80ce311f-181a-c60b-49ca-d7c06219816e.png)

Ubuntu Proは普通のユーザは必要ないかと思うので、Skip for nowを選択した状態でNextボタンを押す。

![Screenshot from 2023-12-29 09-17-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/3f419d6d-efa1-d6bf-cacb-56d23e7ddd46.png)

Ubuntu開発者に有用な情報をレポートしてよければ、上の選択肢、Yes, send system info to Canonicalを選択。

![Screenshot from 2023-12-29 09-17-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/a286aea2-9f77-6615-a465-46b8013ab73c.png)

Location Servicesも普通OFFでよいだろう。

![Screenshot from 2023-12-29 09-17-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/f47ef1ca-86c1-1e7b-0428-bdb766bc1e47.png)

これで、初期セットアップ完了。と思っていると、

![Screenshot from 2023-12-29 09-17-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/829a9ab4-2bc4-4786-1ac6-9f386f2cd7a3.png)

と、ソフトウェアアップデートを促されるのでインストールしておく。

![Screenshot from 2023-12-29 09-22-53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/c828db5d-33bf-1793-6581-c2499d83b2d6.png)

![Screenshot from 2023-12-29 09-24-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/40be4f76-10a3-435b-be2a-e36379e7596d.png)

ここまででもう普通に使用できるようになっているかと思うが、日本語化は、このままでは中途半端で、SettingsのRegion & Languageを選択して、

![Screenshot from 2023-12-29 15-18-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/9ddbcc7f-22dd-d09a-5b7d-d6cde564115f.png)

のManage Installed Languagesを押すと、まだ言語サポートのインストールが完了していない、などと促されて、インストールを選択する。

![Screenshot from 2023-12-29 15-19-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/aacc0b09-dd24-259a-5f8e-8c6ce18e684b.png)

![Screenshot from 2023-12-29 15-19-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/577a9e20-c512-b53e-8eed-f2068701163c.png)


![Screenshot from 2023-12-29 15-28-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/71dae87e-3638-97a7-e3f1-d2eebc2ebfdf.png)

![Screenshot from 2023-12-29 15-33-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/794c5748-f7b8-f72f-510f-7ecc97abc36d.png)

ここまで行って、Jetson Nanoのときは入力メソッドとしてJapanese(Mozc)を手動でインストールする指示をしたような気がするが、Jetson Orin Nanoのこの最新の環境では、Japanese(Mozc)を選択して、日本語キーボードから全角を選択すれば、このように日本語が入力できるようになる。

## BIOSの設定(ブートの優先順位の変更)

デフォルトのBIOS設定では、毎回、起動時にネットワークからの起動を優先的に待って、ネットワークからの起動がタイムアウトになった後、microSDからブートする、という風に動く。

![IMG20240108142457.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/29908ee8-79f1-77be-a521-adc161700c03.jpeg)

この状態だと、microSDカードにセットアップしたシステムで毎回起動したい場合は、起動するたびに無駄な時間待ちが発生するので、microSDからの起動をデフォルトに設定する。

起動直後にESCキーでセットアップモードに入る。

![IMG20240108142937.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/f527580c-b983-89a5-9150-9f7c1412863d.jpeg)

ここで、ボートの優先順位を変更するには、Boot Maintenance Managerの設定に入る。

以下の画面で、Boot Options⇒Change Boot Orderと選択する。

![IMG20240108143906.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/435dde96-c7f8-4477-6292-dcbdc36dc037.jpeg)

![IMG20240108143925.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/032b2a2d-97a9-7a49-068b-cf82fe4b9e9e.jpeg)

Change the orderの部分でEnterを押す。

![IMG20240108143944.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/fe232540-94f0-6784-81f0-dbba4864a658.jpeg)

↓キーを押して、UEFI SD Deviceの項目にカーソルをあてる。

![IMG20240108144018.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/5bbc7e86-6eea-d92b-e0e8-8e39d8d8cf6a.jpeg)

ここで、**+キー**を押して、UEFI SD Deviceを上に上げようとするが上がらず、あれっ、と思うが、**-キー**を押すとちゃんと下に下る。ということで、**+キー**が認識されていないということに気づき、私の使用しているキーボードだと、**~キー**あたりを押すと、**+キー**と認識されたようで、UEFI SD Deviceが上に上がっていく。

![IMG20240108144211.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/9b0a4cc5-5d07-7cc6-f9f3-2a742f42ceef.jpeg)

**Enterキー**⇒**F10キー**⇒**yキー**と押して、変更した設定を保存。

![IMG20240108144236.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/1780b4e2-4a22-511a-63fb-2813d8114d92.jpeg)

![IMG20240108144255.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/baba829d-1b80-fa07-48f7-195dcfab2686.jpeg)

セットアップ画面から抜けて起動を続けると、無事、SDからのブートとなり、今後は、そのブートの優先順位で起動される。

![IMG20240108145008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998321/40a05946-f640-c51a-7388-c62ad76cf82e.jpeg)

## 初期セットアップの方法の振り返り

[JetPack SDK](https://developer.nvidia.com/embedded/jetpack)のページで示されている2つのメソッド、

1. SD Card Image Method
1. NVIDIA SDK Manager Method

ですが、上で書いたことだが、Jetson Orin Nano開発者キット個体として、一旦、2. でセットアップしてQSPIフラッシュに搭載されているブートローダをアップデートした後は、別microSDにシステムを再構築する際には1. でセットアップできる、ということになる。

ということで、1. で(再)セットアップしてみたところ、次の記事[「Jetson Orin Nanoの使い始め(カメラ導入編)」](https://qiita.com/MakotoA67/items/a0be9753f3fe53899a45)の「カメラを使用するためのアプリケーションプログラム環境」で紹介している使用方法の**nvarguscamerasrc**が使えず、、、少し調べては見たが、GStreamerの環境がいまいち把握できていない私には、何をどう追加インストールしたらよいか分からず。。。

まだ、JetPack 6.0 DP (= Developer Preview)なので、環境として、まだちょっと「不完全」なのかな、と思うことにして、ひとまず、2.のメソッドを必須としておきたいと思う。

(2024/3/1追記)
今週、JetPack 5.1.3 (L4T R35.5.0) がリリースされていることに気づいて、R36の手前なのでそんなには変更ないかと思って手を出してしまったが、そのおかげでややこしいことに陥ったので、ここに書いておく。

互換性はあると勝手に思って、上記1.のメソッドでセットアップして使い始めた。Bootloaderはメソッド1.でも2024-2-20版にアップデートされるようだが、

* メソッド1.でR35.5.0にアップデートした環境ではJetson-IOがなぜか使えない(メソッド2.でJetson Orin Nano本体をアップデートすれば復旧)
* Bootloaderが**2024-2-20**版にアップデートされているJetson Orin Nano本体に、R35.4.1の時代のmicroSDを装着した状態では、SDKManagerで初期化しようとしても、flashする時点でfailする
* **(2024/3/7追記)** そもそも、**Bootloaderが2024-2-20版にアップデートされているJetson Orin Nano本体で**、R35.4.1の時代のmicroSDで通常起動しようとするとリブートを繰り返す

などの不整合？な状況に陥った。なので、上記JetPack 6.0 DPと同じく、最初は、2.のメソッドでセットアップする前提と考えた方がよいかもしれない。

<details><summary>Jetson-IOが使えないときのエラーメッセージ</summary>
Jetson-IOを実行すると、
```
FATAL ERROR!
No APP_b partition found!
```
と言われる。
</details>

## アーカイブリンク集

自分で特定のリビジョンをベースに検討したいときは、以下のJetPack ArchiveかJetson Linux Archiveのページから特定のリビジョンをたどるのがよさそうです。

意外とさっとたどり着けないのでリンクを貼っておきます。

* [JetPack Archive](https://developer.nvidia.com/embedded/jetpack-archive)
* [Jetson Linux Archive](https://developer.nvidia.com/embedded/jetson-linux-archive)
* [Jetson Download Center](https://developer.nvidia.com/embedded/downloads)

以前は、Jetson Download centerから行けば行けたと思うのですが、今は、Jetsonシリーズの機種の数が増えて来たり、過去のリビジョンの数も増えて来たせいでしょうか。

## 終わりに＆予告

以上、とりあえず、Jetson Orin Nanoを初期セットアップ(日本語対応まで)するところまで紹介しました。元々は、イメージセンサIMX219を接続して、その映像を表示できるようにするところまで今日書こうと思っていたのですが、ここまで書くのに少々時間を要してしまいましたので、次の投稿に持ち越そうと思います。

ということで、次の投稿で、Jetson Orin NanoにIMX219を接続して使用する方法を紹介することとします。内容を少し予告しておきますと、Jetson NanoからJetson Orin Nanoで、MIPI CSIのコネクタが変わっているので、それ用のケーブルを購入する必要があることと、その他、少しコンフィグレーション作業が必要となりますので、そのあたりを書きますね。

- - -

後、ここで、一つ、上で書き忘れた注意点を補足的に書いておきますが、Ubuntu PC上で動作するSDK ManagerからJetsonを扱うときは、上で少し書いたが、JetsonをForce Recovery Modeに入れる必要があるが、SDK Managerから書き込んだ後自動的にリブートしてしまうことがちょっと問題で、気づかずにそのままディップスイッチを刺したままにしておいて忘れてしまうと、次に自分で再起動した際に、通常モードではなくForce Recoveryモードで起動されてしまい、モニタに普通の画面が出ない！と焦ることになるので気をつけて下さい。自動的にリブートしたときに、ディップスイッチを抜いておくのがいいのではないかと思います。などと書いていたのですが、ソフト的にForce Recoveryモードに入れるのならば、ディップスイッチでJ14の9-10ショートしなくてもよい。その代わりに、SDK Managerからの書き込みが完了した後の自動的なリブートは行われない仕様のようなので、自分で、ACアダプタを抜き出しして再起動することになります。