Skip to content

Commit

Permalink
Merge pull request #244 from tokk-nv/dev/setup_sdkm
Browse files Browse the repository at this point in the history
Add alternative setup instruction for initial setup using SDK Manager
  • Loading branch information
tokk-nv authored Jan 7, 2025
2 parents cf815fc + a7e4106 commit ff17425
Show file tree
Hide file tree
Showing 28 changed files with 335 additions and 7 deletions.
33 changes: 33 additions & 0 deletions docs/css/extra.css
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,39 @@
background-color: var(--md-accent-fg-color--light)!important;
}

.md-button--darkblue {
border-color: #01587d!important;
background-color: #c1dfe6!important;
border-width: 3px!important;
line-height: 2!important;
}

.md-button--darkpurple {
border-color: #b544c4!important;
background-color: #f3e9f2!important;
border-width: 3px!important;
line-height: 2!important;
font-size: 1.2em!important;
}

.md-button--darkpurple:focus,
.md-button--darkpurple:hover {
background-color: #ffcafa!important;
}

.md-button--darkgreen {
border-color: #0e7a71!important;
background-color: #d2e9e5!important;
border-width: 3px!important;
line-height: 2!important;
font-size: 1.2em!important;
}

.md-button--darkgreen:focus,
.md-button--darkgreen:hover {
background-color: #82dbcc!important;
}

.md-typeset .tabbed-set {
border: 0.5px solid lightgray;
}
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/jon_carrier_board_topview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/jon_jumper.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/m48-workstation-256px-blk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/sdkm_flash_runtime_sdcard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/sdkm_host_os_compatibility_matrix.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 32 additions & 6 deletions docs/initial_setup_jon.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,33 @@ If you don't have them in your inventory, you want to arrange them and return to
- :material-checkbox-blank-outline: DisplayPort to HDMI cable and HDMI capable monitor (or TV) and a USB keyboard
- :material-checkbox-blank-outline: [USB to TTL Serial cable :octicons-link-external-16:](https://www.adafruit.com/product/954) (Advanced)

## Open the box
!!! danger ""

## 🛸 Alternative method : SDK Manager

In case you have an x86 PC running Ubuntu 22.04 or 20.04, then you can flash your Jetson Orin Nano Developer Kit with the latest firmware and JetPack all at once using **NVIDIA SDK Manager**.

Also, if you wish to not use a microSD card but rather use a large NVMe SSD for the OS and data, then you need to use SDK Manager to flash the latest JetPack on the NVMe SSD.

```mermaid
flowchart LR
A(start) --> B{Want to ditch microSD<br>and only use NVMe SSD?}
B --[YES] --> S[🛸 SDK Manager method]
B --[No] --> C{Have x86 PC running<br> Ubuntu 22.04/20.04?}
C --[YES] --> S
C --[No] --> U[🚀 microSD-only method]

style S stroke-width:3px, fill:#f3e9f2,stroke:#b544c4
style U stroke-width:3px, fill:#d2e9e5,stroke:#0e7a71
```

Click the button below to jump to a page that explains the alternative setup method using SDK Manager if you want to set your Jetson Orin Nano Developer Kit with an NVMe SSD or just want to flash all at once with your Ubuntu PC.

[🛸 SDK Manager method](./initial_setup_jon_sdkm.md){ .md-button .md-button--darkpurple }

Otherwise, continue reading on this page for the microSD-only setup method.

<!-- ## Open the box
!!! info "What you find in the box"
Expand All @@ -46,19 +72,19 @@ If you don't have them in your inventory, you want to arrange them and return to
It is designed to use a **microSD** card as the primary storage, thus the module (that has a big black heat sink with a fan) has a microSD card slot at the bottom side of the module.
### :material-checkbox-marked-outline: 19V DC power supply
### :material-checkbox-marked-outline: 19V DC power supply -->

## Overall flow
## Overall flow (microSD-only method)

!!! info "Jetson Orin Nano Initial Setup Flowchart"
!!! info "Jetson Orin Nano Initial Setup Flowchart (microSD-only method)"

```mermaid
flowchart
A(start) --> B{1️⃣ Check if Jetson UEFI Firmware<br>is newer than version 36.0}
B --[YES] --> O[6️⃣ Flash JetPack 6.x image on microSD card]
B --[No] --> C[2️⃣ Flash JetPack 5.1.3 image on microSD card]
B --[No] --> C[2️⃣ Boot with JetPack 5.1.3 microSD card<br>to schedule firmware update]
C --> D[3️⃣ Reboot] --> E{{Firmware update during reboot}}
E --> F[4️⃣ Run QSPI updater] --> G[5️⃣ Reboot] --> H{{Firmware update during reboot}}
E --> F[4️⃣ Run QSPI updater] --> G[5️⃣ Reboot] --> H{{QSPI update during reboot}}
H --> O
O --> Q(7️⃣ Unlock super performance)
Q --> P(8️⃣ Start developing on JetPack 6.x)
Expand Down
268 changes: 268 additions & 0 deletions docs/initial_setup_jon_sdkm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,268 @@
# 🛸 Initial Setup using SDK Manager

![](./images/m48-workstation-256px-blk.png){ width="256" align=right}

!!! note
This guide is to supplement the official [**Jetson Orin Nano Developer Kit Getting Started Guide**](https://developer.nvidia.com/embedded/learn/get-started-jetson-orin-nano-devkit).

The NVIDIA® <span class="blobLightGreen4">Jetson Orin Nano™ Developer Kit</span> is a perfect kit to start your journey of local generative AI evaluation and development.

This guide explains the **alternative method** for setting up Jetson Orin Nano Developer Kit by flashing both the latest firmware (QSPI image) and the latest JetPack all at once, using a host x86 PC.

## Check your toolbox

The following item is needed or highly desired for flashing your Jetson Orin Nano Developer Kit using your host PC.

If you don't have them, check the [default microSD-only setup instruction](./initial_setup_jon.md) or you want to arrange them first then return to this guide once they are available.

!!! warning "What not come in the box - What you need/want to prepare"

### Host PC

- :material-checkbox-intermediate: x86 PC running **Ubuntu 22.04** or **Ubuntu 20.04**

> ![alt text](images/sdkm_host_os_compatibility_matrix.png)
> Source: :octicons-link-external-16: [NVIDIA SDK Manager :material-chevron-double-right: Host Operating System Compatibility Matrix](https://developer.nvidia.com/sdk-manager#host_os_comp_matrix)

### Storage

Either of the following.

- :material-checkbox-blank-outline: microSD card (64GB or bigger)
- :material-checkbox-blank-outline: NVMe SSD (Recommended for better performance)

<img src="images/microsd_64gb.png" style="max-width:120px;"> <img src="images/ssd_nvme_1tb.png" style="max-width:540px;">

### Flashing supply

- :material-checkbox-blank-outline: USB cable (USB-C plug for Jetson Orin Nano Developer Kit side, other end depends on your PC)
- :material-checkbox-blank-outline: jumper pin (or metal paper clip)

### Mean to access terminal

You need either of the following set:

- :material-checkbox-blank-outline: DisplayPort cable, DisplayPort capable monitor and a USB keyboard
- :material-checkbox-blank-outline: DisplayPort to HDMI cable and HDMI capable monitor (or TV) and a USB keyboard
- :material-checkbox-blank-outline: [USB to TTL Serial cable :octicons-link-external-16:](https://www.adafruit.com/product/954) (Advanced)

!!! danger ""

## 🚀 Default method : microSD card only setup method

In case you **do NOT** have an x86 PC running Ubuntu 22.04 or 20.04, you can fall back to the default "microSD card only" setup method that does not require any host PC.

The decision process can look like this.

```mermaid
flowchart LR
A(start) --> B{Want to ditch microSD<br>and only use NVMe SSD?}
B --[YES] --> S[🛸 SDK Manager method]
B --[No] --> C{Have x86 PC running<br> Ubuntu 22.04/20.04?}
C --[YES] --> S
C --[No] --> U[🚀 microSD-only method]

style S stroke-width:3px, fill:#f3e9f2,stroke:#b544c4
style U stroke-width:3px, fill:#d2e9e5,stroke:#0e7a71
```

Click the button below to jump to the default setup page.

[🚀 microSD-only method](./initial_setup_jon.md){ .md-button .md-button--darkgreen }

Otherwise, continue reading on this page for the SDK Manager method.


## Overall flow (SDK Manager method)

!!! info "Jetson Orin Nano Initial Setup Flowchart (microSD-only method)"

```mermaid
flowchart
A(start) --> B[0️⃣ Install SDK Manager]
B --> C[1️⃣ Connect Target Hardware]
C --> D[2️⃣ Select Software Components to Install]
D --> E[3️⃣ Download on Host PC]
E --> F[4️⃣ Flash]
F --> G[5️⃣ Boot and initial setup]
G --> P(👍 Start developing on JetPack 6.x)
```


## 0️⃣ Install SDK Manager

!!! info "Reference"

:octicons-link-external-16: [NVIDIA SDK Manager Documentation](https://docs.nvidia.com/sdk-manager/){:target="_blank"} : <br> :material-chevron-double-right: **Download and Install** :material-chevron-double-right: [Download and Run SDK Manager](https://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html){:target="_blank"}

On your Ubuntu 22.04 / 20.04 PC, open a terminal and execute the following command.

Select the tab that matches your Ubuntu version.

=== ":simple-ubuntu: Ubuntu 22.04"

```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install sdkmanager
```

=== ":simple-ubuntu: Ubuntu 20.04"

```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install sdkmanager
```

Then launch SDK Manager with the following command.

```bash
sdkmanager
```

??? note "First time using SDK Manager"

When using SDK Manager for the first time, log in with your NVIDIA Developer credentials.

Remember to tick the checkbox for "**Stay logged in**" and click "**LOGIN**" button.

![login](<images/Screenshot from 2025-01-06 21-47-12.png>){ width="480" }

A browser window opens. Input your email address that is registered as NVIDIA Developer.

![browser window](<images/Screenshot from 2025-01-06 21-47-49.png>){ width="480" }

Two factor authentication prompt may pop up.

![Security Challenge](<images/Screenshot from 2025-01-06 21-49-53.png>){ width="480" }

Once authenticated, the browser windows opens back the SDK Manager app window.

![browser window redirecting to sdk manager](<images/Screenshot from 2025-01-06 21-50-00.png>){ width="480" }

SDK Manager continues to log you in.

![SDK Manager logging you in...](<images/Screenshot from 2025-01-06 21-50-07.png>){ width="480" }

SDK Manager launched and the login completed.

![SDK Manager after logging in](<images/Screenshot from 2025-01-06 21-50-11.png>)

## 1️⃣ Connect the Target Hardware

Once SDK Manager is launched, connect your Jetson developer kit to your Ubuntu PC and power it on in Forced Recovery mode.

1. Connect your Jetson Orin Nano Developer Kit to your PC with a USB cable.<br>Note that the USB cable goes into the USB-C port of the carrier board of the developer kit.

2. While shorting `pin 9` and `pin 10` of `J14` header located below the Jetson module using a jumper pin, insert the DC power supply plug into the DC jack of the carrier board to power it on.

![alt text](images/jon_carrier_board_topview.png){ width="640" }

You can use a paper clip like a photo below as well.

![Jumpering pins](images/jon_jumper.png){ width="640" }

3. Select "**Jetson Orin Nano \[8GB developer kit version\]**" and hit "**OK**"

![alt text](<images/Screenshot from 2025-01-06 21-50-49.png>){ width="480" }

4. Uncheck "**Host Machine**" and it should now look like this

![alt text](<images/Screenshot from 2025-01-06 21-54-47.png>)

5. Click "**Continue**" button to proceed to the next step.

## 2️⃣ Select Software Components to Install]

1. Leave the only "**Jetson Linux**" component checked, and uncheck everything.

![alt text](<images/Screenshot from 2025-01-06 21-58-45.png>)

2. Remember to also check "**I accept the terms and conditions of the license agreements**".

3. Click "**Continue**" button to proceed to the next step.

4. It will prompt for the `sudo` command password.

![alt text](<images/Screenshot from 2025-01-06 21-58-52.png>){ width="480" }

## 3️⃣ Download on Host PC

1. It will start downloading the "BSP" package and "RootFS" package.

![alt text](<images/Screenshot from 2025-01-06 21-59-14.png>)

2. Once downloads are complete, it will untar the package and start generating the images to flash in the background.

![alt text](<images/Screenshot from 2025-01-06 22-03-29.png>)

3. Once images are ready, SDK it will open the prompt for flashing.

![alt text](<images/Screenshot from 2025-01-06 22-05-36.png>)

## 4️⃣ Flash

1. On the flashing prompt, select "**Runtime**" for "OEM Configuration".

![alt text](<images/sdkm_flash_runtime_sdcard.png>){ width="480" }

2. On the flashing prompt, select "**NVMe**" if you want to flash Jetson Linux (BSP) to NVMe SSD.

![alt text](<images/Screenshot from 2025-01-06 22-05-42.png>){ width="480" }

3. Click "Flash" and the prompt popup will change like this.

![alt text](<images/Screenshot from 2025-01-06 22-05-52.png>){ width="480" }

4. Flash progress.

=== "Details"

![alt text](<images/Screenshot from 2025-01-06 22-06-24.png>)

=== "Terminals"

![alt text](<images/Screenshot from 2025-01-06 22-06-29.png>)

5. Flash successfully completes.

=== "Details"

![alt text](<images/Screenshot from 2025-01-06 22-21-30.png>)

=== "Terminals"

![alt text](<images/Screenshot from 2025-01-06 22-21-36.png>)

## 5️⃣ Boot and Initial Setup

1. If still plugged, remove the jumper from header (that was used to put it in Forced Recovery mode)

2. Connect the DisplayPort cable or adapter and USB keyboard and mouse to Jetson Orin Nano Developer Kit, or hook up the USB to TTL Serial cable.

3. Unplug the power supply and put back in to power cycle.

4. Jetson should now boot into the Jetson Linux (BSP) of your selected JetPack version from the storage of your choice.

5. Complete the initial software setup (`oem-config`)

### Switch to MAXN mode

Note that the default power mode is **15W**. <br>
To switch to the new power mode and unlock the increased performance, follow below steps:

1. Click on the current power mode (**15W**) by clicking the NVIDIA icon on the right side of the Ubuntu desktop’s top bar.
2. Select **Power mode** from the menu.
3. Choose **MAXN** to enable maximum performance.

![alt text](images/jons_power-mode-to-maxn.png)

🎊 **Congratulations!** <br>
Your Jetson Orin Nano Developer Kit is set up with JetPack 6.x image and you are ready to develop on JetPack 6.x.

## Next step

Check [this page](./tips_ssd-docker.md) for "SSD" and/or "Docker" set up.
3 changes: 2 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ nav:
# - Tools:
# - LangChain: tutorial_distillation.md
- Jetson Orin Nano Guide:
- 🚀 Initial Setup Guide: initial_setup_jon.md
- 🚀 Initial Setup Guide - Jetson Orin Nano: initial_setup_jon.md
- 🛸 Initial Setup (SDK Manager method): initial_setup_jon_sdkm.md
- 🔖 SSD + Docker: tips_ssd-docker.md
- 🔖 Memory optimization: tips_ram-optimization.md
- Benchmarks: benchmarks.md
Expand Down

0 comments on commit ff17425

Please sign in to comment.