Nvidia Jetson
The Jetson Family
Nvidia's Jetson family of products are compact system-on-a-chip Tegra computers with integrated machine learning accelerator hardware. The models differ in their computational performance and in price.
JetPack
JetPack is Nvidia's name for a software bundle that contains development software and a modified version of Ubuntu Linux with a custom kernel for the Tegra hardware.
Jetson Nano
The Nano is the Jetson with the smallest footprint and lowest performance. It features 128 compute units based on the Maxwell architecture.
Power Supply and OS Installation
The Nano Developer Kit requires a power supply that can deliver 5 V and at least 2 A, either over the micro USB port, or (after connecting the J48 header pins with a jumper) via a standard power jack (5.5 mm outer, 2.1 mm inner diameter). When operated via the power jack, the micro USB port can be used to install the Nano operating system from an external computer. Otherwise, the OS image needs to be written to a micro-SD card that is inserted into the card slot of the developer kit.
Setting Up SSH
The developer kit features HDMI and DisplayPort outputs for connecting to a display. In a robot, the control interface for the Jetson Nano will be a terminal session via SSH. To set up the SSH service on the Nano first make sure that the ssh package is installed:
sudo apt install ssh openssh-server
You can now start the SSH service like this:
sudo service ssh start
and stop it like this:
sudo service ssh stop
To make the SSH service start automatically at each boot, type
sudo systemctl enable ssh sudo systemctl enable ssh.service sudo systemctl start ssh
To prevent the system from starting the SSH service at each boot, type
sudo systemctl stop ssh sudo systemctl disable ssh sudo systemctl disable ssh.service
SSH Login Over WiFi Connection
The Jetson Nano Developer Kit comes without WiFi connectivity. You can use a USB WiFi adaptor stick (e.g., Edimax ) to add WiFi connectivity. On Ubuntu, you will need to give permission to the system to make the WiFi connection available to all other users, which includes the SSH daemon, in order to enable remote logins over WiFi without requiring an active local login session (via connected peripherals or Ethernet connection).
To give permission,
- open the "System Settings" application,
- go to "Network",
- make sure "Wireless" is selected on the left panel,
- on the right side panel, next to the SSID of the WLAN server, click on the arrow icon,
- click on the "Settings..." button on the bottom right corner,
- in the window that opens, go to the tab "General",
- check the "All users may connect to this network" option
Preventing the Graphical User Interface From Being Loaded
Ubuntu uses systemd to control whether the graphical user interface is loaded and shown. To turn off the graphical desktop immediately enter
sudo systemctl isolate multi-user.target
To prevent the GUI from being loaded during the system startup, type
sudo systemctl set-default multi-user.target
To return to the graphical desktop, type
sudo systemctl isolate graphical.target
and to make the graphical desktop the default again, type
sudo systemctl set-default graphical.target
Power Modes
Use the "nvpmodel" command line tool for selecting or configuring the performance level of a Jetson device.
On Jetson Nano, the preconfigured power modes are
- MAXN (mode #0): the default mode with maximum performance
- 5W (mode #1): low-power mode where only two out of four CPU core are working and the GPU clock frequency is constrained.
You can query the current mode via
sudo nvpmodel -q --verbose
and switch between modes with the "-m" option like this
sudo nvpmodel -m 1
Create your custom power mode by editing "/etc/nvpmodel.conf"
sudo vim /etc/nvpmodel.conf
Camera
Cameras can be connected to Jetson Nano over USB or over the CSI connector. In case of a CSI camera, the image sensor must be a Sony IMX219.
Use the Video For Linux utilityv4l2-ctl to list all video inputs that are available to the system and what type of image frames they provide.
sudo apt install v4l-utils v4l2-ctl --list-devices v4l2-ctl --list-formats