JetPack install from an Ubuntu VM host on a Mac

Here are the steps I took to install Jetpack L4T_3.1 on a Jetson TX1 using an Ubuntu Virtual Machine on a Mac Mini as the Host
Date: 15th September 2017

My setup was:
Mac OSX El Capitan 10.11.6 running on a Mac mini
VirtualBox 5.1.26 with VBoxGuestAdditions
Ubuntu ubuntu-16.04.3-desktop-amd64

The Mac and Jetson are connected to the router by Ethernet cables
A USB cable connects the Mac to the micro USB connector on the Jetson

The Jetson TX1 has been setup with a basic Ubuntu install by following these instructions
https://www.youtube.com/watch?v=WFUcGGuWhdk

Before you start working with JetPack, you need to configure the Ubuntu VM so it can access the Ethernet interface and the Jetson TX1 USB interface.

Important
Setup the Jetson TX1 is Force Recovery Mode now and leave it like that - you need to do this so that it appears in the Virtual Machine USB settings

Disk Space
The Ubuntu VM needs enough disk space so set this to 64GB when you create it - 25GB was not enough

Under the VM Settings:
** Do this BEFORE you start the VM **

Network -> Enable Network Adapter; Bridged Adapter, en0: Ethernet

Ports -> USB -> Enable USB Controller; USB 3.0 (xHCI) Controller … and then
In the USB Device Filters section, add a new filter by clicking the ‘plus’ icon on the right
You should see NVIDIA Corp. APX [0102] - add that
If you don’t see it, try resetting the Jetson TX1 into Force Recovery Mode again
If the Enable USB Controller text is greyed out then your VM might already be running. Shut it down and try again

What you are doing here is ‘claiming’ that USB device for the VM - the Mac and VM cannot share a USB device.

If you’ve done that then start up the VM and open a Terminal window (right click on the desktop)

  • run ‘ifconfig’
    You should see an IP address on your network under the Ethernet interface
    This will have a different name on the VM - in my case it was enp0s3 instead of en0 but the IP address was in the correct range

  • run ‘lsusb’
    You should see the NVIDIA device in the list:
    Bus 001 Device 003: ID 0955:7721 NVidia Corp.

If both of those are correct then you can move on to installing JetPack

I just followed these instructions from NVidia:

http://docs.nvidia.com/jetpack-l4t/3.1/index.html#developertools/mobile/jetpack/l4t/3.1/jetpack_l4t_install.htm

You’ll download the installer and run it on the Host
What that does is:

  • downloads software packages
  • build a boot image for the TX1
  • flashes that to the TX1 over the USB interface
  • ssh into the TX1, transfers packages, unpacks and installs them

When a window pops up asking you to put the TX1 into Forced Recovery Mode, then just hit Return - you’ve already done this

This all takes a while - there are a lot of moving parts - but if all goes well it will complete and boot up a new Ubuntu desktop on the TX1
Note that the new session is under user ‘nvidia’ - the default password is ‘nvidia’

If it all works then go to the TX1 and cd to:
~/NVIDIA_CUDA-8.0_Samples/bin/aarch64/linux/release
and run
./smokeParticles

You’re up and running - now on to the fun stuff…

Great guide, thanks for sharing! Perhaps you might be interested in re-posting it to the eLinux wiki for others to find?

One small disclaimer, you probably realize that flashing JetPack from VM isn’t officially supported, and although it’s good you were able to get it working with your configuration, it may not be 100% reliable all the time for everyone. Of course you are welcome to try it any way!

The USB connection gets broken in the process, using VirtualBox VM on Windows 10 for Workstations host. It worked in VMWare Workstation Pro 15, though.

For my Mac OS (Majove) host system, running VirtualBox, I had to enable the USB 3.0 (XHCI) controller for my Ubuntu guest, and pre-select two Nvidia related USB devices. They have to be exclusive to the VM from the start, because during the process the USB connection/Xavier board reboots and such. The host OS will take back the USB devices and the process craps out.

“NVIDIA Corp. APX [0102]”
“NVIDIA Linux for Tegra [0001]”

Given the nature of this product, I would prefer command line, open source tools for these setup steps.