Jetson Orin NX
Some firmwares of NVIDIA Jetsons (e.g. JetPack 6.x+ on Seeed reComputer J4012) have issues with the UART interface (/dev/ttyTHSx) dropping a significant number of messages, which can lead to the creation of multiple invalid streams in the MAVROS router and a decrease in the hw_api rate to 75 Hz or lower.
To resolve this, you can check previous versions of JetPack (e.g. JetPack 5.x) where the port works as expected and compare the device tree to see if the port has the correct properties.Fixing the UART port on JetPack 6.x+
serial@3100000)
To set up Jetson Orin NX, you can either flash an SD card with a Ubuntu image (too slow, less space) or flash to an NVMe M.2 SSD mounted on the board. This tutorial covers the latter option.
Requirements
- Host PC with Ubuntu 20.04
- USB-C, HDMI, and Ethernet cables, jumper wire
- Monitor, mouse, keyboard
- M.2 NVMe SSD and M.2 Key-E Wi-Fi module (Intel AX210) with antennas
- SDK Manager
Flashing Options
There are multiple ways to flash the Orin NX, depending on your carrier board and requirements:
-
Installing using the SDK Manager
-
Should work fine for most carrier boards
-
If the carrier board needs specific peripheral drivers (e.g. Seeed Studio A603), otherwise some devices (e.g. MIPI cameras) won't work)
infoSDK Manager method restricts you with the host PC OS version and JetPack version. For example, if you have Ubuntu 24.04 on your host PC, you can only install JetPack 6.x, which flashes Ubuntu 22.04 on the Orin. If you want to flash Ubuntu 20.04 on the Orin, you need to have Ubuntu 20.04 on your host PC and install JetPack 5.x. For a more flexible option, you can follow the Installing using the install script repository option, which allows you to flash any JetPack version regardless of your host PC OS version.
-
-
Installing using the install script repository (Recommended)
- Available to download from F4F GitHub. You might have to switch to the
ros2branch. - This is a simplified wrapper around Nvidia's CLI flashing scripts that automatically downloads the correct version of JetPack and flashes it to the Orin
- Available to download from F4F GitHub. You might have to switch to the
-
Installing carrier-board manufacturer's firmware
-
Ensures all the peripheral drivers for the carrier board are installed
-
Find your Seeed Studio carrier board and follow the guide
- example: page for the Seeed Studio J401.
-
If the carrier board is from different manufacturer, check their webpage for instructions
-
Installing using the SDK Manager
SDK Manager is an NVIDIA program that allows you to install operating systems, libraries, and additional software onto a connected NVIDIA single-board computer. It is required to install JetPack, an SDK package providing the OS, drivers, and other development tools.
Notes
- If you have Ubuntu 20.04 on your host machine, you can install JetPack versions 5.x or 6.x.
- Only JetPack 5.x installs Ubuntu 20.04; newer versions flash Ubuntu 22.04.
-
Download the SDK Manager on your host PC.
- Click .deb Ubuntu at the top-right (you will need to create an account).
- Note the version and build number from the downloaded file, e.g., version 2.2.0 and build 12021 from sdkmanager_2.2.0-12021_amd64.deb.
-
Open a terminal and install dependencies:
sudo apt updatesudo apt install -y libcanberra-gtk-module -
Install the package, replacing version and build with the obtained numbers:
sudo dpkg -i sdkmanager_<version>-<build>_amd64.deb
Connect Jetson Orin NX
To flash the Orin NX using the SDK Manager, it must be put into Force Recovery Mode:
-
Attach a jumper or jumper wire between the
FC_RECandGNDpins on the edge of the Orin NX card (opposite the HDMI port, below the fan corner). -
Connect a USB-C cable between the dev kit and your host computer.
-
Plug in the power adapter. Optionally, connect the monitor, keyboard, and mouse.
-
On the host computer terminal, run:
lsusbLook for
ID 0955:7523 NVIDIA Corp. APX. If not visible, ensure the board is in recovery mode, powered, and properly connected.
Flash the OS with SDK Manager
-
Launch the SDK Manager and log in:
sdkmanager -
Select the Target Hardware (connected device) if not detected automatically. Choose JetPack 5.1.4 and additional SDKs if needed.
-
Continue to the Jetson SDK Components screen. Select these components, though you can install them later.
-
You will have to download ~50GB of data for the host PC and the Orin. Agree to the terms, create download folders, and wait for completion.
-
On the prompt window, select:
- Your device
- OEM Configuration as Runtime (to skip the System Configuration Wizard on first boot)
- NVMe SSD as the storage device
-
Click Flash.
infoIf the flash fails, check if the device ID is still visible. Reconnect the power supply to the dev kit if necessary and retry.
Installing Target Host Components
-
Once the system boots, complete the System Configuration wizard.
-
Connect the dev kit to the internet via Ethernet and ensure the host PC is on the same network.
Note: The Orin does not have a Wi-Fi module by default.
-
After the flash and reboot, the Orin exited recovery mode automatically, and the board is no longer be visible to the host PC (
lsusb). As a result, you need to connect via the local network. To proceed:-
Find the IPv4 address in Orin network settings or by running:
ifconfig # or `ip a` -
In SDK Manager, select Ethernet instead of USB. Enter the IP address and login details from the wizard, then click Install.
-
-
The installation can take over an hour. You may pause and resume later, but will have to wait for the current component to finish before stopping.
-
If components fail to install, use Repair / Uninstall under STEP 4 in SDK Manager.
-
Once completed:
- Shut down the Orin.
- Remove the power cable and jumper wire.
- Reconnect the power cable and boot the device.
Installing using the install script repository
-
Clone the repository
git clone https://github.com/fly4future/install_script --b ros2cd install_script -
Run the script
./jetson_flash.sh -
Follow the prompts to select:
- the Jetson Linux version (look at the release notes for each version to find the included JetPack and Ubuntu versions)
- username for the default user
- password for the default user
- hostname for the device
- whether you want to keep the temporary files used for flashing after the flash is complete. This will use up about 75 GB of disk space. Choose "Yes" if you plan to flash multiple devices. If you ever want to delete these files, they are located at
~/jetson_flash_tmp_VERSION. You can safely delete the entire directory if needed.
-
In case you have already ran the script before and have the temporary files available, the script will ask you whether you want to reuse them or download them again.
-
After some processing the script will prompt you to put the Orin into Force Recovery Mode. Follow the instructions to do so, the script will automatically detect when the device is in recovery mode and proceed with the flash.
-
After flashing is complete you can connect to the Jetson device via SSH (or directly with a monitor, keyboard, and mouse) and continue configuration there. You can use the scripts in the same repository to configure most common settings (networking, installing packages, etc.). Use the scripts
setup_utility.shorsetup_utility_auto.shfor that.
Possible Issues
-
Nvidia is not consistent when naming the files we have to download. In case they change the naming convention again the script might not find the correct files to download.
-
example of this inconsistency: use of lower vs uppercase letters in the file names:
https://developer.nvidia.com/downloads/embedded/L4T/r39_Release_v2.0/release/Jetson_Linux_R39.2.0_aarch64.tbz2https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v6.4/release/jetson_linux_r35.6.4_aarch64.tbz2
-
-
The steps/parameters/configuration files used for flashing might change in newer versions. In case that happens the script might not work correctly and will need to be updated. Nvidia releases instructions for flashing each version. These are the instructions for Jetson Linux 39.
Power Modes
Jetsons are designed for low power consumption. By default, the Jetson Orin NX 16GB uses only 4 of its 8 cores whenever possible. This results in low power draw (~2W for the CPU) but poor performance, especially for simulations (CPU > 90% with one drone MRS simulation). There are multiple power modes available, which can be selected to increase performance at the cost of higher power consumption. The default mode is 15W, which only uses 4 of the 8 CPU cores. To enable the full capabilities of the Orin, you can select a higher power mode. The following table shows the available power modes if you flashed the board with Nvidia's firmware (not for example Seeed's, as they may add custom power modes):
| id | Power mode |
|---|---|
| 0 | MAXN |
| 1 | 10W |
| 2 | 15W |
| 3 | 25W |
"MAXN mode is an unconstrained power mode which allows maximum number of cores and clock frequency for CPU, GPU, DLA, PVA and SOC engines like NVENC, NVDEC, etc. But it does not guarantee the best performance for all the use cases as the hardware throttling is engaged when the total module power goes beyond the TDP budget. Therefore, it is not maximum performance mode. This is an experimental mode for tweaking clock settings to create custom power modes that balance performance and power consumption. For reference, the Power Estimator can be used to estimate the power and generate the nvpmodel configuration file for custom power mode."
"If you are using an Orin NX 16GB/8GB module, do not enable MAXN SUPER mode. The cooling capacity of the reComputer J401 carrier board is insufficient to support it, and forcing this mode may result in permanent damage to the module."
Be sure that the cooling capability of your carrier board is sufficient for the power mode you select.
The max CPU frequency is 2GHz. The temperature setting can be found in the drop down menu in the top right corner (NVIDIA logo) in Run Jetson Power GUI under Thermal / Power Monitor tab, and is set to 99.0 °C and 104.5 °C for SW Throttling and Shutdown limit respectively.
Change Power Mode
In order to change the power mode, you can either use the GUI or the terminal.
GUI: In the top-right corner of the screen, click the NVIDIA logo, then Power Mode and select the desired mode.
Terminal:
-
Set power mode using the following command, replacing
<id>with the desired power mode ID from the table above:sudo nvpmodel -m <id> -
Reboot the device. Verify the power mode:
sudo nvpmodel -q
Advanced:
To view detailed power mode settings, open:
/etc/nvpmodel.conf
Scroll to POWER_MODEL DEFINITIONS to configure the default power mode.
Visualize Performance
Jetson Stats is a useful plugin for visualizing performance. You can install it:
sudo pip3 install -U jetson-stats
Run:
jtop
Wi-Fi Module Installation
JetPack 5.+ requires updated drivers for Wi-Fi modules. Not every module will work and you need to check the documentation for the one with right protocol. The Intel AX210 is compatible and the installation is easy (shout out to this tutorial)
-
Download the drivers:
wget https://github.com/mistelektronik/forecr_blog_files/raw/master/Intel/AX210_driver.zip -
Unpack and install:
unzip AX210_driver.zipcd AX210_driver/sudo ./apply_patch.shsudo ./disable_bt.sh- The last command disables Bluetooth, which can cause issues with Wi-Fi and other USB devices.
-
Turn off the device, mount the Wi-Fi module onto the board, and connect the antennas. After powering back on, Wi-Fi should be functional.