Jetson Orin NX 开箱配置与 JetPack 环境搭建完全指南
1. 硬件概览
Jetson Orin NX 是 NVIDIA 2023 年推出的边缘 AI 计算模组,提供 100 TOPS(16GB)和 70 TOPS(8GB)两个版本,采用 Ampere 架构 GPU + ARM Cortex-A78AE CPU,支持 PCIe Gen 4、USB 3.2、MIPI CSI-2 等高速接口。
核心参数对比:
| 参数 | Orin NX 16GB | Orin NX 8GB | Xavier NX |
|---|---|---|---|
| AI 算力 | 100 TOPS | 70 TOPS | 21 TOPS |
| GPU | 1024 CUDA / 32 Tensor Core | 1024 CUDA / 32 Tensor Core | 384 CUDA / 48 Tensor Core |
| CPU | 8核 ARM A78AE | 6核 ARM A78AE | 6核 Carmel |
| 内存 | 16GB LPDDR5 | 8GB LPDDR5 | 8GB LPDDR4x |
| 存储 | NVMe SSD | NVMe SSD | NVMe SSD |
| 功耗 | 10-25W | 7-20W | 10-20W |
| 价格 | ~$599 | ~$399 | ~$399 |
2. 所需硬件清单
在开始之前,确保你准备了以下硬件:
核心组件:
├── Jetson Orin NX 模组(16GB 或 8GB)
├── 载板(NVIDIA 官方 Developer Kit 或第三方如 Seeed reComputer)
├── NVMe SSD(推荐 256GB 以上,需 PCIe Gen 4)
├── 电源适配器(19V/45W DC 或 USB-C PD 65W)
├── 散热风扇(官方散热器或第三方主动散热)
├── microSD 卡(32GB+,用于初始刷机)
└── USB-C 数据线(用于刷机)
外设:
├── 显示器 + HDMI/DP 线
├── USB 键盘鼠标
├── 网线或 WiFi 模块(Intel AX210 推荐)
└── CSI 摄像头(如 IMX219 / IMX477)
3. 硬件组装
3.1 安装 NVMe SSD
步骤:
1. 将 Orin NX 模组从防静电袋中取出
2. 找到载板上的 M.2 Key M 插槽(通常在底部)
3. 将 NVMe SSD 以 30° 角插入 M.2 插槽
4. 用螺丝固定 SSD(注意不要过度拧紧)
5. 将 Orin NX 模组对准载板的 SO-DIMM 连接器
6. 均匀按下直到卡扣锁定
3.2 安装散热方案
bash
# 如果使用官方散热器,安装步骤:
1. 在 SoC 表面涂抹薄层导热硅脂(推荐信越 7921)
2. 将散热器对准螺丝孔位
3. 对角线交替拧紧螺丝(扭矩 0.6 N·m)
4. 连接风扇电源线到载板的 FAN 接口
# 第三方散热推荐:
# - Seeed reComputer J4012 自带散热壳
# - 自制铜管散热 + 5V 风扇
3.3 接线确认
载板接口检查清单:
[✓] 电源接口(DC 或 USB-C)
[✓] HDMI/DP 输出到显示器
[✓] USB 键盘鼠标
[✓] 网线(可选,推荐初始配置用有线网络)
[✓] USB-C 数据线连接到刷机主机(Type-C 口,非电源口)
[✓] 风扇电源线
[✓] CSI 摄像头排线(金手指朝下,蓝色朝向 PCB 板边)
4. 刷机方式一:SDK Manager(推荐)
4.1 安装 SDK Manager
bash
# 在 Ubuntu 20.04/22.04 主机上操作
# 下载 SDK Manager(需要 NVIDIA 开发者账号)
# https://developer.nvidia.com/sdk-manager
# 安装
sudo dpkg -i sdkmanager_2.1.0-11669_amd64.deb
sudo apt-get install -f
# 启动
sdkmanager
4.2 进入恢复模式
进入恢复模式步骤:
1. 断开 Jetson 电源
2. 用 USB-C 数据线连接 Jetson 和主机
3. 按住 Recovery 按钮(载板上标为 FC_REC)
4. 保持按住的同时接通电源
5. 等待 2 秒后松开 Recovery 按钮
# 验证是否进入恢复模式(在主机上执行):
lsusb | grep -i nvidia
# 应该看到:ID 0955:7323 NVidia Corp.
4.3 SDK Manager 刷机流程
SDK Manager 操作步骤:
1. 登录 NVIDIA 开发者账号
2. 选择目标硬件:Jetson Orin NX
3. 选择 JetPack 版本(推荐 JetPack 6.0 / L4T 36.3)
4. 选择安装类型:
- Runtime:仅刷系统(推荐网络环境好时选这个)
- Full:包含所有组件(CUDA、cuDNN、TensorRT 等)
5. 选择存储设备:NVMe SSD(推荐)
6. 设置用户名和密码
7. 点击 Flash 开始刷机
8. 刷机完成后,Jetson 会自动重启
9. SDK Manager 会通过网络继续安装组件
4.4 刷机常见问题
bash
# 问题1:刷机过程中卡在 "Flash Jetson Linux"
# 解决:检查 USB 线是否为数据线(非充电线),换一个 USB 口重试
# 问题2:刷机后 Jetson 无法启动
# 解决:检查 NVMe SSD 是否正确识别
# 在恢复模式下执行:
sudo ./flash.sh jetson-orin-nx-devkit nvme0n1p1
# 问题3:组件安装失败(CUDA/cuDNN)
# 解决:刷机后在 Jetson 上手动安装
sudo apt update
sudo apt install -y cuda-toolkit-12-2 libcudnn8-dev
5. 刷机方式二:手动刷机(高级用户)
5.1 下载 L4T 驱动包
bash
# 下载 L4T(Linux for Tegra)
# 版本选择:L4T 36.3 对应 JetPack 6.0
wget https://developer.nvidia.com/downloads/l4t-jetson-orin-nx-devkit-36.3.0-aarch64.tbz2
# 解压
tar -xjf Jetson_Linux_R36.3.0_aarch64.tbz2
cd Linux_for_Tegra
5.2 准备根文件系统
bash
# 下载 sample root filesystem
wget https://developer.nvidia.com/downloads/linux-sample-root-filesystem-36.3.0-aarch64.tbz2
# 解压到 rootfs 目录
sudo tar -xjf Tegra_Linux_Sample-Root-Filesystem_R36.3.0_aarch64.tbz2 -C rootfs/
# 安装依赖
sudo ./tools/l4t-flash-prerequisites.sh
# 安装 NVIDIA 驱动
sudo ./apply_binaries.sh
5.3 执行刷机
bash
# 确保 Jetson 在恢复模式(参考 4.2 节)
lsusb | grep 0955
# 刷机到 NVMe SSD
sudo ./flash.sh jetson-orin-nx-devkit external
# 刷机完成后断开 USB,重启 Jetson
6. 首次启动配置
6.1 系统初始化
bash
# 首次启动会出现图形化配置界面
# 选择语言、时区、WiFi、用户名密码等
# 配置完成后,打开终端检查系统信息
cat /etc/nv_tegra_release
# 输出示例:# R36 (release), REVISION: 3.0
# 检查 JetPack 版本
sudo apt-cache show nvidia-jetpack
# Version: 6.0+b87
6.2 更换国内源
bash
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(Ubuntu 22.04 arm64)
sudo tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
EOF
# 更新
sudo apt update && sudo apt upgrade -y
6.3 安装基础工具
bash
# 安装常用工具
sudo apt install -y \
vim git curl wget htop tree \
build-essential cmake pkg-config \
python3-pip python3-venv python3-dev \
libopencv-dev v4l-utils \
net-tools wireless-tools \
software-properties-common
# 配置 pip 国内源
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << 'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF
7. 验证 CUDA / cuDNN / TensorRT
7.1 CUDA 验证
bash
# 检查 CUDA 版本
nvcc --version
# 应该显示 CUDA 12.2.x
# 检查 CUDA 设备
nvidia-smi
# Jetson 上 nvidia-smi 可能不可用,用 tegrastats 代替
# 测试 CUDA
cat > /tmp/test_cuda.cu << 'EOF'
#include <stdio.h>
__global__ void hello() {
printf("Hello from GPU thread %d\n", threadIdx.x);
}
int main() {
hello<<<1, 5>>>();
cudaDeviceSynchronize();
return 0;
}
EOF
nvcc /tmp/test_cuda.cu -o /tmp/test_cuda
/tmp/test_cuda
# 输出:Hello from GPU thread 0-4
7.2 cuDNN 验证
bash
# 检查 cuDNN 版本
dpkg -l | grep cudnn
# ii libcudnn8 8.9.4.* arm64
# 验证 cuDNN
python3 -c "
import ctypes
libcudnn = ctypes.cdll.LoadLibrary('libcudnn.so')
print('cuDNN loaded successfully')
# 获取版本
major = ctypes.c_int()
minor = ctypes.c_int()
patch = ctypes.c_int()
libcudnn.cudnnGetVersion.restype = ctypes.c_size_t
version = libcudnn.cudnnGetVersion()
major_val = version // 1000
minor_val = (version % 1000) // 100
patch_val = version % 100
print(f'cuDNN version: {major_val}.{minor_val}.{patch_val}')
"
7.3 TensorRT 验证
bash
# 检查 TensorRT 版本
dpkg -l | grep tensorrt
# ii libnvinfer8 8.6.2.* arm64
# Python 验证
python3 -c "
import tensorrt as trt
print(f'TensorRT version: {trt.__version__}')
print(f'TensorRT available: {trt.Builder(trt.Logger()) is not None}')
"
8. 安装 Jetson Stats 监控工具
bash
# 安装 jtop(Jetson 版 htop)
sudo pip3 install -U jetson-stats
# 需要重启 systemd 服务
sudo systemctl restart jtop.service
# 使用 jtop 监控
jtop
# 界面说明:
# - INFO:系统信息、JetPack 版本
# - CTRL:功耗模式(MAXN/MIN/自定义)
# - GPU:GPU 使用率、频率
# - CPU:各核心使用率
# - MEM:内存使用
# - TEMP:各传感器温度
# - DISK:磁盘使用
# - NET:网络流量
9. 设置性能模式
bash
# 查看当前功耗模式
sudo nvpmodel -q
# 设置最大性能模式(Orin NX 16GB)
sudo nvpmodel -m 0 # 25W, 6核 CPU 最高频
# 设置 15W 模式(省电)
sudo nvpmodel -m 1 # 15W, 4核 CPU
# 设置 10W 模式(最低功耗)
sudo nvpmodel -m 2 # 10W, 2核 CPU
# 解除 CPU/GPU 频率限制(配合 nvpmodel 使用)
sudo jetson_clocks
# 验证当前状态
sudo nvpmodel -q --verbose
10. SSH 远程连接配置
bash
# 在 Jetson 上安装 SSH 服务
sudo apt install -y openssh-server
# 检查 SSH 状态
sudo systemctl status ssh
# 获取 Jetson IP 地址
hostname -I
# 从主机连接
ssh username@192.168.1.100
# 配置无密码登录(在主机上执行)
ssh-keygen -t ed25519
ssh-copy-id username@192.168.1.100
# 配置 VS Code Remote SSH
# 1. 安装 VS Code 扩展 "Remote - SSH"
# 2. Ctrl+Shift+P → Remote-SSH: Connect to Host
# 3. 输入 username@192.168.1.100
11. 性能基准测试
bash
# 安装测试工具
sudo apt install -y sysbench
# CPU 基准测试
sysbench cpu --cpu-max-prime=20000 --threads=8 run
# 内存测试
sysbench memory --memory-total-size=10G run
# 磁盘 I/O 测试
sysbench fileio --file-total-size=2G --file-test-mode=rndrw prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw run
sysbench fileio cleanup
# GPU 计算测试
python3 -c "
import time
import numpy as np
# CPU 测试
size = 4096
a_cpu = np.random.randn(size, size).astype(np.float32)
b_cpu = np.random.randn(size, size).astype(np.float32)
start = time.time()
for _ in range(10):
c_cpu = np.matmul(a_cpu, b_cpu)
cpu_time = (time.time() - start) / 10
print(f'CPU matmul: {cpu_time*1000:.1f} ms')
# GPU 测试(CuPy)
try:
import cupy as cp
a_gpu = cp.asarray(a_cpu)
b_gpu = cp.asarray(b_cpu)
cp.cuda.Stream.null.synchronize()
start = time.time()
for _ in range(10):
c_gpu = cp.matmul(a_gpu, b_gpu)
cp.cuda.Stream.null.synchronize()
gpu_time = (time.time() - start) / 10
print(f'GPU matmul: {gpu_time*1000:.1f} ms')
print(f'GPU 加速比: {cpu_time/gpu_time:.1f}x')
except ImportError:
print('CuPy 未安装,跳过 GPU 测试')
"
12. 常见问题排查
12.1 Jetson 无法启动
bash
# 检查步骤:
1. 确认电源适配器功率足够(≥45W)
2. 检查 NVMe SSD 是否正确安装
3. 连接串口调试(115200 波特率)
4. 尝试刷入 eMMC(如果有)恢复
# 串口调试
sudo apt install minicom
sudo minicom -D /dev/ttyACM0 -b 115200
12.2 WiFi 连接问题
bash
# 检查 WiFi 模块是否识别
lspci | grep -i network
# 或
lsusb | grep -i wireless
# Intel AX210 驱动(JetPack 6.0+ 已内置)
sudo modprobe iwlwifi
# 扫描 WiFi
sudo iwlist wlan0 scan | grep ESSID
# 连接 WiFi
nmcli device wifi connect "SSID" password "PASSWORD"
12.3 散热与节流
bash
# 查看温度
cat /sys/devices/virtual/thermal/thermal_zone*/temp
# 输出单位是毫摄氏度,如 55000 = 55°C
# 查看是否触发节流
cat /sys/devices/platform/soctherm/throttle_oc1/*
# 0=未节流, 1=已节流
# 设置风扇转速(手动模式)
echo 255 > /sys/devices/pwm-fan/target_pwm
# 0=停止, 255=全速
# 查看实时温度和节流状态
tegrastats
总结
本文涵盖了 Jetson Orin NX 从硬件组装到软件环境搭建的完整流程。核心要点:
- 硬件组装:NVMe SSD + 散热方案是关键
- 刷机方式:SDK Manager 简单可靠,手动刷机适合批量部署
- 环境验证:CUDA + cuDNN + TensorRT 三件缺一不可
- 性能调优 :
nvpmodel+jetson_clocks解锁全部算力 - 远程开发:SSH + VS Code Remote 是主力开发方式
下一篇我们将讲解如何在 Jetson 上使用 TensorRT 加速模型推理。