前阵子帮人救一台 Jetson Nano,对方一上来就说“开机黑屏,HDMI完全没信号,是不是废了”。结果是台放在角落里吃灰的板子,最后二十分钟就救回来了——连烧录都没做,问题出在供电跳帽上。这几年做边缘设备调试,我接到的求助里出现频率最高的就是 Jetson Nano 开机黑屏:绿灯亮,风扇偶尔转两下,屏幕永远无信号。这类问题看着吓人,但九成不是真正的“变砖”。
这篇就把“开机黑屏”这件事从现象到底层原因完整拆开,按照供电、HDMI、系统、恢复模式四个层次一步步走,把每一步怎么判断、怎么修、怎么预防写透。无论你是第一次接触 Nano 的新手,还是已经拿它跑过 YOLOv5 部署的老手,都能在里面找到对应的排查路径。
1. 先别急着刷机:把“黑屏”拆成四类再动手
很多人碰到黑屏的第一个反应就是“重烧系统”。说实话,这个操作又慢又不解决硬件层面的问题,而且最容易把原本还能救的板子搞得更糟。我在动手前通常会先把黑屏现象分成四类,对着症状再决定下一步做什么。
| 表现 | 电源指示灯 | 系统是否可能还活着 | 高概率原因 |
|---|---|---|---|
| 上电完全没反应,指示灯不亮 | 灭 | 否 | 适配器、DC线、供电跳帽 |
| 指示灯亮,HDMI一直显示无信号 | 亮 | 不一定 | 供电不足、HDMI握手失败、SD卡损坏 |
| 开机有信号,但画面全黑或卡在Logo | 亮 | 是 | 系统文件损坏、分辨率/内核参数不对 |
| 跑着跑着突然黑屏且无法唤醒 | 亮 | 否 | 供电瞬时跌落、过热、GPU挂死 |
1.1 四类黑屏的表现差异
第一类最好判断,电源指示灯完全不亮,问题几乎全在供电链路,和系统无关。第二类最迷惑人,灯亮着、风扇有时还转,但显示器一直“无信号”,这类要怀疑供电、HDMI和SD卡三个方向。第三类反而最“温柔”,说明系统多半已经跑起来了,只是显示输出层面出了问题。第四类是最让人崩溃的,你正在跑推理任务,屏幕突然一黑,按键盘鼠标都没反应,甚至过几秒主板直接重启。
这里有个经验:看到灯亮、风扇转,先别急着判断“系统活着”。Jetson Nano 的风扇是靠系统 PWM 控制转停的,有些镜像默认负载低时风扇不转,所以你完全不能用风扇状态判断系统死活。判断系统是否活着,最可靠的是看串口日志或者网络指示灯在插网线时有没有规律闪烁。
1.2 排查顺序为什么是“供电优先于一切”
安排排查顺序不是随便排的,背后是概率排序。Jetson Nano 是典型的多外设、大电流、低电压设备,一个 5V/4A 的官方电源在实际使用中,只要线材稍差、接触不良或跳帽位置不对,就可能出现各种诡异现象。而 SD 卡是第二常见原因,很多第三方的“高速卡”其实是扩容卡或随机写入性能极差。HDMI 反而更多是显示器和显示参数的问题。所以我推荐顺序永远是:先查电,再换卡,最后才刷机。多数“黑屏”修到最后会发现,系统压根没坏。
2. 供电排查:Nano 的“假死”多半是饿出来的
2.1 官方供电要求与 J48 跳帽
Jetson Nano Developer Kit B01 的板子上有两个供电入口:5V/4A 的 DC 圆头和 micro-USB 口。很多教程说 micro-USB 也能供电,实际用下来这句话有前提——如果不接任何外设、只跑轻量命令行,那 5V/2A 勉强够;但只要插了 USB 摄像头、网卡,或者开始跑 YOLOv5 这种 GPU 负载,micro-USB 的供电能力在瞬态大电流下立刻被打穿,轻则黑屏,重则直接重启。
另外,板载一个 J48 跳帽用来告诉板子“你现在用的是哪种供电方式”。使用 DC 圆头供电时,跳帽要套上;使用 micro-USB 供电时,跳帽必须取下。很多人从别的项目里拆来 Nano,跳帽位置反了,一上电就黑屏,误以为自己把板子玩坏了。我遇到的那个案例就是这么回事:跳帽在 micro-USB 位置,插 DC 电源供电,整块板子像是“死”的。
2.2 用万用表量核心电压,别再瞎猜
判断是不是供电不足,最直接的办法不是换电源试,因为手上未必有第二个电源。用一块万用表,把挡位拨到直流电压档,红表笔点 40Pin 排针的 Pin 2 或 Pin 4(这两个引脚是 5V 供电脚),黑表笔点 Pin 6 地线。通电后先空载量一次,再在启动过程中量一次。
如果启动瞬间电压掉到 4.75V 以下,或者空载 4.98V、一启动就跌到 4.6V 再慢慢爬回来,那基本锁定是电源纹波或压降问题。这种时候换一个能稳定输出 5V/4A 的适配器,黑屏通常立刻消失。注意量的时候表笔接触要稳,别让表笔短路了 5V 和 3.3V 引脚,那是真会出问题的。
2.3 线材与适配器的替换经验
DC 圆头电源尽量选原装的或线径粗一点的,USB-C 线材选带 Emarker 且线径 20AWG 以上的,便宜细线在大电流下压降非常可观。我实测过一根看起来很新的 USB-C 线,空载 5.1V,接了 Nano 后只有 4.5V——这种线哪怕电源再好也白搭。还有一个细节:不要用电脑 USB 口直接给 Nano 供电,电脑口输出电流普遍在 500mA-900mA 之间,远不够用。电脑 USB 口可以给 Orin Nano 这类低功耗版本救急,但给经典 Nano 供电基本是找罪受。
提示:修黑屏的第一分钟内,先确认 J48 跳帽和供电口是否匹配,再排查别的。这个动作两秒钟,能省掉后面所有折腾。
3. HDMI 无信号排查:线材、握手与显示参数逐项过
3.1 先做最笨但有效的事
排除了供电问题之后,如果 HDMI 依然无信号,先做三件最基础的事。第一,换一个已知正常的显示器或电视,电视对 HDMI 握手信号通常比显示器更宽容,很多“Nano 黑屏”换了电视就能正常显示。第二,确认 HDMI 线插紧、接头没有弯针,经典的 Jetson Nano 开发板用的是标准 HDMI 口,而 Jetson Orin Nano 用的是 Micro-HDMI,线材类型不一样,别硬插。第三,在给 Nano 上电前,先把显示器分辨率调到 1080P/60Hz——别直接停留在 4K 最高刷新率上。
为什么这一步有效?因为 HDMI 不是插上就能出画面的,源端和显示端要通过 EDID 做握手,把显示器的分辨率、刷新率、色彩空间等参数协商好。有些显示器的 EDID 信息里包含了一段 Nano 内核不认识的模式,握手失败后源端就认为自己没有连接设备,显示器自然一直显示“无信号”。强制用 1080P/60Hz 这类最保守的参数去协商,能绕过大部分握手冲突。
3.2 系统活着但画面全黑:用盲操作改分辨率
如果 HDMI 线没问题,风扇也转起来了,网口指示灯有规律闪动,但画面就是全黑,那大概率是系统起来了、显示输出参数不对。这时不用急着断电,试试盲操作:按 Ctrl+Alt+T 打开终端,虽然屏幕全黑,但键盘输入仍然会被桌面接收。
在终端里先敲:
xrandr看到输出之后,找到 HDMI 对应的输出名,常见的是 HDMI-0 或 HDMI-1,然后强制切到低分辨率:
xrandr --output HDMI-0 --mode 1920x1080 --rate 60 xrandr --output HDMI-0 --mode 1280x720 --rate 60如果连分辨率都不知道,就一条一条试。盲操作时把命令先写到一个文本文件里,逐行复制粘贴,避免手误。等屏幕恢复后,再到“显示设置”里保存当前分辨率。这个方法解决过不少“桌面黑屏但系统活着”的情况。
3.3 开机前强制指定显示参数:修改 extlinux.conf
如果系统能启动、但桌面黑屏且 xrandr 盲操作也没反应,那你可以在另一台电脑上改 SD 卡启动分区里的内核引导参数,强制指定 HDMI 输出。
把 SD 卡从 Nano 上拔下来,插到读卡器里,在 PC 上找到第一个 FAT 小分区,里面有一个extlinux/extlinux.conf文件,它存放着 U-Boot 传给内核的启动参数。修改前先备份一份:
sudo cp extlinux/extlinux.conf extlinux/extlinux.conf.bak找到以APPEND开头的那一行,通常长这样:
APPEND ${cbootargs} quiet ...把quiet删掉,然后在行尾追加显示参数:
APPEND ${cbootargs} video=HDMI-A-1:1920x1080@60 fbcon=map:0video=HDMI-A-1:1920x1080@60是强制指定 HDMI 输出分辨率和刷新率,fbcon=map:0是让内核 framebuffer 控制台输出到 HDMI 接口。实际连接器名会根据内核版本略有差异,常见的是HDMI-A-1;如果你不确定,先用串口控制台看内核日志里实际枚举出来的连接器名。改完之后保存,把 SD 卡放回 Nano 启动,启动过程会在屏幕上直接打印内核日志,能看到系统到底卡在哪一步。
3.4 串口控制台是最后的“眼睛”
当 HDMI 完全无信号、桌面也进不去、你又不想一遍遍猜测系统状态时,串口控制台是最高效的手段。Jetson Nano 的 40Pin 排针上引出了 UART0:Pin 6 是地,Pin 8 是 TXD,Pin 10 是 RXD。用一个 USB 转 TTL 模块连接,模块的 RX 接 Nano 的 TXD,模块的 TX 接 Nano 的 RXD,地接 Pin 6,然后接电脑。
在电脑上打开串口终端,参数设置 115200、8N1:
screen /dev/ttyUSB0 115200通电后,串口会实时打印 Bootloader 日志和内核启动日志。如果输出停留在 U-Boot 阶段就不再前进,那是引导层问题;如果内核日志出现 panic 或反复重启,那是系统层问题;如果串口完全无输出,检查接线和波特率。有了串口日志,你就能精确区分“板子坏了”还是“系统坏了”,而不是靠猜。
提示:串口接线时注意模块的 TX 接目标板 RX、RX 接目标板 TX,还要共地。接错轻则没有日志,个别质量差的模块还可能损坏接口,别随便带电插拔。
4. 系统层救法:重置登录密码与重烧 SD 卡系统
4.1 只是忘了密码?挂载 SD 卡直接改 shadow
很多人以为登录密码忘了只能重新刷系统,其实 Jetson Nano 跑的是 Ubuntu,完全可以在另一台设备上直接改。把 SD 卡拔下来插到 Linux 电脑上,找到第二个 ext4 根分区并挂载:
sudo fdisk -l sudo mount /dev/sdX1 /mnt其中 /dev/sdX1 是实际根分区盘符,视读卡器和分区数量而定。然后编辑挂载目录下的etc/shadow文件:
sudo vim /mnt/etc/shadow找到需要重置密码的用户名那一行,格式是:
username:$6$hash值$...:18500:0:99999:7:::把第一个冒号和第二个冒号之间的内容全部清空,注意保留冒号本身,也就是变成:
username::18500:0:99999:7:::保存后拔出 SD 卡,放回 Nano 启动,该用户就能免密登录,登录后立刻执行passwd设置新密码。这个办法也可以用来解决设备交接给别人但密码丢失的情况,完全不需要重刷系统。
注意:修改 shadow 文件时一定要在 root 权限下操作,改完检查一下权限位,别把 shadow 的权限改成 777,否则系统启动会报错。
4.2 干净重烧 SD 卡的正确姿势
如果系统文件损坏严重、连登录都进不去,或者串口日志显示根文件系统挂载失败,那就回到最干净的方案:重烧 SD 卡镜像。
先去下载适配 Jetson Nano 的 JetPack 镜像,推荐使用 4.6.x 版本(对应 L4T R32.7.x),这是官方为经典 Nano 维护的最后一版较稳定的系统。镜像是一个.img文件,下载完成后用 balenaEtcher 写入 SD 卡,烧录完成最好点一次校验。Linux 下用 dd 也可以:
sudo dd if=jetson-nano-jp46.img of=/dev/sdX bs=4M status=progress conv=fsync写入完成后把 SD 卡插入 Nano,接好电源开机,第一次开机时间会比较久,千万别因为等不及就断电。亲眼看到桌面或串口出现登录提示才算完成。
有个经验:很多人烧录完直接拔掉 SD 卡去插别的设备,或者用同一张卡反复烧写几十次,卡的分区表容易出问题。如果 Etcher 提示写入成功但 Nano 依然不启动,换一张卡重写一次,往往就解决了。
4.3 选卡与避坑:低速卡和扩容卡最坑
SD 卡的坑我踩过很多次。Nano 对 SD 卡的最低要求是 Class 10 / UHS-I A1,但实际使用中随机写入性能比持续读写速度更重要。有些廉价“高速卡”持续读能上 100MB/s,随机写入只有几 MB/s,系统经常卡顿甚至黑屏。另一些是扩容卡,标称 128GB 实际只有 16GB,写到一半数据损坏,表现就是“开机黑屏”或者“用着用着系统突然丢了”。
收到新卡后建议先用 H2testw 或 f3 工具测试一遍真实容量,再投入使用。我用下来的经验是:主流品牌的 A1 卡、32GB-128GB 容量,稳定性都还可以;那些杂牌卡就算标称再高也建议直接扔掉,一张卡能毁掉你一个下午的调试时间。
5. 真正的“救砖”:强制恢复模式与 USB 整体重刷
5.1 什么情况才算“真砖”
SD 卡重刷无效、换了 N 张卡还是黑屏、串口输出停在 U-Boot 阶段不动弹,这时候问题就不在 SD 卡上了,而是模块里的引导程序(QSPI Flash)可能被折腾坏了,或者你之前在 NVMe 启动配置上做了某些危险操作。这时需要进入强制恢复模式,通过 host 电脑的 USB 接口把 bootloader 和系统整体写回去。
不过先给你吃个定心丸:Jetson Nano 几乎没有真正意义上的“全砖”概念。只要 SoC 没烧、没进水,强制恢复模式总能救回来。Android 手机那种变砖后联机都没反应的情况,在 Nano 上基本不会出现,所以看到“救砖”两个字不用慌。
5.2 进入强制恢复模式的完整动作
B01 开发板上通常有两个小按钮:一个标着 Reset,另一个标着 Force Recovery。进入恢复模式的操作口诀是“按住 REC,点按 Reset,保持两到三秒再松开”。具体这样操作:
- 先断电,用 micro-USB 线连接开发板上的 micro-USB 口和一台 Linux 主机。
- 按住 Force Recovery 按钮不放。
- 点按一下 Reset 按钮并松开。
- 继续按住 Force Recovery 等待 2~3 秒,然后松开。
- 通电(如果还没通),等待启动。
在宿主机上执行lsusb,如果能看到 NVIDIA 的设备描述,或者设备 ID 类似0955:7020,就说明已经进入恢复模式。如果识别不到,多半是 micro-USB 线不支持数据、接口接触不良,或者宿主机缺少驱动。换一根好的数据线,再试一遍。
5.3 用 SDK Manager 整体重刷
进入恢复模式之后,最省事的方法是安装 NVIDIA SDK Manager,它会自动下载对应版本的 Bootloader、系统镜像和 JetPack 组件,一步到位。SDK Manager 需要运行在 Ubuntu 主机上,安装时注意要用sudo权限启动,否则可能识别不到 USB 设备。
在 SDK Manager 里选择对应的开发套件型号(Jetson Nano Developer Kit),然后选择要安装的 JetPack 4.6.x 版本。烧写开始前,开发板上需要先插好一张至少 32GB 的 microSD 卡,因为 Nano 本机没有 eMMC,SDK Manager 最终会把系统写到这张卡上。整个过程通常要 20 到 40 分钟,取决于镜像下载速度和 SD 卡写入速度。烧写完成后开发板会自动重启,正常情况下就能看到桌面。
SDK Manager 识别不到设备是最常见的问题,优先排查 USB 线和权限。另外宿主机磁盘空间不足也可能导致烧写中途失败,SDK Manager 默认会把几个 GB 的组件缓存到~/nvidia目录,空间不够时会卡在看似毫无规律的地方。
5.4 没有 SDK Manager:用 L4T BSP 命令行刷写
如果你不习惯图形界面,或者在服务器环境工作,可以直接用 L4T Driver Package 和 Sample Root Filesystem 手动刷写。下载并解压 BSP 后,把 rootfs 合并进Linux_for_Targets目录,通常需要执行apply_binaries.sh脚本。设备进入恢复模式后,执行烧写命令:
sudo ./flash.sh jetson-nano-devkit mmcblk0p1不同的 JetPack 版本 target 名称可能略有差异,拿不准时先跑./flash.sh -h查看支持的板卡列表。命令行刷写的坑在于参数写错会直接失败或写入错误分区,所以第一次操作尽量保持默认参数,不要自己加稀奇古怪的选项。刷新过程中如果卡住不动,检查 USB 线质量和宿主机磁盘空间,和 SDK Manager 的原理一样。
6. 救活之后:验证、温控与备份的日常保命习惯
6.1 救活后的三件套:验证版本、检查分区、更新系统
系统重新跑起来之后,第一件事是确认版本对不对。终端里跑一句:
jetson_release可以快速看到 JetPack 版本、L4T 版本和 CUDA 版本。接着检查根分区大小:
df -h有些镜像写入 SD 卡后根分区并没有自动扩展到整张卡,如果发现容量明显偏小,关机断电,把 SD 卡插到 PC 上用 gparted 扩容根分区,再放回 Nano 启动。这一步不是必须,但长期不处理,系统盘早晚会被日志和模型文件塞满,导致再次出现诡异黑屏。
网络确认正常后,执行sudo apt update && sudo apt upgrade把系统补丁打上。更新过程中千万别断电,否则又回到解放前。
6.2 温控别忽略:Nano 热到一定程度会“黑屏假死”
很多人救活之后觉得终于完事了,结果跑了半天 GPU 推理任务又黑屏,这次大概率是过热。Jetson Nano 的被动散热片应付基础负载还行,但跑 YOLOv5 这种连续推理,温度很容易冲到 80℃ 以上,内核触发强降频之后系统会变得卡顿,极端情况下直接显示输出停止、黑屏假死。
接一个 5V 风扇到板载风扇座,或者用小夹子给散热片加个主动风流,都能明显改善。用tegrastats命令可以实时看温度和功率数据。长时间高于 80℃ 就必须处理散热了,别再硬扛。另外定期给散热片清灰,灰多了之后散热性能下降,Nano 黑屏的频率会肉眼可见地上升。
6.3 dd 整卡备份:性价比最高的保险
系统重新调好之后,最值得花时间做的一件事,是把整张 SD 卡做成镜像备份。以后不管是误删文件、误改配置还是 SD 卡老化,直接写回备份就能恢复,成本只有十分钟。
把要备份的 SD 卡插到 Linux 电脑的读卡器上,先确认盘符:
lsblk假设盘符是 /dev/sdX,执行整卡备份:
sudo dd if=/dev/sdX of=nano-backup.img bs=4M status=progress conv=fsync恢复时用 Etcher 把这份镜像写回另一张 SD 卡即可。注意备份用整卡,不要只备份某个分区,因为整卡包含分区表和 bootloader,恢复起来才最完整。备份文件建议放到大容量机械盘或 NAS 上,别和源码挤在同一张容易坏的小磁盘里。
6.4 日常防坑清单
最后整理一份我自己每次给客户或朋友交付 Nano 时会附上的防坑清单:
- 供电固定用 5V/4A DC 适配器,J48 跳帽和供电口保持一致,micro-USB 供电只适合应急。
- 关机用
sudo shutdown等系统完全停止再断电,高频乱拔电源是 SD 卡损坏的主要元凶。 - SD 卡用口碑好的 A1 卡,杂牌卡和扩容卡直接扔,发现读写速度异常先测容量。
- 显示器开机之前先切到对应 HDMI 输入源,遇到无信号先换显示设备再检查板子。
- 跑高负载任务前确认供电、散热和风扇状态,跑模型时不建议用电池供电方案。
- 定期做整卡 dd 备份,救砖成本从一小时降到十分钟。
我自己的习惯是桌面常备一张 32GB 的小卡,烧好一份干净的 JetPack 镜像,专门当救援启动卡用。遇到机器黑屏,第一件事永远是换一张已知正常的卡试启动。绝大多数找我“救砖”的机器,最后查出来都是供电线材或者 SD 卡问题,真正需要走强制恢复模式的不到一成。就算真走到那一步,只要 SoC 没坏,救回来的概率依然非常高。按这条链路从外到内排查,你也能在十分钟内把“黑屏”从灾难变成小问题。