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.

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.

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.

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.

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.

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.

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.

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!
[…] I blogged about getting my Nvidia Jetson Xavier NX booted up. It’s been a day now, and I have been doing almost nothing but playing around with code. […]