Booting up Jetson Xavier NX

Yesterday I posted about getting the hardware together for my Nvidia Jetson Xavier NX workstation. Today’s post will focus on hooking everything up, getting an operating system installed, and getting booted up. Other than waiting for long downloads, the process is mostly painless.

Getting the OS on the SD card

The Xavier boots up to the SD card. That means the operating system must be installed on the SD card before worrying about getting the hardware all hooked up. A customized version of Ubuntu is what Nvidia utilizes for the Xavier.

There are many tutorials out there about getting Ubuntu installed on an SD card to boot. So I won’t bother blogging the details and will just summarize the steps. I used SD Card Formatter to format the SD card (never do it through Windows). Then I downloaded the Jetson Xavier NX Developer Kit from the Nvidia Jetpack developer website. This image file is large (over 6GB). Notice, you will have to create a free Nvidia developer account if you don’t already have one. Finally, I used balenaEtcher to write the image to the SD card. If you do work with images on other SBCs, you will likely already have SD Card Formatter and balenaEtcher installed.

Hooking up the hardware

The only kind of pain when installing the hardware is the microSD card. It gets installed under the board, which has the fan mounted on top. It is on the opposite side of the board from the USB ports. The picture below shows its location. The pins have to be facing up when the card is inserted.

Location of the microSD card slot on the Nvidia Jetson Xavier NX.

The Xavier has two connectors available for Pi cams. I plugged mine into slot Cam0. Just make sure to have the pins on the cable facing the correct direction. Make sure to take the two side tabs up, insert the cable, then push the side tabs down.

Where to connect the Pi cam to the Xavier.

To finish off the hardware side, I hooked up the following items:

  • Keyboard/Mouse dongle to a USB port.
  • Logitech webcam to a USB port.
  • HDMI cable to the HDMI port. I was happy to see this had an HDMI port; many SBCs seem to like mini HDMI connections.
  • Power brick to the power jack. You’ll want to do this last, as it will attempt to boot as soon as it gets power.
Keyboard/mouse, webcams, monitor, and power hooked up.

Booting up for the first time

The first time booting up takes longer than usual. This is an OEM version of Ubuntu from Nvidia. However, even with that in mind, mine seemed to take way too long to boot. I got stuck on the Linux boot screen on the following line:

A start job is running for End-user configuration after initial OEM installation.
Initial boot error.

It got stuck on that step. After searching forums, I found this had happened to other Xavier users. Whichever USB port was used to load the image will cause this if something is plugged in to that USB port on its first boot. I unplugged the Xavier and plugged it back in. That allowed it to boot with no problems.

After that, I went through the standard Ubuntu setup items. I chose the defaults for everything (except timezone) to get going with the operating system. I also accepted the default for the app partition size.

After a couple of reboots, I was at the Ubuntu desktop and ready to go. I like the desktop picture Nvidia placed there.

Xavier desktop.

Very few customizations

I was following somewhat along with Paul McWhorter during this build. But I don’t fancy as many customizations as he does. I like to keep my installs as close to the fresh install as I can. That makes it easier for when I blow it away and start all over again. It also helps as I go between different systems; I don’t have to remember what customizations I’ve done and how to replicate them.

I did visudo and disabled the password prompt for Sudo. I do that on all my Linux installs; that prompt really gets annoying.

Plus, I installed the python 3 pip and jetson stats to follow along with McWhorter’s lessons. Here were the commands used to that (from the terminal):

sudo apt-get install python3-pip
sudo -H pip3 install -U jetson-stats

From the jetson stats install, we now have access to the jtop command. Below is a cool look at the CPU and GPU usage via the jtop command.


Testing both webcams

The last thing was to test to make sure both webcams were working. To try the Logitech, I simply ran the cheese command from the terminal. It brings up the little webcam utility. There are a few filters that can be played with in the cheese app. Below is a picture of the Logitech webcam running and a look at jtop. The video feed is barely using the GPU.

Logitech cam test.

To test the Pi cam, I ran the following command from McWhorter.

gst-launch-1.0 nvarguscamerasrc ! nvoverlaysink

The video does show upside down. But this was only a test to ensure proper operation of the hardware, so orientation doesn’t matter.

Testing the PI cam in Xavier.

Ready to go

Now that I have my Xavier developers workstation going, I probably won’t do many posts about the topic for a while. These last couple of posts were more about documenting getting the workstation setup. Perhaps they may help someone out there get their own development workstation going. Who knows, though, I may blog more about the Xavier than I plan.

Song of the day: The Waiting

Really, the only part of the whole setup that took a long time was waiting for the image to download. Speaking of waiting:

Bonus Song: More Tom Petty

I can’t play a Tom Petty and the Heartbreakers video without showing this classic!

One comment

Leave a Reply