JetPack 3.0/3.1 Install with a VM

I have successfully installed JetPack 3.0 using an Ubuntu 16.04 virtual machine. In my case the VM was running on my MacBook using VirtualBox.

  1. For previous JetPack installs 2.3.1, 2.3, etc, an Ubuntu 14.04 VM worked. It does not anymore. You must create a new VM based on Ubuntu 16.04.

  2. Initially my host connection was via WiFi to the router and from the router ethernet to the TX2. I tried ethernet from the host to the router and out to the TX2. Both of these methods caused the script to prematurely end after the initial flashing. However you can do the loading in two parts.

  3. From your VM host execute

  4. All steps will complete through the “Flash OS Image to Target”. At this point the script will say it can’t find the IP address of the TX2. It may ask if you want to manually enter the IP address. Selecting that option makes the script quit. But at this point your TX2 would have rebooted successfully, however the VisionWorks Pack, CUDA Toolkit, Samples, etc did not get installed. There is hope.

  5. Rerun the

  6. This time instead of doing a Full install do a Custom.

  7. Go to “Flash OS Image to Target” and select the action to be “no action”

  8. Now only the steps listed under “Install on Target” will be executed.

  9. When you select “Next” you will be prompted to enter in the IP address of the TX2 along with user (nvidia) and password (nvidia). You can just do ifconfig on your TX2 to see what your IP address is.

  10. Now the script will load the rest of the software (VisionWorks Pack, CUDA Toolkit, CUDA Samples, TensorRT, etc, onto the TX2.

  11. All is well in your Jetson world.

Update: 02/03/2018

I have successfully installed JetPack 3.1 using an Ubuntu 16.04 virtual machine. In my case the VM was running on my MacBook using VirtualBox. I followed the same steps as listed above for JetPack 3.0.

My setup:
Macbook Pro: (Retina, 15-inch, Mid 2014)
OS: 10.13.3
Virtual Box: 5.2.6r120293 using latest Guest Additions update
running Ubuntu 16.04.3 (64 bit)

Notes: I tried using Ubuntu 14.04 but ran into USB issues. I had USB 3.0 Controller enabled. Didn’t have any problems with Ubuntu 16.04. I also had to disable “Enable 3D Acceleration” under the Display settings of the VM, otherwise Ubuntu 16.04 wasn’t booting for me and freezing.

Thanks, I had all but given up on using a VM for JetPack 3.0.

Not sure how AerialRoboticsGuru did it.

I also used Ubuntu 16.04 64 bit VM with Jetpack 3.0 to flash TX2 but could not get it to work.

Advices from others asked me to use 14.04 and non-VM.

Here is my partial log:

[ 5.5839 ] Sending BCTs
[ 5.5850 ] tegrarcm_v2 --download bct_bootrom br_bct_BR.bct --download bct_mb1 mb1_bct_MB1_sigheader.bct.encrypt
[ 5.5858 ] Applet version 01.00.0000
[ 5.6059 ] Sending bct_bootrom
[ 5.6064 ] […] 100%
[ 5.6184 ] Sending bct_mb1
[ 5.6251 ] […] 100%
[ 5.9796 ]
[ 5.9797 ] Generating blob
[ 5.9808 ] tegrahost_v2 --align blob_nvtboot_recovery_cpu.bin

[ 6.3460 ] Sending bootloader and pre-requisite binaries
[ 6.3471 ] tegrarcm_v2 --download blob blob.bin
[ 6.3481 ] Applet version 01.00.0000
[ 6.3635 ] Sending blob
[ 6.3638 ] […] 100%
[ 6.8517 ]
[ 6.8559 ] tegrarcm_v2 --boot recovery
[ 6.8620 ] Applet version 01.00.0000
[ 6.8836 ]
[ 11.8866 ] Retrieving storage infomation
[ 11.8886 ] tegrarcm_v2 --oem platformdetails storage storage_info.bin
???[ 11.8906 ] Applet is not running on device. Continue with Bootloader
[ 11.9077 ]
[ 11.9102 ] tegradevflash_v2 --oem platformdetails storage storage_info.bin
???[ 11.9126 ] CPU Bootloader is not running on device.
Error: Return value 4
Command tegradevflash_v2 --oem platformdetails storage storage_info.bin
Failed flashing t186ref.

I would guess you had the Jetson in recovery mode, but to verify, before the flash attempt, did the Jetson show up via “lsusb -d 0955:7c18”?

Hello, linuxdev,

Thanks for your prompt reply.

Yes, indeed.

$ lsusb

Bus 002 Device 006: ID 0955:7c18 NVidia Corp

Prior to checking with lsusb at Linux shell and after putting TX2 into Force Recovery mode, I heard beep audio alert that the USB link has been established.

Had to have the VirtualBox 5.1.18 Extension Pack installed to enable USB & USB3 port drivers.
I verified NVIDIA Corp. APX USB Device “Filter” (Oracle calls it) was in effect.

So as AerialRoboticsGuru claimed, I believe Ubuntu 16.04 64 bit VM on VirtualBox host should be valid.

One thing which seems to throw off some VMs is using a port with USB3. It should be USB2 only. Technically a USB3 port should handle USB2 as well, but on a VM this seems to sometimes not always work as expected. Try USB2 only for the flash port.

I got this working with the Jetson TX1 - I posted the steps over on that forum

The trick is to put the TX1 in Forced recovery mode before you start the VM and then configuring the VM to control it.

Got flash JetPack via VirtualBox with Mac into TX2 working and document details and some tricks here in case you are in similar scenarios:


@Klein92: Thank you! I was able to install JetPack on my TX2 through VirtualBox on my Mac by following the steps at your link above.

The main difference in my install is I used Ubuntu 16.04:

  • macOS Sierra 10.12.6
  • VirtualBox 5.1.28
  • Ubuntu ubuntu-16.04.3-desktop-amd64
  • Jetson TX2
  • JetPack 3.1
  • @GldnBear

    Sounds great!

    I will update my repo linking to your reply to include the info that ubuntu 16.04 host vm also works.

    I also flash the jetson from inside a VM on my desktop (debian). I am using virtualbox.

    As said above, setting your VM’s USB controller to 2.0 does help. I don’t think I’ve ever got it to run on 1.0. I currently have it set to usb3.0, because it matches my desktop.

    Often times my flash will freeze in the middle of the process. I have a tricky way to unfreeze it. :^)

    Get a USB flash drive and plug it into your host computer (the computer that is running the VM). It will most times magically unfreeze the usb bus between the jetson and the VM. Your miles may vary on this one. I expect there is some sort of lock that occurs in the VM host controller and is only jostled free when it has to do some other USB stuff (like a usb drive inserted)

    Just throwing in my bits.

    USB2 and USB3 are usually handled by separate controllers with the port being routed to the correct controller. Plugging in a device which tops off at USB2 would tell it to initialize the USB2 controller.

    Thank you guys this thread among others helped me tremendously in flashing JetPack 3.1 to my new Jetson TX2 using virtual box with Ubuntu 14.04.

    1st attempt: I ran using the USB3 setting got a bootrom error that shutdown the jetpack installer.

    2nd attempt: I switched to USB2 on my VM and the flash got held up because bootrom wasnt working, however, the jetpack installer said the installation was successful after I shutdown the terminal running the installer. checked the TX2 and got the OS up and running.

    3rd attempt: I followed AerialRoboticsGuru’s suggestion to run a custom install and disabling the flash OS to target option and flashed the rest of JetPack3.1.

    Again thank you guys for being awesome!
    “11. All is well in your Jetson world.”

    Sort of unrelated, but for me it only seems to work when using nvidia as the user or pass.

    “IP address of the TX2 along with user (nvidia) and password (nvidia).”

    When using user: ubuntu pass: ubuntu the UI just does nothing. It doesn’t hang, but just sits there.

    Normally a first ssh connect asks if you want to allow the connect. If you don’t answer, it won’t connect. Manual ssh directory setup on the destination (the Jetson) can get around this…I’m speculating that perhaps the “~/.ssh/” is set up for user nvidia, but not for user ubuntu. If this is the case, then a manual ssh from your host to user ubuntu from the same user which runs your software might offer a clue as to whether basic ssh setup is the issue.

    @linuxdev That is what I was thinking, but ~/.ssh is already setup with known hosts and authorized keys.

    The frustrating part is it just hangs. I feel there is a window being hid some where when using the ubuntu user that I need to confirm as you mentioned. Oh well, regardless I got my packages installed via nvidia user!

    Sometimes something in an install will change, e.g., an address, and then ssh will refuse because it thinks there is a man-in-the-middle. Try command line and see if ssh refuses based on thinking something is wrong.

    Hi mr_337, I just performed this procedure again on my TX1 but this time with JetPack 3.1 last night. I’ve never tried the ubuntu user. I have only used nvidia.

    If anyone wound up this far and still can’t get it to work, I had some further troubles than the other posters described yet found a working solution described here: deep-learning-or-unlearning-experiments/code/mac-vm-jetsontx2-setup at master · J-Fo-S/deep-learning-or-unlearning-experiments · GitHub

    hope it helps

    Just a head up to record my situation/workaround in case it is usable for you:

    Here is my environment -

    Host: windows 10
    VM: virtualbox & Ubuntu 16.04
    JetPack: 3.1
    Target: TX2

    The problem is the flashing process will hang at the beginning after flashing.
    I connect the serial TTY to see what is happening on the target TX2.
    It seems it is rebooting and re-enumerate USB.

    I plug out the micro USB cable and plugin it again, then the flashing process resumed!