Jetson Nano Developer Kit
本文档记录当前 Jetson Nano 设备的实际环境、常用命令、容器用法、扩展引脚配置、系统脚本和官方参考资料。
设备信息
实际目标:
- 远端账号:
jean@192.168.32.64 - 主机名:
jetson - 设备:NVIDIA Jetson Nano Developer Kit
- 系统:Ubuntu 18.04.5 LTS
- L4T:R32.6.1
- JetPack 对应版本:JetPack 4.6 系列
- 内核:
4.9.253-tegra - 架构:
aarch64 - CPU:4 核 ARM Cortex-A57
- 内存:约 3.9 GB
- Swap:约 1.9 GB
- 根分区:约 60 GB
- 当前无线地址:
wlan0 = 192.168.32.64
注意:这是 Jetson Nano / JetPack 4.x / L4T 32.x 时代的环境,不是 Jetson Orin Nano。不要混用 Orin Nano 的 Ampere GPU、Cortex-A78AE、LPDDR5、NVMe 等参数。
官方参考资料
- Get Started With Jetson Nano Developer Kit
- Jetson Nano Developer Kit User Guide
- Jetson Linux R32.6.1 Release Page
- Jetson Linux / L4T Archived Documentation
- JetPack Documentation
- Jetson-IO Expansion Header Tool
- NVIDIA DLI Nano AI Container
硬件与供电
Jetson Nano Developer Kit 常见接口包括:
- 40-pin 扩展接口
- Gigabit Ethernet
- USB 3.0
- HDMI / DisplayPort
- MIPI CSI-2 摄像头接口
- microSD 卡启动盘
J48 供电跳线
J48 用于选择供电方式:
- 不插 J48:可通过 Micro-USB 供电。
- 插上 J48:可通过 J25 DC barrel jack 供电。
常见建议:
- J25 DC 输入:5V / 4A
- Micro-USB 供电容易因线材或电源不足导致降频、重启或外设异常。
- 做摄像头、推理、Docker、USB 外设等任务时,优先使用稳定的 5V / 4A DC 供电。
系统检查
基础信息
hostname
whoami
cat /etc/os-release
uname -a
cat /etc/nv_tegra_release
CPU
lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: ARM
Model: 1
Model name: Cortex-A57
Stepping: r1p1
CPU max MHz: 1479.0000
CPU min MHz: 102.0000
BogoMIPS: 38.40
L1d cache: 32K
L1i cache: 48K
L2 cache: 2048K
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32
当前机器输出要点:
Architecture: aarch64
CPU(s): 4
Model name: Cortex-A57
CPU max MHz: 1479.0000
CPU min MHz: 102.0000
内存与磁盘
free -h
total used free shared buff/cache available
Mem: 3.9G 1.4G 528M 57M 1.9G 2.2G
Swap: 1.9G 1.3M 1.9G
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mmcblk0p1 ext4 60G 20G 38G 34% /
none devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs tmpfs 2.0G 40K 2.0G 1% /dev/shm
tmpfs tmpfs 2.0G 37M 1.9G 2% /run
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 396M 136K 396M 1% /run/user/1000
/dev/loop0 vfat 16M 66K 16M 1% /media/jean/L4T-README
网络
ip -br addr
当前主要入口是:
wlan0 UP 192.168.32.64/24
摄像头设备
ls -ltrh /dev/video*
crw-rw----+ 1 root video 81, 0 6月 4 2025 /dev/video0
编译工具与版本
python3 --version
# Python 3.6.9
gcc --version
gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ld -v
GNU ld (GNU Binutils for Ubuntu) 2.30
cmake --version
cmake version 3.10.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
make --version
GNU Make 4.1
Built for aarch64-unknown-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
补充:
- AArch64 下浮点 ABI 通常不再像 32-bit ARM 那样使用
-mfloat-abi区分 hard/soft float。 - 如果要排查编译参数,优先查看构建日志中的
CFLAGS、CXXFLAGS、-march、-mcpu、-mtune等选项。
Jetson 性能与功耗
查看实时状态
tegrastats
tegrastats 可以观察:
- RAM / SWAP 使用量
- CPU 各核心频率与负载
- EMC 内存控制器频率
- GR3D GPU 频率与占用
- 温度
- 功耗轨读数
查看功耗模式
nvpmodel -q
当前机器曾显示:
NV Power Mode: MAXN
查看或锁定频率
jetson_clocks --show
如果需要在测试中尽量固定性能,可使用:
sudo jetson_clocks
恢复默认动态调频通常需要重启,或根据保存的配置恢复。
JetPack / L4T / CUDA 组件
JetPack 是 Jetson 的软件栈,L4T 是其中的系统 BSP 组件。当前设备是 L4T R32.6.1,对应 JetPack 4.6 系列。
JetPack 常见组件包括:
- CUDA
- cuDNN
- TensorRT
- NVIDIA Container Runtime
- Multimedia API
- OpenCV
- VPI
- VisionWorks
- 示例程序
当前系统安装了较完整的 L4T 32.6.1 包,例如:
nvidia-l4t-corenvidia-l4t-bootloadernvidia-l4t-kernelnvidia-l4t-kernel-headersnvidia-l4t-cudanvidia-l4t-gputoolsnvidia-l4t-graphics-demosnvidia-l4t-gstreamernvidia-l4t-jetson-ionvidia-l4t-multimedianvidia-l4t-camera
常见 sample 路径
| JetPack 组件 | 示例路径 |
|---|---|
| TensorRT | /usr/src/tensorrt/samples/ |
| cuDNN | /usr/src/cudnn*_samples*/ |
| CUDA | /usr/local/cuda-<version>/samples/ |
| Multimedia API | /usr/src/tegra_multimedia_api/ |
| VisionWorks | /usr/share/visionworks/sources/samples/ |
| OpenCV | /usr/share/OpenCV/samples/ |
| VPI | /opt/nvidia/vpi/ |
CUDA 与 nvcc
当前机器已安装 CUDA 10.2,CUDA 目录如下:
ls -ld /usr/local/cuda*
要点:
/usr/local/cuda -> /etc/alternatives/cuda
/usr/local/cuda-10 -> /etc/alternatives/cuda-10
/usr/local/cuda-10.2
nvcc 可通过绝对路径访问:
/usr/local/cuda/bin/nvcc --version
当前输出:
nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 10.2, V10.2.300
Build cuda_10.2_r440.TC440_70.29663091_0
CUDA 版本文件:
cat /usr/local/cuda/version.txt
cat /usr/local/cuda/version.json
当前版本信息:
- CUDA SDK:10.2.460
- CUDA Runtime:10.2.300
- CUDA NVCC:10.2.300
- CUDA GDB:10.2.300
- CUDA Memcheck:10.2.300
- Nsight Compute:2019.5.3.4
常用 CUDA 工具:
/usr/local/cuda/bin/nvcc --version
/usr/local/cuda/bin/cuda-gdb --version
/usr/local/cuda/bin/cuda-memcheck --version
/usr/local/cuda/bin/nvprof --version
注意:交互式 bash 中已能通过 PATH 找到
nvcc。自动化脚本建议使用/usr/local/cuda/bin/nvcc,或显式设置PATH=/usr/local/cuda/bin:$PATH。
GPU 信息
Jetson Nano 使用集成 GPU。CUDA deviceQuery 检测结果:
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA Tegra X1"
CUDA Driver Version / Runtime Version: 10.2 / 10.2
CUDA Capability Major/Minor version number: 5.3
Total amount of global memory: 3956 MBytes (4148273152 bytes)
( 1) Multiprocessors, (128) CUDA Cores/MP: 128 CUDA Cores
GPU Max Clock rate: 922 MHz (0.92 GHz)
Memory Clock rate: 13 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 262144 bytes
Integrated GPU sharing Host Memory: Yes
Result = PASS
设备树识别信息:
tr '\0' '\n' < /proc/device-tree/model
tr '\0' '\n' < /proc/device-tree/compatible
当前结果:
NVIDIA Jetson Nano Developer Kit
nvidia,p3449-0000-b00+p3448-0000-b00
nvidia,jetson-nano
nvidia,tegra210
GPU sysfs 状态:
cat /sys/devices/gpu.0/load
cat /sys/devices/gpu.0/devfreq/57000000.gpu/cur_freq
cat /sys/devices/gpu.0/devfreq/57000000.gpu/min_freq
cat /sys/devices/gpu.0/devfreq/57000000.gpu/max_freq
当前检测值:
load: 0
cur_freq: 76800000
min_freq: 76800000
max_freq: 921600000
编译并运行 CUDA deviceQuery
如果 samples 目录下没有预编译好的 deviceQuery,可复制完整 sample 结构到 /tmp 再编译:
rm -rf /tmp/cuda-samples-check
mkdir -p /tmp/cuda-samples-check
cp -a /usr/local/cuda/samples/common /tmp/cuda-samples-check/common
cp -a /usr/local/cuda/samples/1_Utilities /tmp/cuda-samples-check/1_Utilities
cd /tmp/cuda-samples-check/1_Utilities/deviceQuery
PATH=/usr/local/cuda/bin:$PATH make -j2
./deviceQuery
成功时最后会看到:
Result = PASS
Docker 使用
当前机器已安装 Docker:
docker --version
DLI Nano AI 容器
官方容器页面:https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-ai
当前机器已有脚本:
~/docker/start_dli.sh
脚本作用:
- 启动 NVIDIA DLI Nano AI 容器。
- 以后台容器方式启动
nvcr.io/nvidia/dli/dli-nano-ai:v2.0.2-r32.7.1。 - 使用 host 网络。
- 挂载
~/nvdli-data:/nvdli-nano/data。 - 挂载
/tmp/argus_socket:/tmp/argus_socket以支持摄像头相关访问。 - 暴露
/dev/video0。
适合场景:
- 运行 DLI 教程或实验。
- 做摄像头 / AI 推理相关演示。
等价命令示例:
sudo docker run --runtime nvidia -it --rm --network host \
--volume ~/nvdli-data:/nvdli-nano/data \
--volume /tmp/argus_socket:/tmp/argus_socket \
--device /dev/video0 \
nvcr.io/nvidia/dli/dli-nano-ai:v2.0.2-r32.7.1
启动后通常等待约 10 秒,访问 JupyterLab:
http://<jetson-ip>:8888
DLI 默认密码通常为:
dlinano
L4T 基础容器
当前机器已有脚本:
~/docker/start_l4t.sh
脚本作用:
- 启动基础 L4T 容器。
- 使用
nvcr.io/nvidia/l4t-base:r32.4.3镜像。 - 以交互模式运行。
- 使用 NVIDIA runtime。
- 使用 host 网络。
- 透传
DISPLAY和 X11 socket,支持图形显示。
适合场景:
- 在容器里验证 L4T 环境。
- 做图形或桌面相关测试。
等价命令示例:
sudo docker run -it --rm --net=host --runtime nvidia \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
nvcr.io/nvidia/l4t-base:r32.4.3
DLI DeepStream 容器示例
sudo docker run --runtime nvidia -it --rm --network host \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
-v /tmp/argus_socket:/tmp/argus_socket \
-v ~/nvdli-deepstream:/dli/task/my_apps \
--device /dev/video0 \
nvcr.io/nvidia/dli/dli-nano-deepstream:v2.0.0-DS6.0.1
远程桌面
当前机器已有脚本:
~/docker/start_vino.sh
作用:
- 启动 Vino 远程桌面服务。
- 执行
/usr/lib/vino/vino-server --sm-disable。 - 日志写入
~/.local/share/vino/log。
脚本内容等价于:
/usr/lib/vino/vino-server --sm-disable 2>&1 | tee -a ~/.local/share/vino/log
适合在不接显示器时访问 Jetson 桌面。
Jetson-IO 与 40-pin 扩展接口
Jetson-IO 是 NVIDIA 提供的扩展接口配置工具,用于配置 40-pin header、CSI 等外设接口的 pinmux 和设备树 overlay。
启动交互式界面:
sudo /opt/nvidia/jetson-io/jetson-io.py
常用脚本:
/opt/nvidia/jetson-io/config-by-pin.py
/opt/nvidia/jetson-io/config-by-function.py
/opt/nvidia/jetson-io/config-by-hardware.py
/opt/nvidia/jetson-io/jetson-io.py
按引脚查看
sudo /opt/nvidia/jetson-io/config-by-pin.py --list
sudo /opt/nvidia/jetson-io/config-by-pin.py --pin 3
作用:
- 列出支持的 header。
- 查看某个 pin 的信号名称和功能。
按功能配置
sudo /opt/nvidia/jetson-io/config-by-function.py --help
作用:
- 列出可用功能。
- 启用指定 header 上的 I2C、SPI、UART、GPIO 等功能。
- 生成
.dtbo或.dtb配置。 - 通常需要重启后生效。
按硬件模块配置
sudo /opt/nvidia/jetson-io/config-by-hardware.py --list
作用:
- 列出可用硬件模块配置。
- 根据扩展板或外设模块生成对应设备树配置。
注意:Jetson Nano GPIO 通常为 3.3V 逻辑电平,不要直接接入 5V 信号。
Jetson.GPIO
Jetson.GPIO 文档通常位于:
/opt/nvidia/jetson-gpio/doc/README.txt
可用于 Python 控制 GPIO。使用前建议确认:
python3 -c "import Jetson.GPIO as GPIO; print(GPIO.VERSION)"
如果权限不足,检查用户是否在 gpio 相关组中,或按 README 配置 udev 规则。
USB Device Mode
相关脚本位于:
/opt/nvidia/l4t-usb-device-mode/
用途:让 Jetson 通过 USB 作为复合设备暴露给主机,常见能力包括:
- USB 网络:RNDIS / ECM / NCM
- USB 串口:ACM
- USB Mass Storage
- 自动 DHCP
主要脚本:
| 脚本 | 作用 |
|---|---|
nv-l4t-usb-device-mode-config.sh |
定义 USB gadget 协议、网络、DHCP、MAC、设备描述等配置。 |
nv-l4t-usb-device-mode-start.sh |
创建并启动 USB gadget,启用 RNDIS、ACM、ECM/NCM、Mass Storage 等功能。 |
nv-l4t-usb-device-mode-runtime-start.sh |
拉起 l4tbr0,配置 IP,启动 DHCP,恢复路由。 |
nv-l4t-usb-device-mode-runtime-stop.sh |
停止 DHCP,删除运行态文件,关闭 l4tbr0。 |
nv-l4t-usb-device-mode-state-change.sh |
根据 USB CONFIGURED 状态自动启停 runtime 服务。 |
nv-l4t-usb-device-mode-stop.sh |
彻底关闭 gadget,删除 configfs 项,关闭网桥并卸载 loop 设备。 |
查看脚本:
ls /opt/nvidia/l4t-usb-device-mode/
Bootloader / QSPI
相关脚本:
/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh
作用:
- 检查 Jetson Nano bootloader / QSPI 分区版本。
- 对比当前系统和
nvidia-l4t-bootloader包版本。 - 必要时触发 bootloader / QSPI 更新。
- 兼容多个 Jetson Nano / TX1 / TX2 / Xavier 板卡命名。
适合场景:
- 系统升级后确认 bootloader 是否同步。
- 排查启动固件版本不一致问题。
系统脚本清单
CodeCrafters 项目脚本
~/Documents/codecrafters-http-server-c/your_program.sh
作用:
- 用于在本机编译并运行 CodeCrafters 的 HTTP server 项目。
- 进入项目目录后使用
gcc -lcurl -lz编译app/*.c。 - 生成
/tmp/codecrafters-build-http-server-c。 - 运行该 HTTP server 程序。
适合场景:
- 本地调试该 C 项目。
- 快速验证编译是否通过。
Ubuntu unminimize
/usr/local/sbin/unminimize
作用:
- 把被精简过的 Ubuntu 系统恢复成更完整的服务器环境。
- 恢复被移除的文档和手册页相关内容。
- 重新启用
dpkg的文档排除配置。 - 更新包列表并升级包。
- 重装
/usr/share/man/和/usr/share/doc/相关内容。 - 安装
ubuntu-minimal和必要的推荐包。
通常不需要运行,除非系统缺少基础文档、man page 或基础工具。
Swap 调整
如果编译或运行模型时内存不足,可以增加 swap。
示例:创建 4 GB swap 文件。
sudo systemctl disable nvzramconfig
sudo fallocate -l 4G /mnt/4GB.swap
sudo chmod 600 /mnt/4GB.swap
sudo mkswap /mnt/4GB.swap
sudo sh -c 'echo "/mnt/4GB.swap swap swap defaults 0 0" >> /etc/fstab'
sudo reboot
重启后检查:
free -h
swapon --show
常用软件安装
VLC
sudo snap install vlc
如果 snap 不可用,也可以优先考虑 apt:
sudo apt update
sudo apt install vlc
常见排查
没有 nvidia-smi
Jetson 平台通常不使用桌面 GPU 上的 nvidia-smi。请使用:
tegrastats
nvpmodel -q
jetson_clocks --show
cat /sys/devices/gpu.0/load
cat /sys/devices/gpu.0/devfreq/57000000.gpu/cur_freq
CUDA 能力建议用 deviceQuery 验证。
容器无法访问摄像头
检查:
ls -ltrh /dev/video*
ls -l /tmp/argus_socket
Docker 启动时需要按摄像头类型传入:
- USB 摄像头:
--device /dev/video0 - CSI 摄像头:
-v /tmp/argus_socket:/tmp/argus_socket,并根据应用需要传入/dev/video0
低电压或不稳定
如果出现随机重启、USB 外设掉线、性能异常下降:
- 优先检查电源是否足够。
- 优先使用 J25 DC 5V / 4A 供电。
- 避免使用质量差或过长的 Micro-USB 线。
快速命令汇总
# 登录
ssh jetson
# 系统
cat /etc/os-release
cat /etc/nv_tegra_release
uname -a
# 资源
free -h
df -hT
ip -br addr
# 性能 / GPU
tegrastats
nvpmodel -q
jetson_clocks --show
cat /sys/devices/gpu.0/load
cat /sys/devices/gpu.0/devfreq/57000000.gpu/cur_freq
# CUDA
/usr/local/cuda/bin/nvcc --version
cat /usr/local/cuda/version.txt
# Docker
docker --version
docker ps -a
# Jetson-IO
sudo /opt/nvidia/jetson-io/jetson-io.py
# USB device mode 脚本
ls /opt/nvidia/l4t-usb-device-mode/
Page Source