Jetson Nano出来一段时间了,借着带同学们玩的由头买了套回来,终于有机会替换原来的树莓派玩玩了。这篇文章是“玩转Jetson Nano”的开篇,当然有可能玩得转也有可能玩不转,试试看:)主要介绍入手后的Nano环境配置。尽管已经有很多类似的帖子,感觉还是有必要把个中关键和心得记下来,希望以后再用时少走弯路吧,也供有需要的同学参考。
本文主要开机准备和远程连接设置两大内容,具体为:
目录
1. 开机前的准备
1.1 认识Nano
先通过Nano官网提供的信息认识一下Nano开发者套件。
(1)Jetson Nano Developer Kit盒中包括:
- Jetson Nano开发人员套件
- 小纸卡,具有快速启动和支持信息
- 折叠纸架(用于放置Nano的架子)
(2)我们还需要:
- microSD卡(最低16GB)
- USB键盘和鼠标
- 电脑显示器(HDMI或DP接口)
- Micro-USB电源(5V⎓2A)
- 一台能上网的计算机。
(3)Nano的主要接口
① microSD卡插槽用于主存储
② 40针扩展接头
③ Micro-USB端口,用于5V电源输入或用于数据传输
④ 千兆以太网端口
⑤ USB 3.0端口(×4)
⑥ HDMI输出端口
⑦ DisplayPort输出端口
⑧ 直流桶式插孔,用于5V电源输入
⑨ MIPI CSI摄像机连接器
1.2 硬件准备
下面开始迫不及待的动手。
1.2.1 必备
- MicroSD卡与读卡器1套。因系统刷完SD卡大约13G,后续还要安装各种框架和存储深度学习模型文件,所以推荐32GB及以上容量的卡。读卡器用于将SD卡插入计算机的USB接口烧录系统。
- Micro-USB电源。Jetson Nano不包括电源,需要自己准备1根5V⎓2A的Micro USB电源线,加上手机充电头即可供电;也可以准备一个5V⎓4A的电源适配器,为后续陆续增加的外设提供功率保障。
- USB键盘鼠标。
- 网线。Nano官方提供一个Ubuntu18.04系统,在该系统的基础上,安装和更新必要的包时必须联网。
- 上网计算机1台。用于烧写microSD卡等。
1.2.2 选配
- USB接口摄像头或CSI接口摄像头1个。用于AI机器视觉项目验证。
- 无线上网模块1个。Nano有一个千兆网口,只能有线连接上网。
- HDMI或DP接口显示器1台。包括显示器和相关连接线。在配置好远程之前需要连接显示器进行必要设置。
- 小型散热风扇1个。Nano自带无源散热板,可以支持10W的模块在25°C左右的环境温度下使用。如果有额外散热需求,需要加装风扇。
1.3 在SD卡上烧写系统
在使用开发套件之前,SD卡要烧写好操作系统,以及JetPack工程所需的其他组件。最简单的方法就是直接下载官方提供的镜像文件,并且按照Getting Started with Jetson Nano Developer Kit教程操作。
1.3.1 下载镜像
官方镜像下载地址:
https://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image
下载完成解压到本地硬盘。
1.3.2 格式化SD卡
推荐使用SDFormatter软件格式化SD卡。
1.3.3 将镜像烧录到SD卡
使用Etcher软件写入镜像。打开Etcher软件,依次点击:
[Select image] 打开下载的镜像文件-->[Select drive] 选择microSD卡-->[Flash!] 烧录,大约30分钟完成。
将烧录好镜像系统的microSD卡插入Nano的卡槽
1.4 网络连接
以下两种方法之一可以实现Nano上网。
- 使用网线连接路由器的LAN口
- 安装无线模块(需要另购)
1.4.1 安装无线模块
安装无线模块需要将Nano的主芯片从主板上拆下来:卸掉两个螺丝,然后轻轻将散热片两侧的卡锁向外拨开,此时主芯片板和散热片会弹起来,将其轻轻拔出插槽;将无线模块安装在位于主板上的插槽中,重新安装主芯片板。如图所示。
装好无线模块,开机后找到wifi信号连接即可。
1.4.2 设置静态IP
如果需要,也可以设置静态IP,方便远程连接。
以无线连接为例。在桌面右上角无线连接中,选择[Wi-Fi设置],点击连接的[齿轮]设置符号,修改[IPv4连接方式]为[手动],添加静态IP地址,子网掩码和网关信息,重启后生效。如下图所示。
1.5 供电
Nano的供电方式为以下三种方式之一:
(1)Micro USB供电
默认供电方式。用手机充电器+Micro USB线连接J28接口。
(2)5V⎓4A的DC电源供电
如果连接的外设模块比较多,导致总电流需求大于2A的话,可以先用方形塑料帽连接J48引脚的跳线,切换成5V⎓4A的DC电源供电(接受带有2.1×5.5×9.5 mm电源插头)连接J25接口。连接J48引脚后Micro-USB供电失效。
(3)通过J41扩展接口上的2个5V供电
将Nano套件连接到电源时,J41扩展接口上5V电源引脚始终可用。可以使用两个5V引脚为套件分别提供3A的电源。这种供电方式一般用于外加扩展板的统一供电。例如外加电机驱动板时,只需要通过电池给驱动板供电,然后从驱动板分一路电源插入J41对应的5V供电引脚给Nano供电即可。
几个接口位置如下图所示。
我选择使用5V⎓4A电源供电。连接好显示器和键盘鼠标后就可以开机啦!开机后有一些常规设置,就不多啰嗦了,不过建议设置为上电自动启动,因为Nano没有电源开关,上电自启方便以后使用。
2. 远程连接
玩过树莓派的同学一定知道这种开发套件比较好用方式,就是让它安安静静的被远程连接,不必专门配一套键盘鼠标和显示器。这里介绍两种远程连接方式,都安装,按需取用。
2.1 远程登录终端
首先介绍最常用的SSH远程连接Nano的方法。SSH是专门为了远程登录会话和其他网络服务提供的安全性协议,用于远程连接Linux服务器。SSH连接方式有串口和网络两种。Jetson Nano串口在J41扩展接口上,本文使用网络连接。
- SHH远程优点:简单易用,Nano默认开启,无需设置
- SHH远程缺点:没有图像界面操作不便,不能显示图像,机器视觉的AI程序调试不便
用过树莓派的同学对SSH连接应该不陌生。与树莓派不同的是,Jetson Nano的系统是默认开启SSH服务,所以只要Jetson nano网络连接正常就可以直接使用SSH登录,不用另外设置。
2.1.1 获取Nano的IP
用网线将Nano与家里路由器的LAN口连接上网。然后打开终端,执行ifconfig命令获取IP,如下图eth0接口的IP为10.0.0.107
2.1.2 SHH远程登录
Windows系统可以使用PuTTY或者XShell软件使用SHH远程登录Nano。
(1)使用PuTTY实现SSH远程连接过程为:
① 打开PuTTY软件,输入Nano的IP地址(SSH默认端口是22)
② 点击Open连接Nano
③ 客户端服务端进行联机加密认证
④ 认证通过联机成功
(2)使用XShell实现SHH远程
这里特别推荐使用XShell远程,因为它功能更丰富,使用更方便:
- 可以记录账号密码,连接后自动登录
- 可以为不同的主机设置个性化描述
- 可以同时打开一个主机的多个终端
- 可以同时打开不同主机的多个终端
功能基本都简单易懂,就不再啰嗦了。
上图为XShell管理多个主机的不同连接。
2.1.3 SSH图形化工具WinSCP
下面一鼓作气安装WinSCP图形化SHH工具,可以用于后续将模型文件从自己的电脑传输到Nano,非常方便。
WinSCP下载地址:https://www.onlinedown.net/soft/20088.htm
安装完成后,直接输入上一步得到的Nano的IP、主机用户名、密码即可访问Nano的文件系统。
连接后可以执行各种文件传输等操作,例如直接将左侧本地文件上传到Nano的指定文件夹。
试试鼠标从左边把文件拖到右边,再从右边拖到左边,开不开心?
2.2 远程登录桌面
- 桌面远程优点:操作直观方便,可以显示程序运行的视频或图像结果。
不同系统之间的桌面远程大家很熟悉了,实现的方法主要有3种(或更多):
- Teamviewer:最好的远程软件,没有之一。悲剧的是,Nvidia Jetson主板运行64位版本Ubuntu的ARM64处理器,而TeamViewer不直接支持该处理器。也就是不支持Jetson系列开发套件。
- 共享桌面 (Desktop Sharing):Ubuntu系统有Desktop Sharing功能,可以使用windows系统远程登录Ubuntu,但由于Nano定制版的Ubuntu系统少了许多东西,导致桌面共享有问题,解决起来需要比较繁琐,所以直接忽略此方式。
- VNC远程:适合Nano,简单易行,推荐。
VNC的条件为:远程的ubuntu机器已经登录进入桌面,且已经开启vino-server,则在远程使用vnc-viewer可直接连接。因此,要做两件事:
- 在Nano上安装vino-server
- 在Nano上启动vino-server。
2.2.1 安装VINO:VNC Server
打开Nano终端,依次执行
sudo apt update
sudo apt install vino
2.2.2 设置VINO登录选项
依次执行
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false
2.2.3 将网卡加入VINO服务
执行,查看网卡UUID
nmcli connection show
显示如下,我们使用的是有线网络,因此拷贝第一行Wired connection 1的UUID
将UUID拷贝粘贴到如下命令的单引号[‘your UUID’]之间,并执行
dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['your UUID']"
export DISPLAY=:0
2.2.5 VNC测试登录
(1)在windows上安装VNC软件
在自己电脑的windows系统中安装VNC viewer
下载地址:https://www.realvnc.com/en/connect/download/viewer/
当然,其他地方应该也可以下到绿色版。
(2)在Nano上启动vino-server
Nano上执行
/usr/lib/vino/vino-server
显示如下,表示成功
本指令执行后,终端不关闭,在windows系统打开VNC viewer软件执行如下操作登录Nano:
[File] --[New connection].. 输入登录信息-- [ok]
- VNC Server: 输入Nano的IP地址
- Name:输入Nano的用户名
第一次连接会弹出警告信息,点击[continue],如果出现绿色大眼睛则大功告成!
2.2.6 添加开机启动vino-server
我们希望每次Nano上电开机后,自动启动vino-server,只需要将上述命令加入开启启动选项,这样就彻底接键盘显示器的麻烦了。下面快来设置吧!
在Nano的Ubuntu系统左上角dash中搜索application会出现“开机启动应用”设置,或者通过命令打开“开机启动应用”设置:
sudo gnome-session-properties
打开Startup Applications应用,添加如下开机启动内容
- 名称:StartVinoServer
- 指令:/usr/lib/vino/vino-server
重启Nano,试试能否直接从VNC再次登录吧!
2.3 安装Jtop监控运行
最后,安装Jtop实时监控Nano的运行状态。
执行安装命令
sudo pip3 install jetson-stats
安装完成后,终端运行
sudo jtop
可以远程查看系统运行的动态信息:
Jtop有四个页面监控Nano运行状态,ALl, GPU, MEM, CTRL和INFO信息,使用左右键切换页面。下图为GPU状态。
本文更新链接:
https://blog.csdn.net/iracer/article/details/104453423
新书终于面市啦,《机器学习原理与编程实战》,连接原理与实战:
https://blog.csdn.net/iracer/article/details/116051674?spm=1001.2014.3001.5501
参考文档
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit
https://blog.csdn.net/hhaowang/article/details/101109805?utm_source=distribute.pc_relevant.none-task