完整内容含图片可看语雀JetSon_Nano_B01配置问题
设备简介:
NVIDIA JETSON NANO 4G + P3450开发板 + P3448模块(官方开发者模块) + Rtl8822无线网卡 + 风扇 + USB转Micro USB数据线 + 32G闪迪数据卡
关于官方开发者模块:
【微雪课堂】Jetson Nano入门教程系列①——关于Jetson Nano
作者使用的是无 eMMC 的 Jetson Nano 4GB(B01/A02),B01是官方开发者模块,A02是量产模块/国产模块,两者使用的烧录镜像不一样。
Jetson Nano一般而言不提及内存,默认指4GB版本,其余版本如Jetson Nano 2GB会特别说明。内存不同,烧录镜像也不同(理论上烧录系统是不影响的,除非是EMMC/QSPI闪存中的Bootloader程序不兼容)
原有问题概括:
网口:载板RJ45硬件损坏,但是不影响使用。远程SSH连接:不知道账号密码,只能通过电源指示灯判断是否开机。供电问题:nano只接入一个鼠标外设时,无论是用DC-转USB还是MircoUSB-转USB都能正常运行,一旦接入显示器HDMI线就会立刻掉电关机(电源指示灯由绿色正常运行变成立即熄灭)。网卡驱动:网卡驱动未正常安装。
插上供电线(micro-usb5V2A以及DC圆口5V4A5521/5524供电线),一开始能够正常通过电源管理以及boot引导开机,在windows10下查看设备管理器,可以看到磁盘驱动器-Linux File-Stor USB Device字样,说明识别成功。但是只能短暂接入DP/HDMI接口进行视频信号输出,约莫两分钟后系统掉电。时间久了后,正常开机但是无法接入DP/HDMI接口,一接入就掉电关机。再后来则是无法正常开机,接入电源线后十秒左右就掉电。
解决方式概括:
一开始怀疑是电源管理芯片出问题,毕竟能够正常进入系统,使用的是jp441长期稳定版本(预先安装ubuntu18.04LTS+ROS1+OpenCV4.1.1)。折腾一星期后怀疑是系统问题,网上教程均使用较新的jp461,故前往英伟达官网寻找jp461官方安装包(藏得很深,不在jetson系列的网页支持下)。按照官方指引,在windows10下格式化tf卡并烧录镜像,烧录后再次上电,发现上电就掉电,windows系统下通用串行总线控制器无法识别。最终只能短接j40引脚的FORCE RESET和GND引脚进行覆写,因为boot引导程序在模块的QSPI闪存芯片中,与tf卡中的系统存放无关,如果QSPI与系统的boot引导不匹配可能会出现无法开机的情况。按照网上教程,使用ubuntu18.04虚拟机(双系统也可,版本必须为18.04,否则有兼容问题可能无法覆写),安装jetson系列通用的sdkmanager后开始OS覆盖,这里可选仅OS或者完整版SDK安装,完整版安装后需要约14G,按需选择。OS覆盖中,提供了jetson nano最新的长期支持版JetPack4.6.6(当然也有JetPack5.1.6)。打开sdkmanager并识别到nano后,根据nano型号选择2G版本、4G官方开发板、4G国产版本,安装过程中又分为登录developer账号在线下载(慢)、安装jp466后离线安装(推荐)。覆写完成后,再次上电,能够正常使用,问题解决。前后耗时两星期,使用agent辅助收集资料,特地写本教程总结。
问题和解决方式:
未覆写前,上电正常开机,使用micro-usb线连接windows10正常识别,就可以通过Putty或者win10自带的shell进行远程ssh连接。micro-usb线提供 USB 虚拟以太网 (192.168.55.1 固定 IP) 。这时候一切正常,DP/HDMI视频接口也能正常使用。
windows下NDIS兼容设备
第二天再次连接,问题出现。上电正常开机,使用micro-usb线连接windows10,设备管理器识别到陌生的蓝牙和其他设备CDC ECM。按照网上教程,正常连接应该是在串行总线控制器显示linux for tegra #45
现在使用HDMI或者DP线连接Nano和电脑就会自动断电。只连接DC电源线以及microUSB信号线就能够正常工作,核心正常发热。根据核心发热判断核心并没有损坏,但是HDMI/DP接口可能和RJ45网口出现硬件故障,导致电流过流触发掉电保护。
现在只剩下无头模式进行远程连接的选择。agent分析后认为"win10 设备管理器显示 CDC ECM , Jetson Nano 已经正常工作,只是 Windows 没有加载正确的驱动"。此时建议排查win10下没有正确识别这个设备,朝着"远程NDIS兼容设备"排查。
1.先插 DC 电源给 Jetson Nano 供电,等待 30 秒让系统完全启动,然后再插 Micro-USB 线到电脑。
2.打开设备管理器,找到其他设备下带黄色感叹号的CDC ECM。
3.右键 → 更新驱动程序 → 浏览我的计算机以查找驱动程序软件。
4.点击最下方的 "让我从计算机上的可用驱动程序列表中选取"。
5.取消勾选 "显示兼容硬件"(这是最关键的一步,不取消就看不到正确的驱动)。
6.在左侧厂商列表中选择Microsoft,在右侧型号列表中找到并选择 "远程NDIS兼容设备"。
7.点击下一步,弹出 "更新驱动程序警告" 时,点击 "是"。
8.安装完成后,设备管理器的网络适配器下会出现远程NDIS兼容设备。
这里agent怀疑是win10没有正确安装驱动,因此没有识别到Jetson nano,将CDC ECM强制识别为“远程NDIS兼容设备 ”从而完成连接。
win10下win+R进入CMD,报错就以管理员身份运行
ipconfig
有IPv4地址显示192.168.55.100则说明识别成功
ping 192.168.55.1
如果能 ping 通(延迟 < 10ms),说明连接成功
这时候既可以用Putty进行远程SSH连接
关于Jetson Nano的IP地址,在其L4T系统中硬编码为192.168.55.1,可以看成是其对应的固定IP。
这里是ping成功的图片。
以上显示问题是微软在 2024 年及以后的 Windows 更新中故意移除了"通用 RNDIS 驱动选项"导致的,实测会偶尔导致连接不通,按照上述办法解决后就能够ping通,但是依旧显示CDC ECM。正常情况下设备管理器-网络适配器-会出现:Linux for Tegra USB Ethernet(不是远程 NDIS)。
补充一个未经验证的方法,详情参考下图。
安装putty以及使用
| Install PuTTY files | 安装 PuTTY 核心程序文件 | ✅ 必须勾选 | 不选这个就无法安装 PuTTY 本身 |
| Add shortcut to PuTTY on the Desktop | 在桌面创建 PuTTY 快捷方式 | ✅ 推荐勾选 | 频繁使用 PuTTY 连接 Jetson Nano下,桌面快捷方式最方便 |
| Put install directory on the PATH for command prompts | 将 PuTTY 安装目录添加到系统环境变量 | ✅ 强烈推荐勾选 | 以后可以直接在 CMD/PowerShell 中输入putty或scp命令快速启动,不用每次都找安装目录 |
| Associate .PPK files with PuTTYgen and Pageant | 将.ppk 私钥文件关联到 PuTTY 工具 | ✅ 推荐勾选 | 如果你以后使用 SSH 密钥登录(比密码更安全),这个关联会非常方便 |
按照需求勾选,这里作者都勾选,毕竟和后面的VNC一样会经常用到。
- 在<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Host Name</font>处输入:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">192.168.55.1</font>
- 端口保持默认:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">22</font>
- 点击<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Open</font>
- 首次连接弹出安全警告时点击接受
- 输入用户名:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">z</font>,密码:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">123456</font>即可登录。(按照实际修改)
首次连接新的设备会弹出以下warning,选择accept
accept后接着弹出
login as:
输入用户名,会弹出
z@192.168.55.1's password:
成功登录后显示
z@tegra-ubuntu:~$
这样就成功远程控制Jetson Nano了。
作者接下来继续完成离线下RTL8822网卡驱动安装。 在win10下使用micro-usb线连接以后,只能用ssh远程控制,这个时候因为没有网络,所以无法安装驱动,又因为没有驱动所以识别不了网卡,这下一根筋变成两头堵。这里强烈建议使用ubuntu虚拟机连接,因为虚拟机有设置桥接网络分享,这样Nano连接以后也能够共享主机连接的网络,自动完成更新配置以及更换系统源等。
远程SSH连接WIFI(网卡驱动已安装)
网卡驱动安装后,Putty下连接WIFI
# 查看无线网卡是否出现(应该能看到wlan0)
ip a
# 扫描附近WiFi
sudo nmcli dev wifi list
# 连接你的WiFi(替换成你的WiFi名称和密码)
sudo nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码"
# 这里的WIFI名称和密码不能有中文字符和特殊字符最好是纯英文否则会报错
# 查看WiFi IP地址(记下来,以后用这个IP远程)
ip a show wlan0
# 测试网络是否通
ping www.baidu.com -c 4
ping www.bilibili.com -c 4
一键换源安装ROS
连接上WIFI后,强烈建议先自动完成更新配置以及更换系统源,这里推荐使用鱼香ROS的一键安装。
一键安装地址
# 注意这不是代码指令别cv
https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97
# github地址
https://github.com/fishros/install
一键安装代码
# 复制粘贴这个
wget http://fishros.com/install -O fishros && . fishros
后续有需要再安装VNC,agent的建议是" Jetson Nano 默认没有图形界面远程功能,我们安装轻量的 TightVNC 服务器"。貌似是主机和Nano都要安装才能使用。如果不想用VNC还有另外一款软件NoMachine,作者就是用的这个。
Nano联网
目前使用无头模式,在windows10上用Putty远程连接固定ip192.168.55.1,现已进入终端,正打算安装无线网卡Rtl8822的驱动。Nano的内核版本为4.9.140,运行ifconfig得到l4tbr0、rndis0和usb0接口,没有wlan0接口。
Jetson Nano未检测到无线网卡(wlan0),说明驱动程序未正确安装或者加载。agent分析"RTL8822系列(如8822CE, 8822BU)的驱动在 Jetson Nano 上比较敏感,内核版本<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">4.9.140</font>可能有影响"。此时如果没有安装网卡驱动,可以通过主机安装对应驱动并传输到Nano中,不过要先找对应的驱动接着还要跨机传输还要解压还要安装,这个过程还没有图形化界面,太多不确定因素,实在没有办法不建议这么做。
安装无线网卡Rtl8822的驱动的方法太复杂,不如直接让Jetson Nano有网络来的快,方法就是
:::info 让Jetson Nano通过PC共享网络
:::
SSH下Nano与宿主机文件传输
补充:在SSH远程连接中,如何实现win10主机和Nano的文件传输呢?
有五种方式,第一种是下载WinSCP图形化软件,第二种是使用win10自带的shell进行传输,第三种是使用U盘,第四种是在 Windows 上搭建 HTTP 文件服务器,第五种是使用WIndows共享文件夹。
这里介绍如何使用win10自带的shell
scp 本地文件完整路径 用户名@192.168.55.1:Jetson上的目标路径
# 例如把桌面的文件传到 Nano的 /home/ 目录下
scp C:\\Users\\你的Windows用户名\\Desktop\\public_sources.tbz2 nvidia@192.168.55.1:/home/
# 传输文件夹使用 scp -r
scp -r C:\\Users\\你的Windows用户名\\Desktop\\public_sources.tbz2 nvidia@192.168.55.1:/home/
补充:如何使用WIndows共享文件夹,详细内容看下图。

# 安装 cifs-utils
sudo apt update
sudo apt install cifs-utils
# 创建本地挂载点
sudo mkdir /mnt/winshare
# 挂载 Windows 共享文件夹
sudo mount -t cifs //[你的Windows IP地址]/[共享名] /mnt/winshare -o username=[你的Windows用户名],password=[你的Windows密码]
windows共享网络
如何让让Jetson Nano通过PC共享网络呢?
网络共享(Windows Internet Sharing)、使用以太网 (Ethernet Cable)两种方法。使用以太网就是用RJ45网口,当然这个已经坏了,所以只能用网络共享。
在win10下win+R,运行框中输入ncpa.cpl,打开网络连接窗口。找到 Windows10 主机当前正在上网的连接。可能是叫“WLAN”(无线网络)或“以太网”(有线网络),找到描述里带有 “Remote NDIS based Internet Sharing Device” 字样的连接。这就是 Jetson Nano 通过 USB 线虚拟出来的网络接口。
接着开启网络共享。右键正在上网的适配器-属性-共享-勾选"允许其他网络用户通过此计算机的 Internet 连接来连接"-下方"家庭网络连接"选择Nano对应的适配器-确定/保存。
接着在Nano中检查是否共享成功。
# 查看网络接口 usb0 是否已经自动获取到了以 192.168.137.x 开头的 IP 地址
ifconfig
# 测试与 Windows 主机的连接
ping -c 4 192.168.137.1
# 测试外网连接
ping -c 4 8.8.8.8
# 测试 DNS 解析(能连接百度就说明能上网)
ping -c 4 www.baidu.com
RJ45网口排查
补充:从软件层面验证RJ45网口是否损坏?
# 看看显示的接口列表中是否有 eth0 或类似的名称
ip link show
ifconfig -a
# 检查硬件状态
sudo ethtool eth0
# 查看内核日志
dmesg | grep -i eth0
如果看到eth0, 说明系统识别到了硬件。可以继续下面的诊断。如果没看到,那大抵是坏了。
分析网口上的LED指示灯。ACT/LNK绿灯,常亮或规律闪烁通常表示已连接且有数据传输,如果完全不亮,很可能是物理连接不通;Link 100 LED黄灯,当网口成功协商到 100Mbps 或更高的速率时通常会亮起,用于辅助判断协商状态是否正常。
到这里大部分关于远程SSH连接以及无线网卡的内容就结束了。以下是重新刷写TF卡以及安装SDK Manager的过程记录。
配置TF卡or安装SDK Manager
注意官方教程提供的是"快速启动"方案,使用 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">balenaEtcher</font> 和 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SD Card Formatter</font> 烧录镜像,半小时内就能即开即用。而提及的SDK Manager就是高级工具配置,包含BSP板级支持包、特殊硬件故障支持、深度SDK集成(配置开发环境如CUDA、CUDNN、TensorRT、OpenCV)
注意直接用SDK Manager覆盖烧录,即使不格式化SD/TF卡,也会导致原有系统的数据完全丢失。根据NVIDIA官方论坛的说明,这个操作会“完全重置整个系统,包括引导和操作系统本身的一切”,所有数据是无法保留的。原来的Ubuntu 18.04系统会被完全覆盖,恢复成出厂状态。
以下是"快速启动"方案
jetson nano的官方配置教程
以下是"强制恢复模式"方案
1.创建一个全新的Ubuntu 18.04虚拟机
- 下载镜像:从Ubuntu官网下载Ubuntu 18.04.6 LTS的ISO镜像。
- 新建虚拟机:在VMware中新建虚拟机,选择下载的Ubuntu 18.04镜像。内存和硬盘空间方面,建议为虚拟机分配至少100GB硬盘空间和4GB-8GB内存,为接下来的下载和编译预留足够空间。
- 启动并安装:启动虚拟机完成安装,期间创建一个管理用户(例如用户名为 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">ubuntu</font>,密码自定义123456)。
2. 将Nano置于“恢复模式”
无论是否更换虚拟机,这是烧录必须执行的一步。请先完全断开Jetson Nano的电源,然后找到开发板上的 FC REC 和 GND 引脚,用跳线帽或杜邦线进行短接。之后连接好USB线和DC电源,为Nano通电。
3. 确保虚拟机识别Nano
- 安装VMware Tools:建议在你使用的Ubuntu虚拟机中安装增强工具(VMware Tools),这有助于提高USB设备的稳定性。
- 连接USB设备:Nano通电并进入恢复模式后,VMware会弹出提示,询问将新连接的USB设备连接到宿主机还是虚拟机。必须选择“连接到虚拟机”,这是烧录成功的关键。
4. 在SDK Manager中完成烧录
- 安装并启动:在Ubuntu虚拟机中,通过命令行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">dpkg -i</font>安装你下载的<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font>包,安装完毕后从终端执行 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font> 启动。
- 登录账号:运行 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font> 命令后,会打开图形界面。使用你的NVIDIA账号密码登录。
- 选择组件并确认烧录:在软件界面中,仅勾选**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson OS</font>**组件,取消<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson SDK Components</font>以节省时间。根据你的Nano型号(如Jetson Nano Developer Kit)完成后续配置,并确保选择的目标设备是**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SD card</font>**。
- 等待完成:点击开始后,SDK Manager会自动下载所需文件,并将系统镜像写入SD卡。整个过程可能持续20-40分钟。
(问题概括的下半段)官方烧录教程操作完成,但是将SD卡插回去以后,连接DP线输出显示信号,图形化界面突然弹出报错,貌似是说图形化error,一回车按ok就熄屏,现在重新断电上电后,绿色电源灯正常但是DP线没有信号输出,显示器一直保持黑屏。用MicroUSB连接电脑,CDC NCM又出来了,检查网络连接,Remote NDIS也有了,想用putty来连接,但是NDIS的ip地址192.168.55.100也无法连接。打字这会功夫它就自己断电了。(鉴于这个问题,怀疑是Bootloader****出问题,而Bootloader存储在QSPI闪存芯片上,只好用SDK Manager深度刷写)
以下是<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SDK Manager</font> 刷写QSPI闪存方案
第一步:准备工作(最重要,请仔细检查)
- 确认供电充足:这是此类问题的常见根源。请务必使用5V⎓4A的DC电源(圆口插头),并确保Micro USB线连接可靠。
- 准备Ubuntu系统:SDK Manager在Windows的虚拟机上运行可能不稳,问题会更多。推荐的方案有两种:
- (最简单) 在另一台空闲电脑上安装原生Ubuntu 18.04系统。实测虚拟机也可以。
- (备选) 制作一个Ubuntu 18.04的启动U盘,用它启动你的Windows电脑进行操作。
第二步:将Nano置于恢复模式 (Recovery Mode)
第三步:使用SDK Manager进行深度刷写
sudo apt update
sudo apt install -y ./sdkmanager_*.deb
# 如果提示依赖缺失,可以尝试运行以下命令修复
sudo apt –fix-broken install
安装并运行SDK Manager过程记录
sudo apt install -y ./sdkmanager_*.deb
# 返回内容
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting 'sdkmanager' instead of './sdkmanager_2.4.0-13236_amd64.deb'
The following NEW packages will be installed:
sdkmanager
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/89.1 MB of archives.
After this operation, 400 MB of additional disk space will be used.
Get:1 /home/u18/Downloads/sdkmanager_2.4.0-13236_amd64.deb sdkmanager amd64 2.4.0-13236 [89.1 MB]
Selecting previously unselected package sdkmanager.
(Reading database … 150527 files and directories currently installed.)
Preparing to unpack …/sdkmanager_2.4.0-13236_amd64.deb …
Unpacking sdkmanager (2.4.0-13236) …
Setting up sdkmanager (2.4.0-13236) …
Processing triggers for hicolor-icon-theme (0.17-2) …
Processing triggers for mime-support (3.60ubuntu1) …
Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.2) …
Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) …
N: Download is performed unsandboxed as root as file '/home/u18/Downloads/sdkmanager_2.4.0-13236_amd64.deb' couldn't be accessed by user '_apt'. – pkgAcquire::Run (13: Permission denied)
这个警告的本质是,使用<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo apt install</font>安装本地<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font>文件时,<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">apt</font>自身的一个安全机制与操作方式起了冲突。因为权限问题,安装过程脱离了一个叫<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">_apt</font>的用户沙盒,转而以<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">root</font>身份完成。软件本身已经安装成功了,运行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>就能够正常启动,只是安装过程中涉及权限问题发生警告。
# 确定 SDK Manager 安装目录
which sdkmanager
# 进入SDK Manager 安装目录,按需修改
cd ~/nvidia/nvidia_sdk
# 或者 SDK Manager 默认的安装路径可能是 /usr/bin/sdkmanager,但配置文件会生成在 ~/.nvsdkm/
sdkmanager
返回
warning:The system does not meet the minimum requirements.
Screen resolution equal or larger than 1440×900 (1052×411) is recommended when running SDK Manager with GUI.
Please use SDK Manager command-line interface (CLI) for better experience on this system.
Get started with sdkmanager –help.
Memory space equal or larger than 8GB is recommended.
Please reduce concurrent file download in SDK Manager Settings, for a better experience.
提醒图形界面体验可能不佳,并建议使用命令行界面。常见于虚拟机或小屏幕设备上运行 SDK Manager 时。
sdkmanager –query
返回
++++++++++++++++++++++++++++++++++++++++++++++++++
+ Welcome to NVIDIA SDK MANAGER v2.4.0.13236 +
++++++++++++++++++++++++++++++++++++++++++++++++++
┏ Login —————————————- ┓
– Select login type: (Use arrow keys)
❯ NVIDIA Developer
NVOnline
Install From Local Folder
这里提示要三选一,分别是NVIDIA Developer、NVOnline、Install From Local Folder
作者选择第一个登录Developer开发者账户,登陆成功返回
Query completed.
登录后,即将开始烧录。在开始烧录前,运行
lsusb | grep 0955:7f21
检查输出是否正常。如果返回 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">NVIDIA Corp</font> 等,说明Nano成功进入恢复模式,可以开始烧录了。
以下是使用CLI命令行模式进行烧录,user以及password根据实际修改。
sdkmanager –cli install \\
–logintype devzone \\
–user YOUR_EMAIL@example.com \\
–password YOUR_PASSWORD \\
–product Jetson \\
–targetos Linux \\
–version 4.6.6 \\
–target JETSON_NANO_TARGETS \\
–select 'Jetson OS' \\
–flash all \\
–license accept
返回
Target: JETSON_NANO_TARGETS
Step: 1/4: Downloading files…
Step: 2/4: Flashing OS…
…
Flash completed successfully.
如果报错,那就执行sdkmanager直接进入图形化(GUI)的SDK Manager进行烧录。
sdkmanager
| Pre-Config(预配置) | 在刷机前就在 Ubuntu 主机上提前设置好用户名、密码、时区、网络等所有参数,刷完机后 Jetson 会自动完成所有初始化,直接跳过开机向导,开机就能用 SSH 连接 | 唯一可用的选项 |
| Runtime(运行时配置) | 刷完机后什么都不设置,强制要求你连接显示器、键盘和鼠标,手动完成开机向导,不完成向导系统不会启动 SSH 服务,根本无法连接 | 完全不可用,选了就白刷 |
SDK Manager is about to flash your …
choose a connected board below,
options: 003/006 | 3-2 | 2.00 | Recovery | 0955:7f21,OEM Configuration :
Pre-Config
Runtime
# 二选一,有Pre-Config 和 Runtime
# Pre-Config(预配置)模式提前设置好用户名称建议选这个
# Runtime 运行时配置
Run command:
sdkmanager –cli –action install –login-type devzone –product Jetson –target-os Linux –version 4.6.6 –target JETSON_NANO_TARGETS –select 'Jetson OS' –flash –license accept –user 2564310566@qq.com –password Hamker123456//
Session initialized…
===== INSTALLATION COMPLETED SUCCESSFULLY. =====
– Drivers for Jetson: Installed
– File System and OS: Installed
– Flash Jetson Nano: Skipped
– DateTime Target Setup: Skipped
– CUDA Toolkit for L4T: Skipped
– cuDNN on Target: Skipped
– TensorRT on Target: Skipped
– OpenCV on Target: Skipped
– VisionWorks on Target: Skipped
– VPI on Target: Skipped
– NVIDIA Container Runtime with Docker integration (Beta): Skipped
– Multimedia API: Skipped
– Nsight Systems: Skipped
===== Installation completed successfully – Total 13 components =====
===== 2 succeeded, 0 failed, 0 up-to-date, 11 skipped =====
# 运行完成的返回
# 这里只进行Jetson OS的刷写以及QSPI闪存刷写其他组件单独安装
刷写Jetson OS过程
从终端日志可以看到:
- 已经成功识别到你的 Jetson Nano 4GB(硬件 ID <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">0955:7f21</font>)
- 已经完成了 GPT 分区表的写入(<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Writing partition GPT with gpt.bin 100%</font>)
- 现在正在刷写QSPI Bootloader(引导程序)
正在下载 SDK 组件(CUDA、OpenCV 等),返回install pending则说明下载完成,这些SDK Manager的压缩包已经下载到宿主机,后续可以单独进行离线安装。
SDK Manager 的完整工作流程(分两个大阶段)
第一阶段(你现在正在进行的,进度 42%)
- 已经下载完所有文件
- 正在刷写基础系统镜像到 SD 卡
- 同时刷写 QSPI Flash 里的 Bootloader(引导程序)
- 这个阶段完成后,Jetson Nano 会自动重启
第二阶段(系统重启后自动开始)
- SDK Manager 会通过 SSH 自动连接到 Jetson Nano(用你刚才设置的用户名和密码)
- 然后依次安装所有显示 “Install Pending” 的组件:
- CUDA 10.2(Jetson Nano 的 GPU 加速核心)
- OpenCV 4.1.1(计算机视觉库)
- TensorRT(深度学习推理加速库)
- cuDNN(深度学习 GPU 加速库)
- 多媒体和开发工具
因为选择了pre-config预配置,所以第二阶段完全自动,无需干预。完成安装后,Nano会自动退出恢复模式,进入正常模式
Nano进入正常模式,虚拟机ubuntu18.04询问要连接NVIDIA Linux for Tegra到哪一台设备。
这里图片左下角询问是否继续安装SDK Manager组件,为了验证系统是否稳定,选择skip跳过。

<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Flash Jetson OS</font> 显示 <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Success</font>,说明最关键的系统和 QSPI 引导程序已经刷写完成 ,同时跳过安装SDK Manager组件,组件相关内容都是skipped。
到这里, 关闭 SDK Manager 窗口, 拔掉 Jetson Nano 的 DC 电源,等待 10 秒,重新插上来重启。
重启后,用 Micro-USB 线连接 Jetson Nano 和Windows10系统 ,
打开 PuTTY,连接 <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">192.168.55.1</font>,输入用户名和密码进行远程SSH连接。
到此为止,Jetson OS的刷写以及QSPI闪存刷写完成,此时Nano应该退出恢复状态,进入正常的使用状态
lsusb
Bus 003 Device 010: ID 0955:7020 NVidia Corp.
# 返回以上内容就是成功刷写后退出恢复模式这时候可以正常用Nano
lsusb | grep 0955:7f21
# 出现以上字样表示Nano还处于强制恢复模式
7020 :usb-device mode
7021 :Recovery Mode
SDK Manager组件配置
系统成功启动后,可以通过SSH或直接在Nano上打开终端,使用以下命令来安装CUDA等工具包,以完成SDK Manager的剩余工作(按需选择,非强制)
sudo apt update
sudo apt install nvidia-jetpack
由于在前面选择登录developer开发者账号并且在线下载,故虚拟机ubuntu18.04中有/home/Downloads/sdkmanager_2.4.0-13236_amd64.deb以及/home/Downloads/sdkm_downloads。文件夹sdkm_downloads中含有OpenCV-4.1.1-2-gd5a58aa75-aarch64-licenses.deb等sdkmanager组件,故这里进行离线安装。
操作流程:
第一步:在虚拟机中安装 SDK Manager 工具
打开 Ubuntu18.04 虚拟机的终端,进入文件存放的目录(例如 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">cd ~/Downloads</font>),然后使用 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo apt install</font> 命令安装 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font> 包
sudo apt install ./sdkmanager_2.4.0-13236_amd64.deb
第二步:离线登录并导入已下载的组件
在终端输入 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>启动图形界面。在欢迎界面选择 “Offline”(离线)选项卡,然后点击 “Browse” 或 “选择文件夹”,导航到你存放 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkm_downloads</font> 的路径并选中它,点击 “Start” 。
# sudo 提权避免权限问题
sudo sdkmanager
第三步:选择和安装组件
导入成功后,SDK Manager 会自动识别其中的组件。在 Target Hardware 步骤,确认并选择你的 Jetson Nano 设备型号。进入组件选择界面(Target Components)时,务必取消勾选 “Jetson OS”,只选择 “Jetson SDK Components”。
第四步:验证安装
安装完成后,用一条命令验证核心组件 CUDA 是否安装成功:
/usr/local/cuda/bin/nvcc –version
# 如果显示了 CUDA 的版本信息,
# 比如 Cuda compilation tools, release 10.2,就说明 SDK Manager 组件已经安装成功了。
运行sudo sdkmanager,弹出NVIDIA SDK MANGAGER图形化界面,有NVIDIA DEVELOPER、NVONLINE、INSTALL ONLY三个选择。选择INSTALL ONLY并指定路径install from:为/home/u18/Downloads/nvidia/sdkm_downloads
sudo sdkmanager
NVIDIA DEVELOPER –> 在线登录developer开发者账户
NVONLINE –> 在线下载
INSTALL ONLY –> 自行选择路径并安装(离线安装)
下图是提示升级sdkmanager,单纯给nano安装sdk组件,没有必要升级,选择later跳过。
忽略后弹出PRODUCT CATEGORY、SYSTEM CONFIGURATION、SDK MANAGER三个选项,第一个识别到Nano,第二个识别到Host Machine以及Jetson Nano[developer kit version],但是第三个选项反馈"No available releases to execute as super user",下方选项Product version-JetPack 4.6.6 是灰色的,有一行小字[Cannot execute as super user],如下图所示。
这是因为<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo sdkmanager</font>命令以管理员身份root启动GUI界面,而SDK Manaager不希望用户在具有完整系统权限的状态下安装SDK组件,担心造成系统混乱。
只要退出SDK Manager,以<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>命令打开即可。
sdkmanager
运行sdkmanager后成功在STEP1的SDK Manager识别到本地的JetPack4.6.6,甚至还询问我要不要升级为5.1.6,为了不节外生枝选择later。STEP1中还有additional SDKS是DeepStream6.0.1,这个额外的SDK默认没有勾选。


进入STEP2,提示JETPACK 4.6.6 LINUX FOR JETSON NANO [DEVELOPER KIT VERSION],包括HOST COMPONENTS以及TARGET COMPONENTS两大类。HOST COMPONENTS有CUDA、COMPUTER Vision、Developer Tools三个子选项,TARGET COMPONENTS有Jetson OS、Jetson SDK Components两个子选项。其中Jetson SDK Components又包含CUDA、CUDA-X AI、CV、NVIDIA Container Runtime、Multimedia、Developer Tools等子选项。
绝对绝对不要勾选**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson OS</font>**,一旦勾选并执行,SD/TF 卡系统会被覆盖,之前所有配置和 WiFi 设置都会丢失。
重点关注**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson SDK Components</font>**{Jetson SDK 组件)。这个大类下包含了 CUDA、cuDNN、TensorRT、OpenCV 等核心库。勾选所有子项,等待安装即可。
提示输入Nano的账户名以及密码,用于SSH远程安装。
SDK Manager is about to install SDK components on your Jetson Nano module To install SDK components on your Jetson Nano module:
1Complete the Ubuntu ‘System configuration wizard’ on your Jetson Nano modules, if you have chosen to configure it manually before flashing.
2Wait for the OS login screen.
3If proxy is used on host, also configure apt proxy on your Jetson Nano modules.
4Enter the username and password of your Jetson Nano modules.
SDK Manager is verifying Jetson Nano modules system readiness to install.
Disk space.
Internet connection.
APT repository access for Debian package installation(target).
Device image version matching requirement
This may take a minute to complete…
以下是下载安装过程。
INSTALLATION COMPLETED SUCCESSFULLY!
安装全部成功!


安装后验证
SDK Manager组件安装完成后进行验证是否正常:
# 验证 CUDA
# 或者 /usr/local/cuda/bin/nvcc –version
nvcc –version
# 验证 cuDNN(如果已安装)
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 验证 TensorRT(如果已安装)
dpkg -l | grep tensorrt
# 验证 OpenCV(如果已安装)
python3 -c "import cv2; print(cv2.__version__)"
作者运行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">nvcc –version</font> 验证CUDNN返回报错
cat: /usr/local/cuda/include/cudnn.h: No such file or directory
# 结果说明CUDA Toolkit 已经安装,但其 bin 目录没有被添加到 PATH 环境变量中
ls -la /usr/local/cuda*
# 返回 /usr/local/cuda
# 永久添加 PATH将环境变量写入 ~/.bashrc 文件
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 接着检查cuDNN 头文件
ls -a /usr/local/cuda/include
# 没有返回结果
sudo apt install libcudnn8-dev -y
# 返回libcudnn8-dev is already the newest version (8.2.1.32-1+cuda10.2)
cd /usr/local/cuda/bin/nvcc
# 返回 不存在该路径
sudo apt install cuda-toolkit-10-2 -y
# 返回 cuda-toolkit-10-2 is already the newest version (10.2.460-1).
这里的问题是环境变量以及cuDNN 头文件位置和格式发生变化,头文件可能被拆分到了多个包中。
以下代码不需要全部执行,因为agent这里解释说:
关于 /usr/local/cuda/include/cudnn.h 的问题
由于你的系统已经正确安装了 cuDNN 头文件在 /usr/include/aarch64-linux-gnu/ 下
并且 nvcc 默认会搜索系统头文件路径
所以实际上你并不需要手动复制或链接 cudnn.h 到 /usr/local/cuda/include/
之前的验证命令没有输出,只是因为那个文件不是你预期的版本宏定义文件,但不会影响实际使用。
# 搜索nvcc编译器,
sudo find / -name nvcc 2>/dev/null
# 得到返回/usr/local/cuda-10.2/bin/nvcc
#进行第三步配置环境变量并且验证,再次运行
nvcc –version
# 得到返回nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# Built on Sun_Feb_28_22:34:44_PST_2021
# Cuda compilation tools, release 10.2, V10.2.300
# Build cuda_10.2_r440.TC440_70.29663091_0
# 接着继续定位cudnn,运行
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 得到返回cat: /usr/local/cuda/include/cudnn.h: No such file or directory
# 现在 CUDA 编译器已经正常工作,但 cuDNN 头文件缺失。
# 查找 cudnn.h 的实际位置:
sudo find /usr -name cudnn.h 2>/dev/null
# 得到返回位置/usr/include/cudnn.h
#软链接cudnn头文件到CUDA目录
sudo cp /usr/include/cudnn.h /usr/local/cuda/include/
# 确保库文件也被正确链接(cuDNN 运行时需要 libcudnn.so),同时执行。
# 如果空间不足(需要约5.3G)建议别复制
sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/cuda/lib64/
#运行ls -l /etc/alternatives/libcudnn
file /etc/alternatives/libcudnn分别得到
# lrwxrwxrwx 1 root root 41 Jun 2 08:36 /etc/alternatives/libcudnn -> /usr/include/aarch64-linux-gnu/cudnn_v8.h
# /etc/alternatives/libcudnn: symbolic link to /usr/include/aarch64-linux-gnu/cudnn_v8.h
# 这个才是真正的cudnn头文件。
# 复制真实头文件到 CUDA include 目录,并命名为 cudnn.h
sudo cp /usr/include/aarch64-linux-gnu/cudnn_v8.h /usr/local/cuda/include/cudnn.h
# 验证
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
作者运行<font style="color:rgb(15, 17, 21);background-color:rgb(237, 243, 254);">dpkg -l | grep tensorrt</font> 验证TensorRT返回,说明安装成功
ii nvidia-container-csv-tensorrt 8.2 arm64 Jetpack TensorRT CSV file
ii tensorrt 8.2.1.9-1+cuda10.2 arm64 Meta package of TensorRT
如果担心Nano空间不够,可以运行df查看当前磁盘使用情况
df -h
# 没有安装SDK Manager组件前
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 30G 4.9G 23G 18% /
none 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 22M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/120
tmpfs 397M 0 397M 0% /run/user/1000
# 安装SDK Manager组件 以及 ROS Melodic桌面完整版后
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 30G 14G 15G 49% /
none 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 30M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/120
tmpfs 397M 0 397M 0% /run/user/1000
后续空间使用建议
剩余 15GB 的空间对于以下用途通常是足够的:
- 编写和编译中等规模的 ROS 程序包
- 运行常见的深度神经网络推理(如图像分类、目标检测)
- 存储一些小规模的数据集
如果你将来需要:
- 存放大型数据集(如 COCO、ImageNet),建议外接 USB 硬盘/U 盘,或者使用 NFS 挂载网络存储。
- 编译大型软件包(如从源码编译 OpenCV 或 Pytorch),请留意临时文件(<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/tmp</font> 或 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">~/src</font>)可能会占用额外空间,建议在编译前检查剩余空间。
运行鱼香ROS进行更换系统源、ROS源后,进行ROS-MELODIC-DESKTOP-FULL完整版安装,大约2G。
# 1. 鱼香ROS一键换源
wget http://fishros.com/install -O fishros && . fishros
# 2. 安装桌面完整版(包含 rviz、gazebo 等)
sudo apt update
sudo apt install ros-melodic-desktop-full -y
# 3. 初始化 rosdep(国内用rosdepc替代)
sudo rosdep init
rosdep update
# 4. 设置环境变量(自动生效)
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 5. 安装其他常用工具
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential -y
总结
重新刷写OS和QSPI的Nano,正常使用下会利用宿主机的网络自动更新系统源、安装无线网卡驱动程序,这里是用虚拟机ubuntu18.04进行SSH控制(其余控制方法下文补充),可以看到RTL8822无线网卡驱动程序已经安装并且识别到了。
sudo lspci -v
# 以下是返回内容
00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0, IRQ 84
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00001000-00001fff
Memory behind bridge: 13000000-130fffff
Capabilities: [40] Subsystem: NVIDIA Corporation Device 0000
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed-
Capabilities: [80] Express Root Port (Slot+), MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: pcieport
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device c822
Subsystem: Hewlett-Packard Company Device 85f7
Flags: bus master, fast devsel, latency 0, IRQ 407
I/O ports at 1000 [size=256]
Memory at 13000000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Device Serial Number 00-e0-4c-ff-fe-c8-22-01
Capabilities: [158] Latency Tolerance Reporting
Capabilities: [160] L1 PM Substates
Kernel driver in use: rtl88x2ce
Kernel modules: rtl8822ce
# Network controller: Realtek Semiconductor Co., Ltd. Device c822 是芯片型号
# Kernel driver in use: rtl88x2ce 网卡成功加载驱动
接着进行WIFI连接,使用nmcli命令
# 1. 扫描周围的 WiFi 网络
sudo iw dev wlan0 scan | grep SSID
# 2. 连接到 WiFi
nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码"
# 例如nmcli dev wifi connect "A" password "12345678"
# 3. 如果 nmcli 不可用,可以用传统方法:
# 生成配置并连接
wpa_passphrase "你的WiFi名称" "你的WiFi密码" | sudo tee /etc/wpa_supplicant.conf
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
nmtui
如果不熟悉CLI命令行界面,也可以用nmtui这个图形化文本界面
sudo nmtui
# 避免权限问题影响网络连接
# nmtui 的 Activate a connection 列表中会出现一个
以你的 Wi-Fi 名称(A)或你自定义的 Profile 名称命名的条目,且其前面带 * 号
出现 * 号表示WIFI连接成功
# 如果还是有问题建议重启虚拟机
有关nmtui的使用方式省略,有空后面再补充
网络连接完成后,在 Jetson Nano 的终端中运行以下命令,确认连接详情(使用无线网络对应wlan0)
# 查看当前活动的网络连接
nmcli connection show –active
# 查看 wlan0 接口的 IP 地址
ip addr show wlan0
# 测试网络连通性(例如 ping 百度),ping通则说明网络通畅
ping -c 4 baidu.com
补充:只要RTL8822无线网卡驱动程序已经安装并且识别到,那么后续的网络识别、网络连接等报错,要么是权限不足,要么是需要reboot重启进行系统文件更新,无需再担心。
reboot
虚拟机注意事项
Jetson Nano正常使用下,或多或少涉及以下两种使用方式。
使用虚拟机ubuntu18.04进行控制
- 在你虚拟机的菜单栏中,找到“可移动设备” -> “USB 控制器”下的设备列表。
- 确保 **<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Nvidia Corp</font>** 或类似的设备已被勾选。这表示设备已成功连接到了虚拟机,而不是 Windows 宿主机。
- 检查虚拟机的网络适配器设置。最简单可靠的方式是将它设置为“NAT 模式”。这能让虚拟机共享主机的网络,同时不影响与 Nano 的 USB 连接。
ssh安装(如果没安装,运行以下命令安装)
sudo apt install openssh-client -y
1. 直接使用SSH连接。Nano<font style="color:rgb(15, 17, 21);">的 USB 网络接口和 SSH 服务在Pre-Config中就绪</font>
ssh nvidia@192.168.55.1
# ssh 用户名@<你的Nano_IP地址>
输入账户名和密码后,ping主机检查是否成功。
ping 192.168.55.1
2. <font style="color:rgb(15, 17, 21);">使用串口Serial进行登录</font>
查找串口号。
ls /dev/ttyUSB*
# 正常会返回 ttyUSB0
使用screen命令进行连接。
# ttyUSB0 替换成实际名字
screen /dev/ttyUSB0 115200
# 进入后运行
whoami
ip a
sudo systemctl status ssh
# 分别检查用户名称 IP地址 SSH服务是否启用正常返回
nvidia
192.168.55.1
active (running)
3. 使用Nomachine图形化连接
作者使用Nomachine,该软件需要在Nano和宿主机安装对应版本
使用windows控制Nano
补充:nano正常关机指令
sudo shutdown -h now
sudo poweroff
sudo halt
补充:Nano进入强制恢复模式
设备简介:
NVIDIA JETSON NANO 4G + P3450开发板 + P3448模块(官方开发者模块) + Rtl8822无线网卡 + 风扇 + USB转Micro USB数据线 + 32G闪迪数据卡
关于官方开发者模块:
【微雪课堂】Jetson Nano入门教程系列①——关于Jetson Nano
作者使用的是无 eMMC 的 Jetson Nano 4GB(B01/A02),B01是官方开发者模块,A02是量产模块/国产模块,两者使用的烧录镜像不一样。
Jetson Nano一般而言不提及内存,默认指4GB版本,其余版本如Jetson Nano 2GB会特别说明。内存不同,烧录镜像也不同(理论上烧录系统是不影响的,除非是EMMC/QSPI闪存中的Bootloader程序不兼容)
原有问题概括:
网口:载板RJ45硬件损坏,但是不影响使用。远程SSH连接:不知道账号密码,只能通过电源指示灯判断是否开机。供电问题:nano只接入一个鼠标外设时,无论是用DC-转USB还是MircoUSB-转USB都能正常运行,一旦接入显示器HDMI线就会立刻掉电关机(电源指示灯由绿色正常运行变成立即熄灭)。网卡驱动:网卡驱动未正常安装。
插上供电线(micro-usb5V2A以及DC圆口5V4A5521/5524供电线),一开始能够正常通过电源管理以及boot引导开机,在windows10下查看设备管理器,可以看到磁盘驱动器-Linux File-Stor USB Device字样,说明识别成功。但是只能短暂接入DP/HDMI接口进行视频信号输出,约莫两分钟后系统掉电。时间久了后,正常开机但是无法接入DP/HDMI接口,一接入就掉电关机。再后来则是无法正常开机,接入电源线后十秒左右就掉电。
解决方式概括:
一开始怀疑是电源管理芯片出问题,毕竟能够正常进入系统,使用的是jp441长期稳定版本(预先安装ubuntu18.04LTS+ROS1+OpenCV4.1.1)。折腾一星期后怀疑是系统问题,网上教程均使用较新的jp461,故前往英伟达官网寻找jp461官方安装包(藏得很深,不在jetson系列的网页支持下)。按照官方指引,在windows10下格式化tf卡并烧录镜像,烧录后再次上电,发现上电就掉电,windows系统下通用串行总线控制器无法识别。最终只能短接j40引脚的FORCE RESET和GND引脚进行覆写,因为boot引导程序在模块的QSPI闪存芯片中,与tf卡中的系统存放无关,如果QSPI与系统的boot引导不匹配可能会出现无法开机的情况。按照网上教程,使用ubuntu18.04虚拟机(双系统也可,版本必须为18.04,否则有兼容问题可能无法覆写),安装jetson系列通用的sdkmanager后开始OS覆盖,这里可选仅OS或者完整版SDK安装,完整版安装后需要约14G,按需选择。OS覆盖中,提供了jetson nano最新的长期支持版JetPack4.6.6(当然也有JetPack5.1.6)。打开sdkmanager并识别到nano后,根据nano型号选择2G版本、4G官方开发板、4G国产版本,安装过程中又分为登录developer账号在线下载(慢)、安装jp466后离线安装(推荐)。覆写完成后,再次上电,能够正常使用,问题解决。前后耗时两星期,使用agent辅助收集资料,特地写本教程总结。
问题和解决方式:
未覆写前,上电正常开机,使用micro-usb线连接windows10正常识别,就可以通过Putty或者win10自带的shell进行远程ssh连接。micro-usb线提供 USB 虚拟以太网 (192.168.55.1 固定 IP) 。这时候一切正常,DP/HDMI视频接口也能正常使用。
windows下NDIS兼容设备
第二天再次连接,问题出现。上电正常开机,使用micro-usb线连接windows10,设备管理器识别到陌生的蓝牙和其他设备CDC ECM。按照网上教程,正常连接应该是在串行总线控制器显示linux for tegra #45
现在使用HDMI或者DP线连接Nano和电脑就会自动断电。只连接DC电源线以及microUSB信号线就能够正常工作,核心正常发热。根据核心发热判断核心并没有损坏,但是HDMI/DP接口可能和RJ45网口出现硬件故障,导致电流过流触发掉电保护。
现在只剩下无头模式进行远程连接的选择。agent分析后认为"win10 设备管理器显示 CDC ECM , Jetson Nano 已经正常工作,只是 Windows 没有加载正确的驱动"。此时建议排查win10下没有正确识别这个设备,朝着"远程NDIS兼容设备"排查。
1.先插 DC 电源给 Jetson Nano 供电,等待 30 秒让系统完全启动,然后再插 Micro-USB 线到电脑。
2.打开设备管理器,找到其他设备下带黄色感叹号的CDC ECM。
3.右键 → 更新驱动程序 → 浏览我的计算机以查找驱动程序软件。
4.点击最下方的 "让我从计算机上的可用驱动程序列表中选取"。
5.取消勾选 "显示兼容硬件"(这是最关键的一步,不取消就看不到正确的驱动)。
6.在左侧厂商列表中选择Microsoft,在右侧型号列表中找到并选择 "远程NDIS兼容设备"。
7.点击下一步,弹出 "更新驱动程序警告" 时,点击 "是"。
8.安装完成后,设备管理器的网络适配器下会出现远程NDIS兼容设备。
这里agent怀疑是win10没有正确安装驱动,因此没有识别到Jetson nano,将CDC ECM强制识别为“远程NDIS兼容设备 ”从而完成连接。
win10下win+R进入CMD,报错就以管理员身份运行
ipconfig
有IPv4地址显示192.168.55.100则说明识别成功
ping 192.168.55.1
如果能 ping 通(延迟 < 10ms),说明连接成功
这时候既可以用Putty进行远程SSH连接
关于Jetson Nano的IP地址,在其L4T系统中硬编码为192.168.55.1,可以看成是其对应的固定IP。
这里是ping成功的图片。
以上显示问题是微软在 2024 年及以后的 Windows 更新中故意移除了"通用 RNDIS 驱动选项"导致的,实测会偶尔导致连接不通,按照上述办法解决后就能够ping通,但是依旧显示CDC ECM。正常情况下设备管理器-网络适配器-会出现:Linux for Tegra USB Ethernet(不是远程 NDIS)。
补充一个未经验证的方法,详情参考下图。
安装putty以及使用
| Install PuTTY files | 安装 PuTTY 核心程序文件 | ✅ 必须勾选 | 不选这个就无法安装 PuTTY 本身 |
| Add shortcut to PuTTY on the Desktop | 在桌面创建 PuTTY 快捷方式 | ✅ 推荐勾选 | 频繁使用 PuTTY 连接 Jetson Nano下,桌面快捷方式最方便 |
| Put install directory on the PATH for command prompts | 将 PuTTY 安装目录添加到系统环境变量 | ✅ 强烈推荐勾选 | 以后可以直接在 CMD/PowerShell 中输入putty或scp命令快速启动,不用每次都找安装目录 |
| Associate .PPK files with PuTTYgen and Pageant | 将.ppk 私钥文件关联到 PuTTY 工具 | ✅ 推荐勾选 | 如果你以后使用 SSH 密钥登录(比密码更安全),这个关联会非常方便 |
按照需求勾选,这里作者都勾选,毕竟和后面的VNC一样会经常用到。
- 在<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Host Name</font>处输入:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">192.168.55.1</font>
- 端口保持默认:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">22</font>
- 点击<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Open</font>
- 首次连接弹出安全警告时点击接受
- 输入用户名:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">z</font>,密码:<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">123456</font>即可登录。(按照实际修改)
首次连接新的设备会弹出以下warning,选择accept
accept后接着弹出
login as:
输入用户名,会弹出
z@192.168.55.1's password:
成功登录后显示
z@tegra-ubuntu:~$
这样就成功远程控制Jetson Nano了。
作者接下来继续完成离线下RTL8822网卡驱动安装。 在win10下使用micro-usb线连接以后,只能用ssh远程控制,这个时候因为没有网络,所以无法安装驱动,又因为没有驱动所以识别不了网卡,这下一根筋变成两头堵。这里强烈建议使用ubuntu虚拟机连接,因为虚拟机有设置桥接网络分享,这样Nano连接以后也能够共享主机连接的网络,自动完成更新配置以及更换系统源等。
远程SSH连接WIFI(网卡驱动已安装)
网卡驱动安装后,Putty下连接WIFI
# 查看无线网卡是否出现(应该能看到wlan0)
ip a
# 扫描附近WiFi
sudo nmcli dev wifi list
# 连接你的WiFi(替换成你的WiFi名称和密码)
sudo nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码"
# 这里的WIFI名称和密码不能有中文字符和特殊字符最好是纯英文否则会报错
# 查看WiFi IP地址(记下来,以后用这个IP远程)
ip a show wlan0
# 测试网络是否通
ping www.baidu.com -c 4
ping www.bilibili.com -c 4
一键换源安装ROS
连接上WIFI后,强烈建议先自动完成更新配置以及更换系统源,这里推荐使用鱼香ROS的一键安装。
一键安装地址
# 注意这不是代码指令别cv
https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97
# github地址
https://github.com/fishros/install
一键安装代码
# 复制粘贴这个
wget http://fishros.com/install -O fishros && . fishros
后续有需要再安装VNC,agent的建议是" Jetson Nano 默认没有图形界面远程功能,我们安装轻量的 TightVNC 服务器"。貌似是主机和Nano都要安装才能使用。如果不想用VNC还有另外一款软件NoMachine,作者就是用的这个。
Nano联网
目前使用无头模式,在windows10上用Putty远程连接固定ip192.168.55.1,现已进入终端,正打算安装无线网卡Rtl8822的驱动。Nano的内核版本为4.9.140,运行ifconfig得到l4tbr0、rndis0和usb0接口,没有wlan0接口。
Jetson Nano未检测到无线网卡(wlan0),说明驱动程序未正确安装或者加载。agent分析"RTL8822系列(如8822CE, 8822BU)的驱动在 Jetson Nano 上比较敏感,内核版本<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">4.9.140</font>可能有影响"。此时如果没有安装网卡驱动,可以通过主机安装对应驱动并传输到Nano中,不过要先找对应的驱动接着还要跨机传输还要解压还要安装,这个过程还没有图形化界面,太多不确定因素,实在没有办法不建议这么做。
安装无线网卡Rtl8822的驱动的方法太复杂,不如直接让Jetson Nano有网络来的快,方法就是
:::info 让Jetson Nano通过PC共享网络
:::
SSH下Nano与宿主机文件传输
补充:在SSH远程连接中,如何实现win10主机和Nano的文件传输呢?
有五种方式,第一种是下载WinSCP图形化软件,第二种是使用win10自带的shell进行传输,第三种是使用U盘,第四种是在 Windows 上搭建 HTTP 文件服务器,第五种是使用WIndows共享文件夹。
这里介绍如何使用win10自带的shell
scp 本地文件完整路径 用户名@192.168.55.1:Jetson上的目标路径
# 例如把桌面的文件传到 Nano的 /home/ 目录下
scp C:\\Users\\你的Windows用户名\\Desktop\\public_sources.tbz2 nvidia@192.168.55.1:/home/
# 传输文件夹使用 scp -r
scp -r C:\\Users\\你的Windows用户名\\Desktop\\public_sources.tbz2 nvidia@192.168.55.1:/home/
补充:如何使用WIndows共享文件夹,详细内容看下图。

# 安装 cifs-utils
sudo apt update
sudo apt install cifs-utils
# 创建本地挂载点
sudo mkdir /mnt/winshare
# 挂载 Windows 共享文件夹
sudo mount -t cifs //[你的Windows IP地址]/[共享名] /mnt/winshare -o username=[你的Windows用户名],password=[你的Windows密码]
windows共享网络
如何让让Jetson Nano通过PC共享网络呢?
网络共享(Windows Internet Sharing)、使用以太网 (Ethernet Cable)两种方法。使用以太网就是用RJ45网口,当然这个已经坏了,所以只能用网络共享。
在win10下win+R,运行框中输入ncpa.cpl,打开网络连接窗口。找到 Windows10 主机当前正在上网的连接。可能是叫“WLAN”(无线网络)或“以太网”(有线网络),找到描述里带有 “Remote NDIS based Internet Sharing Device” 字样的连接。这就是 Jetson Nano 通过 USB 线虚拟出来的网络接口。
接着开启网络共享。右键正在上网的适配器-属性-共享-勾选"允许其他网络用户通过此计算机的 Internet 连接来连接"-下方"家庭网络连接"选择Nano对应的适配器-确定/保存。
接着在Nano中检查是否共享成功。
# 查看网络接口 usb0 是否已经自动获取到了以 192.168.137.x 开头的 IP 地址
ifconfig
# 测试与 Windows 主机的连接
ping -c 4 192.168.137.1
# 测试外网连接
ping -c 4 8.8.8.8
# 测试 DNS 解析(能连接百度就说明能上网)
ping -c 4 www.baidu.com
RJ45网口排查
补充:从软件层面验证RJ45网口是否损坏?
# 看看显示的接口列表中是否有 eth0 或类似的名称
ip link show
ifconfig -a
# 检查硬件状态
sudo ethtool eth0
# 查看内核日志
dmesg | grep -i eth0
如果看到eth0, 说明系统识别到了硬件。可以继续下面的诊断。如果没看到,那大抵是坏了。
分析网口上的LED指示灯。ACT/LNK绿灯,常亮或规律闪烁通常表示已连接且有数据传输,如果完全不亮,很可能是物理连接不通;Link 100 LED黄灯,当网口成功协商到 100Mbps 或更高的速率时通常会亮起,用于辅助判断协商状态是否正常。
到这里大部分关于远程SSH连接以及无线网卡的内容就结束了。以下是重新刷写TF卡以及安装SDK Manager的过程记录。
配置TF卡or安装SDK Manager
注意官方教程提供的是"快速启动"方案,使用 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">balenaEtcher</font> 和 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SD Card Formatter</font> 烧录镜像,半小时内就能即开即用。而提及的SDK Manager就是高级工具配置,包含BSP板级支持包、特殊硬件故障支持、深度SDK集成(配置开发环境如CUDA、CUDNN、TensorRT、OpenCV)
注意直接用SDK Manager覆盖烧录,即使不格式化SD/TF卡,也会导致原有系统的数据完全丢失。根据NVIDIA官方论坛的说明,这个操作会“完全重置整个系统,包括引导和操作系统本身的一切”,所有数据是无法保留的。原来的Ubuntu 18.04系统会被完全覆盖,恢复成出厂状态。
以下是"快速启动"方案
jetson nano的官方配置教程
以下是"强制恢复模式"方案
1.创建一个全新的Ubuntu 18.04虚拟机
- 下载镜像:从Ubuntu官网下载Ubuntu 18.04.6 LTS的ISO镜像。
- 新建虚拟机:在VMware中新建虚拟机,选择下载的Ubuntu 18.04镜像。内存和硬盘空间方面,建议为虚拟机分配至少100GB硬盘空间和4GB-8GB内存,为接下来的下载和编译预留足够空间。
- 启动并安装:启动虚拟机完成安装,期间创建一个管理用户(例如用户名为 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">ubuntu</font>,密码自定义123456)。
2. 将Nano置于“恢复模式”
无论是否更换虚拟机,这是烧录必须执行的一步。请先完全断开Jetson Nano的电源,然后找到开发板上的 FC REC 和 GND 引脚,用跳线帽或杜邦线进行短接。之后连接好USB线和DC电源,为Nano通电。
3. 确保虚拟机识别Nano
- 安装VMware Tools:建议在你使用的Ubuntu虚拟机中安装增强工具(VMware Tools),这有助于提高USB设备的稳定性。
- 连接USB设备:Nano通电并进入恢复模式后,VMware会弹出提示,询问将新连接的USB设备连接到宿主机还是虚拟机。必须选择“连接到虚拟机”,这是烧录成功的关键。
4. 在SDK Manager中完成烧录
- 安装并启动:在Ubuntu虚拟机中,通过命令行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">dpkg -i</font>安装你下载的<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font>包,安装完毕后从终端执行 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font> 启动。
- 登录账号:运行 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font> 命令后,会打开图形界面。使用你的NVIDIA账号密码登录。
- 选择组件并确认烧录:在软件界面中,仅勾选**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson OS</font>**组件,取消<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson SDK Components</font>以节省时间。根据你的Nano型号(如Jetson Nano Developer Kit)完成后续配置,并确保选择的目标设备是**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SD card</font>**。
- 等待完成:点击开始后,SDK Manager会自动下载所需文件,并将系统镜像写入SD卡。整个过程可能持续20-40分钟。
(问题概括的下半段)官方烧录教程操作完成,但是将SD卡插回去以后,连接DP线输出显示信号,图形化界面突然弹出报错,貌似是说图形化error,一回车按ok就熄屏,现在重新断电上电后,绿色电源灯正常但是DP线没有信号输出,显示器一直保持黑屏。用MicroUSB连接电脑,CDC NCM又出来了,检查网络连接,Remote NDIS也有了,想用putty来连接,但是NDIS的ip地址192.168.55.100也无法连接。打字这会功夫它就自己断电了。(鉴于这个问题,怀疑是Bootloader****出问题,而Bootloader存储在QSPI闪存芯片上,只好用SDK Manager深度刷写)
以下是<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">SDK Manager</font> 刷写QSPI闪存方案
第一步:准备工作(最重要,请仔细检查)
- 确认供电充足:这是此类问题的常见根源。请务必使用5V⎓4A的DC电源(圆口插头),并确保Micro USB线连接可靠。
- 准备Ubuntu系统:SDK Manager在Windows的虚拟机上运行可能不稳,问题会更多。推荐的方案有两种:
- (最简单) 在另一台空闲电脑上安装原生Ubuntu 18.04系统。实测虚拟机也可以。
- (备选) 制作一个Ubuntu 18.04的启动U盘,用它启动你的Windows电脑进行操作。
第二步:将Nano置于恢复模式 (Recovery Mode)
第三步:使用SDK Manager进行深度刷写
sudo apt update
sudo apt install -y ./sdkmanager_*.deb
# 如果提示依赖缺失,可以尝试运行以下命令修复
sudo apt –fix-broken install
安装并运行SDK Manager过程记录
sudo apt install -y ./sdkmanager_*.deb
# 返回内容
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting 'sdkmanager' instead of './sdkmanager_2.4.0-13236_amd64.deb'
The following NEW packages will be installed:
sdkmanager
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/89.1 MB of archives.
After this operation, 400 MB of additional disk space will be used.
Get:1 /home/u18/Downloads/sdkmanager_2.4.0-13236_amd64.deb sdkmanager amd64 2.4.0-13236 [89.1 MB]
Selecting previously unselected package sdkmanager.
(Reading database … 150527 files and directories currently installed.)
Preparing to unpack …/sdkmanager_2.4.0-13236_amd64.deb …
Unpacking sdkmanager (2.4.0-13236) …
Setting up sdkmanager (2.4.0-13236) …
Processing triggers for hicolor-icon-theme (0.17-2) …
Processing triggers for mime-support (3.60ubuntu1) …
Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.2) …
Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) …
N: Download is performed unsandboxed as root as file '/home/u18/Downloads/sdkmanager_2.4.0-13236_amd64.deb' couldn't be accessed by user '_apt'. – pkgAcquire::Run (13: Permission denied)
这个警告的本质是,使用<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo apt install</font>安装本地<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font>文件时,<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">apt</font>自身的一个安全机制与操作方式起了冲突。因为权限问题,安装过程脱离了一个叫<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">_apt</font>的用户沙盒,转而以<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">root</font>身份完成。软件本身已经安装成功了,运行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>就能够正常启动,只是安装过程中涉及权限问题发生警告。
# 确定 SDK Manager 安装目录
which sdkmanager
# 进入SDK Manager 安装目录,按需修改
cd ~/nvidia/nvidia_sdk
# 或者 SDK Manager 默认的安装路径可能是 /usr/bin/sdkmanager,但配置文件会生成在 ~/.nvsdkm/
sdkmanager
返回
warning:The system does not meet the minimum requirements.
Screen resolution equal or larger than 1440×900 (1052×411) is recommended when running SDK Manager with GUI.
Please use SDK Manager command-line interface (CLI) for better experience on this system.
Get started with sdkmanager –help.
Memory space equal or larger than 8GB is recommended.
Please reduce concurrent file download in SDK Manager Settings, for a better experience.
提醒图形界面体验可能不佳,并建议使用命令行界面。常见于虚拟机或小屏幕设备上运行 SDK Manager 时。
sdkmanager –query
返回
++++++++++++++++++++++++++++++++++++++++++++++++++
+ Welcome to NVIDIA SDK MANAGER v2.4.0.13236 +
++++++++++++++++++++++++++++++++++++++++++++++++++
┏ Login —————————————- ┓
– Select login type: (Use arrow keys)
❯ NVIDIA Developer
NVOnline
Install From Local Folder
这里提示要三选一,分别是NVIDIA Developer、NVOnline、Install From Local Folder
作者选择第一个登录Developer开发者账户,登陆成功返回
Query completed.
登录后,即将开始烧录。在开始烧录前,运行
lsusb | grep 0955:7f21
检查输出是否正常。如果返回 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">NVIDIA Corp</font> 等,说明Nano成功进入恢复模式,可以开始烧录了。
以下是使用CLI命令行模式进行烧录,user以及password根据实际修改。
sdkmanager –cli install \\
–logintype devzone \\
–user YOUR_EMAIL@example.com \\
–password YOUR_PASSWORD \\
–product Jetson \\
–targetos Linux \\
–version 4.6.6 \\
–target JETSON_NANO_TARGETS \\
–select 'Jetson OS' \\
–flash all \\
–license accept
返回
Target: JETSON_NANO_TARGETS
Step: 1/4: Downloading files…
Step: 2/4: Flashing OS…
…
Flash completed successfully.
如果报错,那就执行sdkmanager直接进入图形化(GUI)的SDK Manager进行烧录。
sdkmanager
| Pre-Config(预配置) | 在刷机前就在 Ubuntu 主机上提前设置好用户名、密码、时区、网络等所有参数,刷完机后 Jetson 会自动完成所有初始化,直接跳过开机向导,开机就能用 SSH 连接 | 唯一可用的选项 |
| Runtime(运行时配置) | 刷完机后什么都不设置,强制要求你连接显示器、键盘和鼠标,手动完成开机向导,不完成向导系统不会启动 SSH 服务,根本无法连接 | 完全不可用,选了就白刷 |
SDK Manager is about to flash your …
choose a connected board below,
options: 003/006 | 3-2 | 2.00 | Recovery | 0955:7f21,OEM Configuration :
Pre-Config
Runtime
# 二选一,有Pre-Config 和 Runtime
# Pre-Config(预配置)模式提前设置好用户名称建议选这个
# Runtime 运行时配置
Run command:
sdkmanager –cli –action install –login-type devzone –product Jetson –target-os Linux –version 4.6.6 –target JETSON_NANO_TARGETS –select 'Jetson OS' –flash –license accept –user 2564310566@qq.com –password Hamker123456//
Session initialized…
===== INSTALLATION COMPLETED SUCCESSFULLY. =====
– Drivers for Jetson: Installed
– File System and OS: Installed
– Flash Jetson Nano: Skipped
– DateTime Target Setup: Skipped
– CUDA Toolkit for L4T: Skipped
– cuDNN on Target: Skipped
– TensorRT on Target: Skipped
– OpenCV on Target: Skipped
– VisionWorks on Target: Skipped
– VPI on Target: Skipped
– NVIDIA Container Runtime with Docker integration (Beta): Skipped
– Multimedia API: Skipped
– Nsight Systems: Skipped
===== Installation completed successfully – Total 13 components =====
===== 2 succeeded, 0 failed, 0 up-to-date, 11 skipped =====
# 运行完成的返回
# 这里只进行Jetson OS的刷写以及QSPI闪存刷写其他组件单独安装
刷写Jetson OS过程
从终端日志可以看到:
- 已经成功识别到你的 Jetson Nano 4GB(硬件 ID <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">0955:7f21</font>)
- 已经完成了 GPT 分区表的写入(<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Writing partition GPT with gpt.bin 100%</font>)
- 现在正在刷写QSPI Bootloader(引导程序)
正在下载 SDK 组件(CUDA、OpenCV 等),返回install pending则说明下载完成,这些SDK Manager的压缩包已经下载到宿主机,后续可以单独进行离线安装。
SDK Manager 的完整工作流程(分两个大阶段)
第一阶段(你现在正在进行的,进度 42%)
- 已经下载完所有文件
- 正在刷写基础系统镜像到 SD 卡
- 同时刷写 QSPI Flash 里的 Bootloader(引导程序)
- 这个阶段完成后,Jetson Nano 会自动重启
第二阶段(系统重启后自动开始)
- SDK Manager 会通过 SSH 自动连接到 Jetson Nano(用你刚才设置的用户名和密码)
- 然后依次安装所有显示 “Install Pending” 的组件:
- CUDA 10.2(Jetson Nano 的 GPU 加速核心)
- OpenCV 4.1.1(计算机视觉库)
- TensorRT(深度学习推理加速库)
- cuDNN(深度学习 GPU 加速库)
- 多媒体和开发工具
因为选择了pre-config预配置,所以第二阶段完全自动,无需干预。完成安装后,Nano会自动退出恢复模式,进入正常模式
Nano进入正常模式,虚拟机ubuntu18.04询问要连接NVIDIA Linux for Tegra到哪一台设备。
这里图片左下角询问是否继续安装SDK Manager组件,为了验证系统是否稳定,选择skip跳过。

<font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Flash Jetson OS</font> 显示 <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">Success</font>,说明最关键的系统和 QSPI 引导程序已经刷写完成 ,同时跳过安装SDK Manager组件,组件相关内容都是skipped。
到这里, 关闭 SDK Manager 窗口, 拔掉 Jetson Nano 的 DC 电源,等待 10 秒,重新插上来重启。
重启后,用 Micro-USB 线连接 Jetson Nano 和Windows10系统 ,
打开 PuTTY,连接 <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">192.168.55.1</font>,输入用户名和密码进行远程SSH连接。
到此为止,Jetson OS的刷写以及QSPI闪存刷写完成,此时Nano应该退出恢复状态,进入正常的使用状态
lsusb
Bus 003 Device 010: ID 0955:7020 NVidia Corp.
# 返回以上内容就是成功刷写后退出恢复模式这时候可以正常用Nano
lsusb | grep 0955:7f21
# 出现以上字样表示Nano还处于强制恢复模式
7020 :usb-device mode
7021 :Recovery Mode
SDK Manager组件配置
系统成功启动后,可以通过SSH或直接在Nano上打开终端,使用以下命令来安装CUDA等工具包,以完成SDK Manager的剩余工作(按需选择,非强制)
sudo apt update
sudo apt install nvidia-jetpack
由于在前面选择登录developer开发者账号并且在线下载,故虚拟机ubuntu18.04中有/home/Downloads/sdkmanager_2.4.0-13236_amd64.deb以及/home/Downloads/sdkm_downloads。文件夹sdkm_downloads中含有OpenCV-4.1.1-2-gd5a58aa75-aarch64-licenses.deb等sdkmanager组件,故这里进行离线安装。
操作流程:
第一步:在虚拟机中安装 SDK Manager 工具
打开 Ubuntu18.04 虚拟机的终端,进入文件存放的目录(例如 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">cd ~/Downloads</font>),然后使用 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo apt install</font> 命令安装 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.deb</font> 包
sudo apt install ./sdkmanager_2.4.0-13236_amd64.deb
第二步:离线登录并导入已下载的组件
在终端输入 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>启动图形界面。在欢迎界面选择 “Offline”(离线)选项卡,然后点击 “Browse” 或 “选择文件夹”,导航到你存放 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkm_downloads</font> 的路径并选中它,点击 “Start” 。
# sudo 提权避免权限问题
sudo sdkmanager
第三步:选择和安装组件
导入成功后,SDK Manager 会自动识别其中的组件。在 Target Hardware 步骤,确认并选择你的 Jetson Nano 设备型号。进入组件选择界面(Target Components)时,务必取消勾选 “Jetson OS”,只选择 “Jetson SDK Components”。
第四步:验证安装
安装完成后,用一条命令验证核心组件 CUDA 是否安装成功:
/usr/local/cuda/bin/nvcc –version
# 如果显示了 CUDA 的版本信息,
# 比如 Cuda compilation tools, release 10.2,就说明 SDK Manager 组件已经安装成功了。
运行sudo sdkmanager,弹出NVIDIA SDK MANGAGER图形化界面,有NVIDIA DEVELOPER、NVONLINE、INSTALL ONLY三个选择。选择INSTALL ONLY并指定路径install from:为/home/u18/Downloads/nvidia/sdkm_downloads
sudo sdkmanager
NVIDIA DEVELOPER –> 在线登录developer开发者账户
NVONLINE –> 在线下载
INSTALL ONLY –> 自行选择路径并安装(离线安装)
下图是提示升级sdkmanager,单纯给nano安装sdk组件,没有必要升级,选择later跳过。
忽略后弹出PRODUCT CATEGORY、SYSTEM CONFIGURATION、SDK MANAGER三个选项,第一个识别到Nano,第二个识别到Host Machine以及Jetson Nano[developer kit version],但是第三个选项反馈"No available releases to execute as super user",下方选项Product version-JetPack 4.6.6 是灰色的,有一行小字[Cannot execute as super user],如下图所示。
这是因为<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sudo sdkmanager</font>命令以管理员身份root启动GUI界面,而SDK Manaager不希望用户在具有完整系统权限的状态下安装SDK组件,担心造成系统混乱。
只要退出SDK Manager,以<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">sdkmanager</font>命令打开即可。
sdkmanager
运行sdkmanager后成功在STEP1的SDK Manager识别到本地的JetPack4.6.6,甚至还询问我要不要升级为5.1.6,为了不节外生枝选择later。STEP1中还有additional SDKS是DeepStream6.0.1,这个额外的SDK默认没有勾选。


进入STEP2,提示JETPACK 4.6.6 LINUX FOR JETSON NANO [DEVELOPER KIT VERSION],包括HOST COMPONENTS以及TARGET COMPONENTS两大类。HOST COMPONENTS有CUDA、COMPUTER Vision、Developer Tools三个子选项,TARGET COMPONENTS有Jetson OS、Jetson SDK Components两个子选项。其中Jetson SDK Components又包含CUDA、CUDA-X AI、CV、NVIDIA Container Runtime、Multimedia、Developer Tools等子选项。
绝对绝对不要勾选**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson OS</font>**,一旦勾选并执行,SD/TF 卡系统会被覆盖,之前所有配置和 WiFi 设置都会丢失。
重点关注**<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Jetson SDK Components</font>**{Jetson SDK 组件)。这个大类下包含了 CUDA、cuDNN、TensorRT、OpenCV 等核心库。勾选所有子项,等待安装即可。
提示输入Nano的账户名以及密码,用于SSH远程安装。
SDK Manager is about to install SDK components on your Jetson Nano module To install SDK components on your Jetson Nano module:
1Complete the Ubuntu ‘System configuration wizard’ on your Jetson Nano modules, if you have chosen to configure it manually before flashing.
2Wait for the OS login screen.
3If proxy is used on host, also configure apt proxy on your Jetson Nano modules.
4Enter the username and password of your Jetson Nano modules.
SDK Manager is verifying Jetson Nano modules system readiness to install.
Disk space.
Internet connection.
APT repository access for Debian package installation(target).
Device image version matching requirement
This may take a minute to complete…
以下是下载安装过程。
INSTALLATION COMPLETED SUCCESSFULLY!
安装全部成功!


安装后验证
SDK Manager组件安装完成后进行验证是否正常:
# 验证 CUDA
# 或者 /usr/local/cuda/bin/nvcc –version
nvcc –version
# 验证 cuDNN(如果已安装)
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 验证 TensorRT(如果已安装)
dpkg -l | grep tensorrt
# 验证 OpenCV(如果已安装)
python3 -c "import cv2; print(cv2.__version__)"
作者运行<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">nvcc –version</font> 验证CUDNN返回报错
cat: /usr/local/cuda/include/cudnn.h: No such file or directory
# 结果说明CUDA Toolkit 已经安装,但其 bin 目录没有被添加到 PATH 环境变量中
ls -la /usr/local/cuda*
# 返回 /usr/local/cuda
# 永久添加 PATH将环境变量写入 ~/.bashrc 文件
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 接着检查cuDNN 头文件
ls -a /usr/local/cuda/include
# 没有返回结果
sudo apt install libcudnn8-dev -y
# 返回libcudnn8-dev is already the newest version (8.2.1.32-1+cuda10.2)
cd /usr/local/cuda/bin/nvcc
# 返回 不存在该路径
sudo apt install cuda-toolkit-10-2 -y
# 返回 cuda-toolkit-10-2 is already the newest version (10.2.460-1).
这里的问题是环境变量以及cuDNN 头文件位置和格式发生变化,头文件可能被拆分到了多个包中。
以下代码不需要全部执行,因为agent这里解释说:
关于 /usr/local/cuda/include/cudnn.h 的问题
由于你的系统已经正确安装了 cuDNN 头文件在 /usr/include/aarch64-linux-gnu/ 下
并且 nvcc 默认会搜索系统头文件路径
所以实际上你并不需要手动复制或链接 cudnn.h 到 /usr/local/cuda/include/
之前的验证命令没有输出,只是因为那个文件不是你预期的版本宏定义文件,但不会影响实际使用。
# 搜索nvcc编译器,
sudo find / -name nvcc 2>/dev/null
# 得到返回/usr/local/cuda-10.2/bin/nvcc
#进行第三步配置环境变量并且验证,再次运行
nvcc –version
# 得到返回nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2021 NVIDIA Corporation
# Built on Sun_Feb_28_22:34:44_PST_2021
# Cuda compilation tools, release 10.2, V10.2.300
# Build cuda_10.2_r440.TC440_70.29663091_0
# 接着继续定位cudnn,运行
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 得到返回cat: /usr/local/cuda/include/cudnn.h: No such file or directory
# 现在 CUDA 编译器已经正常工作,但 cuDNN 头文件缺失。
# 查找 cudnn.h 的实际位置:
sudo find /usr -name cudnn.h 2>/dev/null
# 得到返回位置/usr/include/cudnn.h
#软链接cudnn头文件到CUDA目录
sudo cp /usr/include/cudnn.h /usr/local/cuda/include/
# 确保库文件也被正确链接(cuDNN 运行时需要 libcudnn.so),同时执行。
# 如果空间不足(需要约5.3G)建议别复制
sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/cuda/lib64/
#运行ls -l /etc/alternatives/libcudnn
file /etc/alternatives/libcudnn分别得到
# lrwxrwxrwx 1 root root 41 Jun 2 08:36 /etc/alternatives/libcudnn -> /usr/include/aarch64-linux-gnu/cudnn_v8.h
# /etc/alternatives/libcudnn: symbolic link to /usr/include/aarch64-linux-gnu/cudnn_v8.h
# 这个才是真正的cudnn头文件。
# 复制真实头文件到 CUDA include 目录,并命名为 cudnn.h
sudo cp /usr/include/aarch64-linux-gnu/cudnn_v8.h /usr/local/cuda/include/cudnn.h
# 验证
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
作者运行<font style="color:rgb(15, 17, 21);background-color:rgb(237, 243, 254);">dpkg -l | grep tensorrt</font> 验证TensorRT返回,说明安装成功
ii nvidia-container-csv-tensorrt 8.2 arm64 Jetpack TensorRT CSV file
ii tensorrt 8.2.1.9-1+cuda10.2 arm64 Meta package of TensorRT
如果担心Nano空间不够,可以运行df查看当前磁盘使用情况
df -h
# 没有安装SDK Manager组件前
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 30G 4.9G 23G 18% /
none 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 22M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/120
tmpfs 397M 0 397M 0% /run/user/1000
# 安装SDK Manager组件 以及 ROS Melodic桌面完整版后
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 30G 14G 15G 49% /
none 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 30M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/120
tmpfs 397M 0 397M 0% /run/user/1000
后续空间使用建议
剩余 15GB 的空间对于以下用途通常是足够的:
- 编写和编译中等规模的 ROS 程序包
- 运行常见的深度神经网络推理(如图像分类、目标检测)
- 存储一些小规模的数据集
如果你将来需要:
- 存放大型数据集(如 COCO、ImageNet),建议外接 USB 硬盘/U 盘,或者使用 NFS 挂载网络存储。
- 编译大型软件包(如从源码编译 OpenCV 或 Pytorch),请留意临时文件(<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/tmp</font> 或 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">~/src</font>)可能会占用额外空间,建议在编译前检查剩余空间。
运行鱼香ROS进行更换系统源、ROS源后,进行ROS-MELODIC-DESKTOP-FULL完整版安装,大约2G。
# 1. 鱼香ROS一键换源
wget http://fishros.com/install -O fishros && . fishros
# 2. 安装桌面完整版(包含 rviz、gazebo 等)
sudo apt update
sudo apt install ros-melodic-desktop-full -y
# 3. 初始化 rosdep(国内用rosdepc替代)
sudo rosdep init
rosdep update
# 4. 设置环境变量(自动生效)
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 5. 安装其他常用工具
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential -y
总结
重新刷写OS和QSPI的Nano,正常使用下会利用宿主机的网络自动更新系统源、安装无线网卡驱动程序,这里是用虚拟机ubuntu18.04进行SSH控制(其余控制方法下文补充),可以看到RTL8822无线网卡驱动程序已经安装并且识别到了。
sudo lspci -v
# 以下是返回内容
00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0, IRQ 84
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00001000-00001fff
Memory behind bridge: 13000000-130fffff
Capabilities: [40] Subsystem: NVIDIA Corporation Device 0000
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed-
Capabilities: [80] Express Root Port (Slot+), MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: pcieport
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device c822
Subsystem: Hewlett-Packard Company Device 85f7
Flags: bus master, fast devsel, latency 0, IRQ 407
I/O ports at 1000 [size=256]
Memory at 13000000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Device Serial Number 00-e0-4c-ff-fe-c8-22-01
Capabilities: [158] Latency Tolerance Reporting
Capabilities: [160] L1 PM Substates
Kernel driver in use: rtl88x2ce
Kernel modules: rtl8822ce
# Network controller: Realtek Semiconductor Co., Ltd. Device c822 是芯片型号
# Kernel driver in use: rtl88x2ce 网卡成功加载驱动
接着进行WIFI连接,使用nmcli命令
# 1. 扫描周围的 WiFi 网络
sudo iw dev wlan0 scan | grep SSID
# 2. 连接到 WiFi
nmcli dev wifi connect "你的WiFi名称" password "你的WiFi密码"
# 例如nmcli dev wifi connect "A" password "12345678"
# 3. 如果 nmcli 不可用,可以用传统方法:
# 生成配置并连接
wpa_passphrase "你的WiFi名称" "你的WiFi密码" | sudo tee /etc/wpa_supplicant.conf
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo dhclient wlan0
nmtui
如果不熟悉CLI命令行界面,也可以用nmtui这个图形化文本界面
sudo nmtui
# 避免权限问题影响网络连接
# nmtui 的 Activate a connection 列表中会出现一个
以你的 Wi-Fi 名称(A)或你自定义的 Profile 名称命名的条目,且其前面带 * 号
出现 * 号表示WIFI连接成功
# 如果还是有问题建议重启虚拟机
有关nmtui的使用方式省略,有空后面再补充
网络连接完成后,在 Jetson Nano 的终端中运行以下命令,确认连接详情(使用无线网络对应wlan0)
# 查看当前活动的网络连接
nmcli connection show –active
# 查看 wlan0 接口的 IP 地址
ip addr show wlan0
# 测试网络连通性(例如 ping 百度),ping通则说明网络通畅
ping -c 4 baidu.com
补充:只要RTL8822无线网卡驱动程序已经安装并且识别到,那么后续的网络识别、网络连接等报错,要么是权限不足,要么是需要reboot重启进行系统文件更新,无需再担心。
reboot
虚拟机注意事项
Jetson Nano正常使用下,或多或少涉及以下两种使用方式。
使用虚拟机ubuntu18.04进行控制
- 在你虚拟机的菜单栏中,找到“可移动设备” -> “USB 控制器”下的设备列表。
- 确保 **<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">Nvidia Corp</font>** 或类似的设备已被勾选。这表示设备已成功连接到了虚拟机,而不是 Windows 宿主机。
- 检查虚拟机的网络适配器设置。最简单可靠的方式是将它设置为“NAT 模式”。这能让虚拟机共享主机的网络,同时不影响与 Nano 的 USB 连接。
ssh安装(如果没安装,运行以下命令安装)
sudo apt install openssh-client -y
1. 直接使用SSH连接。Nano<font style="color:rgb(15, 17, 21);">的 USB 网络接口和 SSH 服务在Pre-Config中就绪</font>
ssh nvidia@192.168.55.1
# ssh 用户名@<你的Nano_IP地址>
输入账户名和密码后,ping主机检查是否成功。
ping 192.168.55.1
2. <font style="color:rgb(15, 17, 21);">使用串口Serial进行登录</font>
查找串口号。
ls /dev/ttyUSB*
# 正常会返回 ttyUSB0
使用screen命令进行连接。
# ttyUSB0 替换成实际名字
screen /dev/ttyUSB0 115200
# 进入后运行
whoami
ip a
sudo systemctl status ssh
# 分别检查用户名称 IP地址 SSH服务是否启用正常返回
nvidia
192.168.55.1
active (running)
3. 使用Nomachine图形化连接
作者使用Nomachine,该软件需要在Nano和宿主机安装对应版本
使用windows控制Nano
补充:nano正常关机指令
sudo shutdown -h now
sudo poweroff
sudo halt
补充:Nano进入强制恢复模式





