1. 为什么Jetson Nano的联网问题值得单独拿出来说
Jetson Nano这块板子,玩过的人都知道,算力在入门级边缘AI设备里算是相当能打的,但它的无线联网体验实在让人头疼。我手上这块4GB版本,板载没有Wi-Fi模块,只有一个千兆以太网口。刚拿到手的时候,我第一反应是插个USB无线网卡不就完了,结果发现事情没那么简单——Nano的USB口供电能力有限,某些大功率无线网卡插上去要么识别不稳定,要么跑着跑着就掉线,尤其是跑YOLOv5推理的时候,USB总线负载一高,网卡直接罢工。
更现实的问题是,很多人的工作台上根本没有多余的网线接口。笔记本连的是公司或家里的Wi-Fi,路由器在客厅,Nano放在桌面上,中间拉一根长网线过去既不现实也不美观。这时候最直接的思路就是:让笔记本通过网线把网络共享给Nano。笔记本本身通过Wi-Fi上网,Nano通过网线连到笔记本,笔记本做一次网络转发,Nano就能正常访问外网了。
这个方案的核心价值在于:不需要额外的路由器、交换机,不需要拆机加装无线模块,只需要一根普通的网线,五分钟之内就能让Nano跑起来。适合所有刚拿到Jetson Nano、Jetson Orin Nano,或者任何只有有线网口但需要临时联网的嵌入式设备玩家。下面我把整个配置过程拆开讲,包括我踩过的坑和几个容易忽略的细节。
2. 动手之前的硬件与系统环境确认
2.1 笔记本端和Nano端各自需要什么
先说笔记本这边。你的笔记本必须同时具备两个网络接口:一个用来连Wi-Fi(或者连其他能上网的网络),另一个就是有线网口。现在很多轻薄本取消了RJ45网口,这种情况你需要一个USB转网口的转接器,几十块钱的那种就行,芯片方案建议选RTL8153或者AX88179,这两个在Linux和Windows下驱动都比较成熟,不容易出幺蛾子。
Nano这边就简单了,它自带一个千兆网口,直接插上网线就行。但有一点要注意:Jetson Nano的网口不支持PoE供电,别想着用PoE交换机一根线同时供电和传数据,那个是工业级设备才有的功能。你该给的DC电源还是要给,5V 4A的圆头电源或者通过Micro USB供电都行,但Micro USB供电时USB口的总电流会受限,如果你同时插了USB无线网卡和摄像头,可能会触发过流保护。
系统方面,Nano上跑的是NVIDIA官方的JetPack系统,底层是Ubuntu 18.04或者20.04。笔记本这边Windows、macOS、Ubuntu都行,配置逻辑大同小异,我下面会分别说。
2.2 网线选择:别在这上面省事
网线这块我得多说两句。很多人随手抓一根不知道从哪翻出来的老网线就往上插,结果发现连不上,折腾半天以为是配置问题,其实是线的问题。Jetson Nano的千兆网口需要至少超五类(Cat5e)以上的网线才能跑满千兆,如果你用的是那种很细的、没有屏蔽层的电话线改的网线,可能连百兆都跑不稳。
另外,网线的线序也值得注意。标准的T568B线序是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。如果你是自己压水晶头,两端都按T568B压就行,这叫直通线,用来连接不同设备(笔记本和Nano属于不同设备)。如果你不小心压成了一端A一端B的交叉线,理论上现代网卡都支持自动翻转(Auto-MDIX),但Jetson Nano的网卡在某些JetPack版本下对交叉线的兼容性并不完美,我遇到过交叉线插上去网口灯不亮的情况,换直通线立马就好了。
提示:如果你手头只有一根成品网线,插上之后先看Nano网口旁边的指示灯。绿灯常亮表示链路已建立,黄灯闪烁表示有数据传输。如果两个灯都不亮,先换线,别急着改配置。
3. 笔记本端网络共享的完整配置流程
3.1 Windows下的Internet连接共享设置
Windows系统自带的Internet连接共享(ICS)功能是最省事的方案,不需要装任何额外软件。操作路径如下:
- 打开“控制面板” -> “网络和共享中心” -> “更改适配器设置”。
- 找到你正在上网的那个网卡(通常是“WLAN”),右键 -> “属性” -> “共享”选项卡。
- 勾选“允许其他网络用户通过此计算机的Internet连接来连接”。
- 在下拉框中选择你的有线网卡(通常叫“以太网”或“本地连接”)。
- 点击确定。
这时候Windows会自动把有线网卡的IP地址设为192.168.137.1,子网掩码255.255.255.0。这个地址是固定的,ICS服务默认就用这个网段,你改不了。所以Nano那边的IP必须设成192.168.137.x网段,网关和DNS都指向192.168.137.1。
我实测下来,Windows ICS的稳定性还不错,但有一个坑:如果你之前手动给有线网卡设过静态IP,ICS会提示“无法启用共享访问”。解决办法是先把有线网卡的IP设回“自动获取”,然后再开ICS。另外,ICS服务(SharedAccess)如果被某些安全软件禁用了,也会导致共享失败,检查一下服务列表里“Internet Connection Sharing (ICS)”是不是处于“正在运行”状态。
3.2 Ubuntu桌面版下的共享配置
Ubuntu下配置网络共享稍微麻烦一点,因为图形界面没有Windows那么直观。在“设置” -> “网络”里,你可以找到“有线”连接,点击齿轮图标进入设置,在“IPv4”选项卡里把方法改为“共享到其他计算机”。这个操作本质上也是启用了NetworkManager的共享功能,它会自动配置iptables的NAT规则和dnsmasq。
但这里有个细节:Ubuntu的共享模式默认给有线网卡分配的IP是10.42.0.1,网段是10.42.0.0/24。所以Nano那边的IP要设成10.42.0.x,网关指向10.42.0.1。如果你之前看过Windows的教程,照着192.168.137.x去设,那肯定连不上。
命令行方式更可控,适合喜欢折腾的人:
# 先确认有线网卡名称,通常是eth0或enp3s0 ip link show # 给有线网卡设静态IP sudo ip addr add 10.42.0.1/24 dev eth0 sudo ip link set eth0 up # 开启IP转发 sudo sysctl -w net.ipv4.ip_forward=1 # 配置NAT,假设你的Wi-Fi网卡是wlan0 sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT这套命令每次重启都会失效,想持久化的话需要把net.ipv4.ip_forward=1写进/etc/sysctl.conf,iptables规则用iptables-persistent保存。
3.3 macOS下的网络共享
macOS的配置入口在“系统偏好设置” -> “共享” -> “互联网共享”。在“共享以下来源的连接”里选Wi-Fi,“用以下端口共享给电脑”里勾选你的有线网卡(通常显示为“USB 10/100/1000 LAN”或“Thunderbolt以太网”)。勾选左侧的“互联网共享”开关即可。
macOS默认给有线网卡分配的IP是192.168.2.1,网段是192.168.2.0/24。Nano那边对应设成192.168.2.x,网关192.168.2.1。macOS的共享功能底层用的是bootpd和pf防火墙,稳定性很好,基本不会出什么问题。
4. Jetson Nano端的网络参数配置
4.1 通过串口或HDMI进入系统
Nano第一次配置的时候,你大概率还没有网络,所以需要通过HDMI接显示器加USB键盘鼠标来操作,或者用USB转TTL串口线通过串口终端登录。串口登录的方式更轻量,不需要额外显示器,具体接法是:USB转TTL模块的GND接Nano的GND(第6针),RX接TX(第8针),TX接RX(第10针),波特率115200。
登录进去之后,Nano默认的用户名是nvidia,密码也是nvidia(如果你刷的是官方JetPack镜像)。有些第三方镜像可能不一样,自己确认一下。
4.2 设置静态IP与网关
Nano上配置静态IP有两种方式:图形界面和命令行。如果你接了显示器,直接在右上角网络图标里点“有线设置”,在IPv4选项卡里选手动,填入地址、子网掩码、网关和DNS。地址填192.168.137.2(Windows ICS场景)或10.42.0.2(Ubuntu场景)或192.168.2.2(macOS场景),子网掩码255.255.255.0,网关填笔记本有线网卡的IP,DNS填8.8.8.8和114.114.114.114。
命令行方式更通用,编辑/etc/netplan/目录下的yaml文件(Ubuntu 18.04及以上版本):
network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: no addresses: - 192.168.137.2/24 gateway4: 192.168.137.1 nameservers: addresses: - 8.8.8.8 - 114.114.114.114保存后执行sudo netplan apply生效。注意缩进必须用空格,不能用Tab,yaml对缩进非常敏感,我见过有人因为缩进用了Tab导致netplan报错,排查了半天。
4.3 验证连通性的正确顺序
配置完之后别急着ping外网,按这个顺序一步步验证:
- 先ping笔记本的有线网卡IP:
ping 192.168.137.1。如果不通,说明物理链路或IP配置有问题。 - 再ping笔记本的Wi-Fi网卡IP(如果知道的话),确认Nano的包能到达笔记本的上网接口。
- 然后ping一个公网IP,比如
ping 8.8.8.8。如果不通,说明NAT转发没生效。 - 最后ping域名,比如
ping www.baidu.com。如果不通但上一步通了,说明DNS配置有问题。
这个顺序很重要,能帮你快速定位问题出在哪一层。很多人一上来就ping域名,不通就懵了,不知道是网络不通还是DNS没配好。
5. 那些让我折腾了半天的坑
5.1 网线插上但网口灯不亮
这个问题我遇到过两次。第一次是网线的问题,那根线看着好好的,但内部某根线芯断了,换线解决。第二次比较诡异,网线没问题,笔记本网口也没问题,但就是灯不亮。后来发现是Nano的网口金属屏蔽罩和外壳有轻微短路,把Nano从金属外壳里拿出来单独测试就正常了。如果你用的是第三方的金属外壳,注意检查网口开孔位置有没有和网口金属部分接触。
5.2 能ping通IP但无法解析域名
这个典型是DNS的问题。Nano的/etc/resolv.conf有时候会被NetworkManager覆盖,你手动改的内容重启后就没了。正确的做法是在netplan配置里写nameservers,或者用resolvectl命令配置。另外,如果你在Windows ICS场景下,笔记本的DNS是运营商分配的,Nano的DNS直接填192.168.137.1也行,ICS会做DNS代理。
5.3 SSH连接Nano时频繁断线
用网线直连的时候,如果笔记本的网卡开启了节能模式,可能会在空闲时降低网口功率,导致SSH连接不稳定。Windows下可以在设备管理器里找到有线网卡,在“电源管理”选项卡里取消勾选“允许计算机关闭此设备以节约电源”。Ubuntu下用ethtool -s eth0 wol d关闭Wake-on-LAN,或者用ethtool --set-eee eth0 eee off关闭节能以太网。
5.4 共享网络后笔记本本身断网
这个情况比较少见,但确实存在。原因是Windows ICS在启用时会重置有线网卡的一些参数,某些USB网卡驱动对此兼容性不好,导致整个网络栈出问题。解决办法是换一个USB网口转接器,或者改用Ubuntu的NetworkManager共享模式,后者对硬件的兼容性更好。
6. 共享网络之后的实际使用体验与优化建议
网络通了之后,Nano就可以正常apt update、pip install了。但网线直连的带宽是千兆,实际传输速度能跑到100MB/s以上,比Wi-Fi快得多。如果你需要往Nano上传大文件(比如预训练模型权重),网线直连的优势非常明显。我传一个500MB的YOLOv5权重文件,网线直连大概5秒就传完了,Wi-Fi下可能要半分钟。
另外,如果你经常需要这样操作,可以写一个一键配置脚本放在Nano上,省得每次重装系统都要手动配一遍。脚本内容就是把netplan配置写进去然后apply,再验证一下连通性。我自己的脚本里还加了一个自动检测笔记本网段的功能,通过arp-scan扫描192.168.137.0/24、10.42.0.0/24、192.168.2.0/24这三个常见网段,找到网关地址后自动配置Nano的IP,这样不管笔记本用的是Windows、Ubuntu还是macOS,插上网线跑一下脚本就能通。
最后说一个实际使用中的小技巧:如果你觉得每次都要在笔记本上开共享太麻烦,可以考虑在Nano上装一个轻量级的DHCP客户端,让它自动从笔记本获取IP。Windows ICS自带DHCP服务,Nano的eth0设成DHCP模式就能自动拿到192.168.137.x的地址,连静态IP都不用配。Ubuntu的共享模式也有dnsmasq提供DHCP,同样支持自动获取。这个方式最省事,推荐给不想折腾静态IP的人。