ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Jetson Nano 远程控制实战:从串口到 SSH 的完整配置指南

Jetson Nano 远程控制实战:从串口到 SSH 的完整配置指南 很多人第一次拿到 Jetson Nano 的第一反应是找显示器、找键盘鼠标把它当成一台迷你电脑来伺候。但等真把这一套外设接完之后你会发现开发板日常使用的正确姿势根本不是“接显示器操作”而是安安静静躺在一个角落用笔记本远程控制它。尤其是后续要跑 YOLOv5、做 CSI 摄像头推理这类 AI 边缘计算项目时绝大部分时间你都会通过 SSH 连上去写代码、传文件、看日志显示器只在最初调试时用一下。所以系列的第一篇我先不急着讲模型部署而是把“笔记本电脑控制 Jetson Nano”这条链路完整打通——这也是一切 AI 应用开发的地基。1. Jetson Nano 的价值定位为什么控制链路比板卡本身更重要1.1 它不是树莓派的替代品而是 AI 边缘计算的入口Jetson Nano 是 NVIDIA 推出的入门级 AI 边缘计算开发板默认搭载基于 Ubuntu 定制的 JetPack 系统。相比树莓派这类通用 SBC它的核心优势是板载 NVIDIA GPUMaxwell 架构128 个 CUDA 核心可以本地运行 CUDA、cuDNN、TensorRT 这些加速库直接跑轻量级深度学习推理。很多人把 Jetson Nano 买回来当树莓派用接个屏幕看看网页、敲敲 Python其实是大材小用——这块板子真正的价值是在低功耗的边缘场景里跑视觉模型。然而也正是因为它主打“边缘计算”它的使用场景往往没有现成的显示器、键鼠。大多数情况下开发板旁边只有一根电源线和一根网线甚至只有一块 USB 无线网卡。真正的开发主力是你那台笔记本。所以“用笔记本控制 Jetson Nano”这件事不是可选项而是必经之路。把这条路走顺了后面所有项目才有操作基础。1.2 “笔记本电脑控制”到底指什么三条链路的分工很多人以为“用笔记本控制 Jetson Nano”就是远程桌面其实这是最大的误解。我实际开发中主要依赖三条链路各自分工不同控制方式用途依赖条件优先级SSH 远程命令行日常写代码、编译、运行程序、看日志网络连通主力调试串口UART系统无法引导时的救援入口、无显示器时的初始配置USB 转串口模块兜底RDPS / VNC 远程桌面偶尔需要看图形界面、访问桌面应用网络连通、桌面环境配置辅助SSH 是日常使用频率最高的但不建议一上来就只学 SSH。因为如果你在 Jetson Nano 上开启了防火墙、改了 SSH 端口、或者系统引导出了问题唯一能进到系统内部的通道就是调试串口。我在系列文章中会反复强调“兜底链路”的重要性这是很多教程不会告诉你的事。1.3 硬件清单与选购建议在开始折腾之前先把硬件备齐。除了 Jetson Nano 开发板本体之外我建议按下面这个清单准备电源官方推荐 5V 4A DC 圆口电源这点极其重要后面踩坑章节会专门讲。不要用手机充电头凑合。Micro SD 卡至少 32GBClass 10 / A1 级别闪迪、三星等大厂产品优先。SD 卡的随机读写性能直接影响系统流畅度。网线一根用于首次连通网络后面如果配好了无线网卡可以拔掉。USB 转 TTL 调试串口模块推荐 CP2102 或 CH340十几块钱这是救命的兜底通道。读卡器用于在笔记本上烧录系统镜像。可选USB 无线网卡或 M.2 无线网卡B01 版本板载 M.2 Key E 接口用于甩开网线。可选杜邦线若干连接串口模块与 Jetson Nano 的 40pin 排针。这套清单里最容易忽略的是调试串口模块。很多人觉得有网络就够了结果某天 SSH 怎么也连不上、板子又没接显示器只能干瞪眼。所以我还是建议一次性把串口模块买了便宜不占地方关键时刻能救命。2. 系统烧录这一步藏着一个影响后续所有操作的细节2.1 选哪个镜像JetPack 版本与镜像格式系统镜像选择直接决定你后面能跑什么软件。Jetson Nano 官方刷机方式有两种用 SDK Manager 刷机需要 NVIDIA 账号适合从零制作带开发环境的完整系统或者下载官方 SD Card Image 直接烧录到 SD 卡。我自己的经验是对于纯入门、只是想要一块能跑 AI 模型的板子SD Card 镜像方式最省事下载解压就是一个 img 文件。镜像版本方面我个人目前踩坑最少的是 JetPack 4.6.x 系列L4T R32.7.x基于 Ubuntu 18.04。虽然 JetPack 5.x 已经支持 Jetson Nano社区里很多教程、模型编译脚本还是基于 4.x 写的新手用 4.6 系列可以少走很多弯路。等对系统、驱动、CUDA 版本这些概念熟了再考虑升级 5.x 不迟。下载时认准 NVIDIA 官网 Jetson 下载中心的 “Jetson Nano Developer Kit SD Card Image”解压后镜像约 6GB 左右。2.2 烧录实操烧录工具我推荐 balenaEtcherWindows / macOS / Linux 都有对应版本界面简单不容易选错目标盘。流程如下用读卡器把 SD 卡插入笔记本。打开 balenaEtcher选择刚才解压出来的 img 文件。选择目标磁盘——注意这一步一定要确认选中的是 SD 卡而不是笔记本硬盘看容量就能分辨。点击 Flash等待写入完成。SD 卡速度不同一般 10 到 30 分钟不等。除了 EtcherLinux 下也可以用dd命令我个人更习惯 Etcher省心。烧录完成之后系统会把 SD 卡的 boot 分区挂载出来Windows 资源管理器里能看到一个盘符。这里要特别强调一个细节boot 分区FAT32是 Windows 能读到的但真正的系统根分区是 ext4 格式Windows 默认读不了。很多新手烧录完发现“SD 卡里只有几个文件”以为烧录失败其实没有系统文件都在那个看不见的 ext4 分区里。2.3 首次开机前的网络决策第一次开机前就要想好后续网络方案因为这会决定你接下来怎么操作。如果手头有网线最省心的方式是开发板插上网线另一端插到路由器 LAN 口然后从笔记本访问路由器后台查看开发板分配的 IP。这种有线连接最稳定也最容易排查问题。如果没有路由器也可以用网线把 Jetson Nano 和笔记本电脑直连手动设置两边的静态 IP让它们组成一个独立的小局域网。这种方式适合没有 WiFi 的场景但首次配置需要在开发板端操作所以最好先有串口或者显示器把网络参数配好。如果打算用无线那就需要提前准备 USB 无线网卡或 M.2 无线网卡并确认芯片型号的 Linux 驱动支持情况。这部分内容我在第 4 章详细展开。首次开机我不建议一上来就折腾无线先用有线把系统跑起来再逐步加无线排查难度会小很多。3. 先用调试串口接管开发板最不依赖外设的控制入口3.1 为什么第一入口选串口而不是 SSH理论上系统烧录完成、开发板插上网线开机之后路由器后台就能看到它的 IP理论上可以直接 SSH。但问题在于官方 SD Card 镜像默认并不保证 SSH 服务已经启动。各版本镜像行为不一致我在 4.6.2 上遇到过插上网线就能 SSH 的情况也见过某次烧录后 SSH 端口根本不通的窘境。如果你没有显示器SSH 又连不上这时候唯一的出路就是调试串口。相比 SSH串口是独立于网络之外的控制通道只需要 USB 转 TTL 模块和几根杜邦线不依赖 IP、不依赖网卡、不依赖系统完全启动。只要开发板通电、内核没崩你就能看到一个登录提示符。所以在没有显示器的情况下正确的接管顺序应该是串口登录 - 启用 SSH - 网络连接 - 后续开发。这也是我为什么把它放在网络配置之前讲。3.2 连线与驱动Jetson Nano Developer Kit 的 40pin 排针上带有一组 UART 调试串口在排针上的定义如下引脚功能Pin 6GNDPin 8UART1_TXD开发板发送接转接模块 RXPin 10UART1_RXD开发板接收接转接模块 TX连接时注意交叉开发板的 TXD 接转接模块的 RXD开发板的 RXD 接转接模块的 TXDGND 接 GND。不要接反否则串口完全没输出。接好之后把 USB 转 TTL 模块插到笔记本上根据模块芯片安装驱动CP2102 装 Silicon Labs CP210x 驱动CH340 装 WCH 驱动。打开任意串口工具我这里 Windows 上用 MobaXterm也推荐 PuTTYmacOS / Linux 用户可以用 screen 或 picocom。配置参数波特率 115200数据位 8停止位 1无校验。这个参数是 Jetson 串口控制台的默认配置别把波特率设置成 9600 之类否则屏幕上只会出现乱码。3.3 登录系统并启用 SSH 服务串口连接成功后给 Jetson Nano 上电窗口中会滚动内核启动日志。第一次启动会做文件系统扩展时间比较长可能持续数分钟中间不要断电。最后会出现登录提示nvidia login:输入默认用户名nvidia密码nvidia进入系统。建议立刻执行sudo systemctl enable ssh sudo systemctl start ssh sudo systemctl status ssh如果提示找不到 ssh 服务说明系统镜像裁剪了 OpenSSH Server手动安装一下sudo apt update sudo apt install openssh-server装完再执行上面的systemctl命令。这一步做完SSH 服务就开机自启了后续只要网络通就能直接用笔记本 SSH 登录串口可以收起来备用。4. 正式切换到 SSH从串口登录到笔记本远程控制的完整配置4.1 三种让开发板连接笔记本的方案SSH 能连上的前提是笔记本和 Jetson Nano 在同一个网络内。实际部署环境不同用到的方案也不同。我整理了一下自己常用的三种方案一路由器中转最推荐开发板网线接路由器 LAN 口笔记本通过 WiFi 或网线接同一路由器。路由器 DHCP 会给两个设备分别分配 IP互相能访问。这种方式的好处是配置最简单笔记本无线也不影响后续如果开发板想上外网装软件也是直接通的。方案二笔记本开 WiFi 热点如果出差在外没有路由器可以用笔记本开一个移动热点让 Jetson Nano 用 USB 无线网卡连接热点或者用网线连到笔记本的 RJ45 网口再开启网络共享。热点方式需要在笔记本热点设置里查 Jetson 的 IPWindows 热点管理页面能看到已连接设备列表。方案三笔记本与开发板网线直连笔记本有网口的情况下网线一头插笔记本另一头插 Jetson Nano两边手动配置一个局域网段。Windows 上把以太网卡的 IP 改成192.168.1.100子网掩码255.255.255.0开发板侧串口登录后通过nmcli或/etc/netplan把eth0配成192.168.1.101。然后从笔记本ssh nvidia192.168.1.101即可。这种方式不需要任何外部设备但要求开发板侧已经能登录进去所以一般放在串口之后操作。4.2 找到 IP 地址路由器中转时获取开发板 IP 有以下几种方式登录路由器管理后台一般是 192.168.1.1 或 192.168.0.1在 DHCP 客户端列表里找到名为nvidia或 MAC 地址规律为02:...的设备。如果进了系统串口或显示器直接执行ip addr查看 eth0 或 wlan0 的地址。在笔记本上用 Advanced IP Scanner 扫描网段能列出所有在线设备。拿到 IP 之后先在笔记本上ping一下确认连通然后执行 SSH 登录ssh nvidia192.168.1.101Windows 10 1809 及以上版本自带 OpenSSH 客户端终端里直接能跑。首次连接会提示确认主机指纹输入yes再输入密码nvidia就进入系统的命令行提示符了。到这里你已经正式从“抱着板子插显示器”跨越到了“笔记本远程控制开发板”的模式。4.3 首次 SSH 登录与账户设置刚登录进去第一件事不是急着装环境而是做几个基础的安全与易用设置passwd # 修改默认密码别再用 nvidia/nvidia sudo timedatectl set-timezone Asia/Shanghai sudo apt update sudo apt upgrade -y改密码这件事容易被忽略。开发板如果接入局域网或公网默认密码等于把系统裸奔给同一内网里的其他设备。文科生可能觉得无所谓但做开发的人应该有这个习惯任何连上网络的设备默认凭据必须第一时间改掉。另外注意 apt 源。Jetson Nano 是 ARM64 架构系统默认使用的是ports.ubuntu.com而不是 x86 常见的archive.ubuntu.com。如果你想换国内源加速必须使用ubuntu-ports源路径。以清华源为例需要把/etc/apt/sources.list里的http://ports.ubuntu.com/ubuntu-ports/替换成https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/千万不要把常见的 x86 源直接写进去否则会报“无法定位软件包”。NVIDIA 自家的 apt 源保留不动因为 JetPack 底层的 CUDA、L4T 驱动都靠它更新。4.4 配置无线网卡省掉那根网线有线连接稳定但总要拖着一根线实际项目里还是无线方便。Jetson Nano Developer Kit 板载没有无线网卡需要自己加装。两种主流方案一是加装 M.2 无线网卡B01 版本板载 M.2 Key E 插槽推荐 Intel 8265NGW / 9260 这类型号Ubuntu 内核自带驱动开机直接识别基本零折腾。缺点是需要拆开外壳、接天线稍微有点动手门槛。二是用 USB 无线网卡即插即用不拆机。但芯片选择要谨慎很多便宜网卡用的是 Realtek 芯片Ubuntu 18.04 内核不原生支持需要自己编译驱动非常折腾。我踩过的坑是 RTL8811CU 这类芯片官方驱动源码在 GitHub 上能找到但编译过程中会因为内核头文件版本不匹配频频报错。所以如果你不想折腾驱动买之前先问清楚芯片或者直接选 Intel M.2 方案。装好无线网卡并确认系统识别ip addr能看到 wlan0之后用 NetworkManager 连接 WiFinmcli dev wifi connect 你的SSID password 你的密码连接成功后ip addr show wlan0能看到分配的 IP。如果后续想让它开机自动重连NetworkManager 默认会记住这个连接一般不用额外配置。4.5 固定 IP 与免密登录路由器 DHCP 分配的 IP 不定期会变对于需要经常 SSH 连接的开发板固定 IP 省心不少。两种方式一种是在路由器后台给开发板的 MAC 地址绑定固定 IP最简单推荐。另一种是在开发板侧配置静态 IP修改/etc/netplan/下对应的 yaml 文件。不同版本镜像下 netplan 文件名不一样先ls /etc/netplan看你机器上实际存在的文件然后类似这样配置以太网network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: no addresses: - 192.168.1.101/24 gateway4: 192.168.1.1 nameservers: addresses: [192.168.1.1, 8.8.8.8]修改后执行sudo netplan apply生效。注意 Jetson 的 netplan 默认可能使用 NetworkManager 作为渲染器如果你的系统没有 NetworkManager 而是 systemd-networkd配置语法要相应调整动手前先看看默认文件里是怎么写的。免密登录是提升日常体验的另一个关键步骤。在笔记本上生成密钥并拷贝到开发板ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ssh-copy-id nvidia192.168.1.101之后ssh nvidia192.168.1.101直接进入不再提示输密码。进一步优化可在~/.ssh/config里加一段Host jetson HostName 192.168.1.101 User nvidia IdentityFile ~/.ssh/id_ed25519保存后终端里输入ssh jetson即连整个链路从此快到几乎无感。5. 实测排错手册我在控制链路中踩过的坑5.1 供电不足引起的神秘重启这是 Jetson Nano 新手最容易踩、也最隐蔽的一个坑。开发板有两个供电入口一个 DC 圆口5V 4A 推荐一个 Micro USB5V 2A 甚至更低。我用 Micro USB 供电时系统反复无常轻载时能开机进入系统一跑稍微重一点的命令直接黑屏重启甚至 USB 外设识别异常。后来换成官方推荐的 5V 4A DC 电源所有症状消失。这里给新手一个判断法则如果你的 Jetson Nano 无规律重启、外设时好时坏、跑程序时随机死机优先怀疑电源不要先去折腾软件。此外USB 无线网卡、机械键盘、大功率风扇这些外设都会额外吃电流电源余量一定要留足。5.2 SSH 连接慢、密码错误、连不上SSH 连不上是高频问题我整理了几种常见场景症状可能原因处理方法连接超时网络不在同一网段、防火墙拦截确认 ping 通检查 IP、网关连接被拒绝Connection refusedSSH 服务未启动串口登录执行sudo systemctl start ssh密码正确却提示 Permission denied默认密码已被修改通过串口passwd重置密码输入密码后等很久才进DNS 反向解析超时修改/etc/ssh/sshd_config加UseDNS no重启 ssh之前能连、突然拒绝开发板 IP 变了arp -a或路由器后台重新确认 IP其中UseDNS no这个优化很多人不知道。默认配置下 SSH 收到连接请求时会反查客户端域名在无内网 DNS 或网络慢的环境下每次登录会卡十几秒。修改后重启 ssh 服务登录速度明显改善。5.3 USB 无线网卡驱动折腾记录我在一块基于 RTL8811CU 的 USB 网卡上浪费过一整个晚上。主板识别不到 wlan0lsusb能看到设备但系统没有对应驱动。网上找的驱动源码编译时报错原因是内核头文件路径不对。排查过程中发现必须先安装与当前内核版本匹配的 headerssudo apt install linux-headers-$(uname -r)然后再去编译驱动。即便如此Realtek 驱动的编译脚本还会因为内核版本差异报各种错建议尽量绕开这种网卡。实在要用 USB 方案优先选择芯片为 Atheros、MediaTek 中内核原生支持的型号这类网卡插上就能用不用编译。把这些踩过的驱动经历总结成一句话USB 网卡不是不能用但购买之前一定要确认芯片在 Ubuntu 18.04 内核里有没有现成驱动别只看京东页面上的“免驱”宣传。5.4 SD 卡空间与性能问题系统镜像默认烧录后根分区正常情况下首次开机会自动扩展到整张 SD 卡。如果发现df -h显示根分区只有十几 GB而你的卡是 64GB说明扩展没生效需要手动处理sudo growpart /dev/mmcblk0 1 sudo resize2fs /dev/mmcblk0p1growpart如果没装先sudo apt install cloud-guest-utils。不过这要求 root 分区本身没问题建议操作前先检查lsblk确认分区布局。另外劣质 SD 卡是系统卡顿、数据损坏的重要源头。跑 AI 推理时模型加载本身就是大量随机读卡的 IO 性能直接体现在启动速度和程序加载速度上。这也是我前面建议买 A1 级品牌卡的原因省几十块钱后面得用几倍时间补回来。5.5 常见故障速查表我把控制链路搭建过程中最容易出现的故障按现象和定位整理成一张速查表方便你有问题的时候直接对号入座现象定位方向处理动作上电无输出、电源灯不亮电源适配器 / SD 卡换 DC 5V4A 电源重新插拔 SD 卡串口只有启动日志、卡在登录前rootfs 扩展未完成 / SD 卡故障等待更长时间换卡重刷串口有输出但是乱码波特率不对统一使用 115200 8N1屏上启动正常但笔记本 ping 不通网线或 IP 网段问题确认网线链路检查 IP 是否在同一网段SSH 端口不通但 ping 通ssh 服务未启动串口登录后启用并enablewlan0 不存在无线网卡驱动未加载换原生驱动支持的网卡或加装 Intel M.2 卡apt 源更新极慢或 404源路径写错架构确认使用ports.ubuntu.com/ubuntu-ports6. 控制链路搭好之后下一步该往哪走6.1 先学会传文件scp / rsync 与 VS Code Remote控制链路打通之后下一个高频需求是文件传输。模型权重、数据集、代码脚本都不可能在开发板上敲出来都是从笔记本传过去的。单文件传输用scp最直接scp ./my_model.pt nvidia192.168.1.101:~/project/大量文件、反复同步用rsync支持断点续传和增量体验远好于 scprsync -avz --progress ./dataset/ nvidia192.168.1.101:~/dataset/日常写代码则建议直接用 VS Code 的 Remote-SSH 插件连上 Jetson 后直接在笔记本的 IDE 里编辑开发板上的文件终端、文件树、调试器全部远程工作。第一次连接时 VS Code Server 会在开发板上自动下载对应 aarch64 架构的版本如果下载慢需要手动在开发板上配置代理或离线安装 server 包。这也是一个容易被卡住的细节。6.2 后续系列内容预告AI 推理项目的前置条件把这一套控制链路彻底跑通之后Jetson Nano 才真正变成一个“可以安静地放在角落里的 AI 边缘计算单元”。这个系列的后续内容我会围绕具体实战项目展开从 CSI 摄像头接入、Python 环境与 CUDA 库的验证到 YOLOv5 模型部署和 TensorRT 加速推理再到如何用笔记本远程拉取推理结果、控制拍照和录像。这些内容共同的前提就是你得能稳定、快速、任意时刻地从笔记本连接到这块开发板。所以不要嫌第一篇基础控制链路稳不稳直接决定后续每一个项目跑起来顺不顺。花半小时把这些细节一次配好后面能省出大把时间用在真正有挑战的地方。
返回列表