---
tags: Jetson Nano, Basic, NVIDIA, 基礎, 教學, 環境安裝, 設定, Mac, 勇哥, Yungger
Refs:
- https://zh-hant.hotbak.net/key/%E7%8E%A9%E8%BD%89JetsonNano%E4%B8%80%E9%96%8B%E6%A9%9F%E6%BA%96%E5%82%99%E8%88%87%E9%81%A0%E7%A8%8B.html
- https://blog.csdn.net/qianbin3200896/article/details/103760640?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control
- https://medium.com/@yanweiliu/nvidia-jetson-nano%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-%E4%B8%80-%E5%88%9D%E6%AC%A1%E4%BD%BF%E7%94%A8-4dce57a0b2b1
- https://www.digikey.com/en/maker/projects/getting-started-with-the-nvidia-jetson-nano-part-1-setup/2f497bb88c6f4688b9774a81b80b8ec2
- https://www.rs-online.com/designspark/jetson-nano-1-cn
---
# Jetson Nano - 入門

[TOC]
---
- NVIDIA® Jetson Nano™ 具備 472 GFLOP 的運算能力,可快速執行現代人工智慧演算法,並可同時執行多個神經網路,以及同步處理數個高解析度感應器,非常適合應用在入門級網路錄影機 (NVR)、家用機器人,以及具備完整分析功能的智慧閘道器。
- NVIDIA® Jetson Nano™ Developer Kit 是一部小而強大的電腦,可讓你同時執行多個神經網路,適合應用於影像分類、物件偵測、分割和語音處理等應用,來進行AI相關的創作。
- NVIDIA JetPack 提供 Jetson Nano 開發板資源包(BSP)、Linux OS、NVIDIACUDA®、cuDNN和TensorRT™軟件庫,用來深入學習、電腦視覺、GPU演算、多媒體處理等。此軟體甚至可用SD卡映像來使用,讓使用者快速上手。
- NVIDIA Jetson™ 系列產品都使用 JetPack SDK,並與NVIDIA的AI平台完全兼容,有利於AI訓練和裝置AI軟件。

---
認識 VIDIA® Jetson Nano™ Developer Kit B01 (新版)
---
:::info
### 版本差異 A02(舊版) vs B01(新版)
:::


:::danger
對於電源供應問題,建議直接使用 5V4A 的變壓器 (圖中紅色框內的 J48 Jumper 必須先接上, 才能使用),因為若直接使用 5V2A 的 MicroUSB 接頭供電, 很容易因供電不足導致系統不穩頻頻斷線或甚至當機!
:::

:::success
新版 B01 的硬體比 A02 多了一個CSI攝影鏡頭介面,兩顆CSI攝影鏡頭可以做很多的應用,例如:
- 做兩組照片的即時影像接圖(廣角效果)
- 計算物品距離(深度計算)
- 搭配3D點雲函式庫建立物體的3D模型
:::
:::info
### Jetson Nano B01 常見 Q&A
:::
- Q. 40 Pin GPIO 腳位配置順序是否一樣?
A. 40 Pin GPIO 腳位配置順序是一樣的,一般使用不用擔心有所不同,只有腳位標記轉向而已,變成面向電源這側。但想要改pinmux表的人要注意一下,A02的pinmux表不能用在B01板子上,B01的pinmux表可以用在A02上。
- Q. 舊版本的JetPack可以透過下指令升級嗎?
A. (參考NVIDIA回覆) 目前4.3之前的版本不行,但Jetpack 4.3有使用新的APT服務器來託管JetPack套件升級。一旦使用JetPack 4.3後,就可以SSH遠端連線或是直接在terminal中下指令升級JetPack版本。
- Q. 如果灌好B01的映像檔,是否可以拿回去A02的板子上使用?
A. 遇到很多人會問這個問題。從NVIDIA下載的目前(撰文日期為 2020/03/30)JetPack 4.3映像檔可以用在B01,也可以用在A02上。我們實際測試過安裝JetPack 4.3的SD卡可以順利在Jetson Nano B01跟A02上運行。但在A02硬體上用的舊的JetPack無法在B01上正常運作。所以想要使用新版Jetson Nano需要重新製作開機用的SD卡。
- Q. 這次開箱是否有附用來選擇電源用的跨接器(Jumper)?
A. 跟以前一樣有附。
- Q. JetPack 4.3在機器學習訓練、推論、輸入影像的部分有怎麼樣的差異?
A. 用於 Jetson Nano 的Jetpack 4.3與新的TensorRT 6.0.1和cuDNN 7.6.3函式庫一起發布,有助於使人工智慧推論(inference)性能提高25%。 視覺程式介面(VPI, Vision Programming Interface) 使用GPU + CPU硬體編碼器/解碼器來加速4K影片或多個1080P影片傳送(同時傳送最多可以達到8倍速度),並且借助機器學習演算法,它可以多工進行物件偵測、物件辨識和追蹤。
- Q. 電源部分有什麼不同嗎?
A. 電源部分是一致的。
- 透過 Micro-USB 供電僅能供 5V2A。
- 透過 J25 電源孔供電可以供 5V4A。 (建議使用此方式供電)
- 如果有更大的供電需求,可以使用J41的2個5V腳位各供應5V-2.5A,總共5V-5A。
- 在無任何外接設備的情況下,5V-2A時的功耗是0.5W;5V-4A時的功耗是1.25W。
---
Jetson Nano 環境安裝
---
:::info
### 材料準備
:::
- 電腦/筆記型電腦 x1
- Jetson Nano DevKit x1
- Micro-USB 5V2A 或 Barrel jack 5V4A (20W) 供電器 x1
- Micro SD卡 x1 (建議 64GB 且讀寫速度高 UHS-1 以上)
- 外接螢幕 x1 (HDMI 或 DP)
- USB 鍵盤 & 滑鼠
- 有線網路或無線網卡 (專用WiFi卡 或 USB Wi-Fi dongle 或 x1
- 其他周邊 (非必要)
- 外殼 & 散熱風扇
- 攝影鏡頭
:::warning
供電方式: 可使用右邊的 MicroUSB 接 5V2A 或左邊 DC 接頭外接 5V3~4A 變壓器供電。

:::
:::warning
連線網路:可使用內建的有線網路, 或使用 Jetson Nano 專用的無線 WiFi 卡

:::
:::warning
或 USB Dongle (例如 [Edimax EW-7811Un](https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/tw/wireless_adapters_n150/ew-7811un_v2/))

:::
:::info
## 安裝步驟 ([官網文件](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit))
:::
- 燒錄 JetPack SDK 映像檔至 MicroSD 卡
- Jetson Nano 作業系統 (ubutun 18.04) 初次啟動
- Jetson Nano 系統設定
- SSH 遠端連線
- 遠端連線 (SSH, VNC)
- 外接裝置 (VideoCam)
- 關機
:::warning
### 燒錄 JetPack SDK 映像檔至 MicroSD 卡
:::
#### 下載 JetPack SDK 映像檔到電腦
- 至 [Jetson Download Center](https://developer.nvidia.com/embedded/downloads?fbclid=IwAR2HDumh6kpXVwFVoq9T0yu4PjAYGYUUza-pzi1iQNjr7z-orydGHecYeiU) 下載最新版本
- 或直接點選 [Jetson Nano Developer Kit SD Card Image](https://developer.nvidia.com/jetson-nano-sd-card-image), 下載映像檔 jetson-nano-developer-kit-sd-card-image.zip (約 6GB)

#### 燒錄 JetPack SDK 映像檔至 SD 卡中 (官方建議使用軟體 [balenaEtcher](https://www.balena.io/etcher/))
- 先不要插上 microSD card.
- 下載, 安裝, 與啟動 Etcher.
- 點選 “Flash from file”, 然後指定之前下載的映像壓縮檔.

- 將SD卡插入讀卡機,然後選擇該 microSD 卡的磁碟機編號


- 點擊 ”Flash“ 就開始在SD卡燒錄作業系統


- Etcher 燒錄完成後, 若出現讀不到屬正常, 可忽略. 直接按退出即可

- 到此為止, Jetson Nano 開機需要的作業系統已燒錄完成。

---
:::warning
### Jetson Nano 作業系統 (ubutun 18.04) 初次啟動
:::

- 插入燒錄好的 MicroSD 卡, 接上網路與周邊 (HDMI 螢幕、USB鍵盤、滑鼠、CSI或USB攝影鏡頭、...)
- 接上電源供應器, Jeston Nano 就會自動開機 (本身並無額外的開機鍵)

開機後, 綠色電源指示燈會亮, 接下來跟著螢幕指示做一些初始化的系統設定:
- 接受 NVIDIA Jetson software EULA 軟體版權
- 設定 Language, Keyboard layout
- 設定 WiFi (連上你的AP) 與時區
- 新增 username (例如 vincent), password, and computer name
- 設定 App Partition Size: 空白或 0 (預設使用最大可用空間)
- 登入成功後就會進入 Ubuntu 作業系統如下畫面

- 桌面上有兩個NVIDIA的捷徑:Nvidia Jetson [Developer Zone](https://developer.nvidia.com/embedded-computing)、 Nvidia Jetson [Support Forums](https://devtalk.nvidia.com/default/board/139/embedded-systems/1),點擊後會連結到官方頁面和論壇,上面有許多關於Jetson Nano的資料。

- 恭喜你, 基本上環境都已安裝完畢。對了, 若出現更新, 請接著執行即可!

#### 目前 nVidia Jetson 系列所使用的 Linux OS 稱為 Linux4Tegra,源碼是修改自 <font color=RED>Ubuntu 18.04版</font> 並針對 nVidia 硬體作優化,其映像檔本身就已先內建安裝好 CUDA 以及 cuDNN 和 openCV 軟體,因此除非需特殊要求, 否則都可不需要再安裝。
---
Jetson Nano 系統設定
---
#### Jetson Nano JetPack SDK 映像檔本身就已先內建安裝好 CUDA 以及 cuDNN 和 openCV
:::warning
### 設定 WiFi 方式連上網路
:::
[nVIDIA Jeston Nano WiFi Power Management](https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fpower_management_nano.html%23wwpID0E0CL0HA)

#### 若使用的是 EDiMAX EW-7611ULB WiFi+Bluetooth 二合一 Dongle

- 至[官方網站下載 WiFi 與藍牙的最新版驅動程式](https://www.edimax.com/edimax/download/download/data/edimax/tw/download/for_home/wireless_adapters/wireless_adapters_n150/ew-7811un), 並解壓縮
- 以下列步驟, 個別安裝 WiFi 與 藍牙
$ export ARCH=arm64
$ make
$ sudo make install
$ sudo reboot
:::danger
若無法連網, 則
edimax EW-7611ULB wifi not working
[Driver](https://www.edimax.com/edimax/download/download/data/edimax/global/download/for_home/wireless_adapters/wireless_adapters_n150/ew-7611ulb)
1. 自 github 下載 driver,自行編譯安裝後,就正常了。
16.04 Edimax EW-7611ULB No Bluetooth Devices and no wi-fi devices detected
##### Fix Wifi
git clone https://github.com/lwfinger/rtl8723bu.git
cd rtl8723bu
export ARCH=arm64
make
sudo make install
sudo reboot
##### Fix Bluetooth
git clone https://github.com/lwfinger/rtl8723au_bt.git
cd rtl8723au_bt/
git checkout kernel
find ./ -type f -name btusb.c
export ARCH=arm64
make
sudo make install
sudo reboot
:::
#### 關掉省電模式, 可讓 Jetson Nano 連網時更穩定, 不會一再斷線
`$ sudo iw dev wlan0 set power_save off`
畫面右上角有個 Wi-Fi 圖示,點下去後可以選擇要連到哪個 Wi-Fi 熱點。

---
:::warning
### 設定 Jetson Nano 的供電方式
:::
預設為 10 Watt 模式, 若要使用 Micro USB 供電就必須先設定至 5W 模式, 否則會一直出現錯誤的提示與容易造成系統連線不穩或突然當機或自動重開機。
https://desertbot.io/blog/jetson-nano-power-supply-barrel-vs-micro-usb
- 鎖住功率使其不過載
```$ sudo jetson_clocks```
- 顯示當前模式
```$ sudo nvpmodel -q```
出現訊息預設為 NV Power Mode: MAXN 0, 供電模式為功率 10W
- 調整功耗模式
- Micro USB 5V2A (5W)
```$sudo nvpmodel -m 1```
- Barrel jack 5V3~4A (10W)
```$sudo nvpmodel -m 0```
:::warning
### 增加 Jetson Nano 的 [swap 空間](https://www.opencli.com/linux/linux-add-swap)
- Linux 的 Swap 類似 Windows 下的虛擬記憶體, 當記憶體不足時, 把 Swap 的空間當作暫時記憶體使用, 從而解決記憶體不足的問題。
- 根據實測,設定 8G 似乎比較不會當機
:::
####
- 檢查目前系統設定的 Swap 空間
```$ sudo swapon -s```
```$ sudo fallocate -l 8G /swapfile``` => 建立 swap 分區,一般為記憶體的2倍即可 (可自行調整)
```$ sudo chmod 600 /swapfile``` => 修改 swap 分區使用權限,只允許 root 用户存取
```$ ls -lh /swapfile```
```$ sudo mkswap /swapfile``` => 標記為 swap 空間
```$ sudo swapon /swapfile``` => 啟用 swap 空間,關機再開機後,需要再次利用此命令啟用 swap 空間
```$ sudo swapon -show```
```$ sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'```
```$ free -h``` => 驗證 swap 空間是否可用
:::warning
### 設定關閉螢幕休眠時間
:::
- 預設是5分鐘未操作 Jetson Nano 即會自動關閉螢幕,若不希望頻繁的登入,而則可打開 System Settings 進行設定上的調整。
- 將 Turn screen off when inactive for 設定為 Never 即可。

:::warning
### 新增中文(注音)輸入法
Jetson Nano 自帶 ibus 中文輸入法,但需要先經過啟用與設定下才能進行中文的輸入。
:::
- 直接輸入 ibus, 若顯示如下內容則表示已安裝
`$ ibus`

- 增加注音輸入法
`$ sudo apt-get install ibus-chewing`

- 安裝完後, 須重新啟動 Jetson Nano
`$ sudo reboot`
:::warning
### 新增系統語言
:::
- 點選右上角的齒輪圖案,選「系統設定值」(System Settings)
- 進入系統設定畫面後,點選「語言支援」(Language Support)
可能會跳出視窗提醒你「安裝的語言支援尚未完備」,請點選「安裝」,並輸入密碼。
- 進入下圖畫面後,在「選單和視窗語言」(Menu and Window Language) 中尋找「漢語(臺灣)」,若有將其拖曳至選單最上方。
若沒有,則點選「安裝或移除語言」(Install/Remove Language),跳出視窗後,列表中選擇中文(繁體), 再試著進行上一步驟。
- 接下來點選「套用至全系統」(Apply to the Whole System),完成後則可點選關閉,再重新啟動 Jetson Nano。
:::warning
### 設定輸入法及輸入法切換快捷鍵
:::
- 重新開機後,點選「系統設定值」-「文字輸入」。

- 左側左下角的「+」,在選單中選擇「漢語(Chewing)(iBus)」後,點選「加入」。
- 右側可以設定輸入法切換用的快捷鍵,點選白色區域後,直接按下鍵盤上想要的組合快捷鍵。

- 設定完成後, 重新啟動 ibus。
`$ ibus restart`
#### 重啟後(很重要!!!), Jetson Nano 就可以用注音的方式來輸入中文囉!
以後要設定中文的輸入法, 可透過下面指令, 進入 ibus 設定介面
`$ ibus-setup`
:::warning
### 安裝或更新套件
:::
```$ sudo apt-get install nano -y``` => 安裝 nano 編輯器
```$ sudo apt-get update``` => 更新套件
```$ sudo apt-get upgrade```
---
:::warning
### 作業結束時, 記得登出 or 關機 !
可參考 [ubuntu 關機、重新開機指令](https://gavaee.wordpress.com/2011/11/03/ubuntu-%E9%97%9C%E6%A9%9F%E3%80%81%E9%87%8D%E6%96%B0%E9%96%8B%E6%A9%9F%E6%8C%87%E4%BB%A4/)
:::

---
:::success
#### 如果覺得此文對您有幫助, 也願意鼓勵勇哥的繼續創作, 點此 [加油一下](https://www.buymeacoffee.com/yungger) 😘 😘 !!
:::