Problem with SDK manager

Hello the community,

Nvidia´s product is new for, as embedded system.
I installed a virtual machine in my windows computer, and I installed sdk manager. I coped with difficulties. I selected 2.6GB of RAM for the VM, but sdk manager needs 7.5GB of RAM, and my computer has only 6GB. How can I do ?

Thank you by advance,

Normally VMs are not supported, although they might work if set up correctly. In terms of RAM, I can make some guesses (but this may not be enough).

Some kinds of processes require physical RAM, but others can work with virtual memory (such as with swap space to extend physical RAM). So far as I know SDK Manager won’t have any special physical memory requirements, so you might try adding swap to the Linux o/s. Keep in mind that if you do this, and if it works, that this will run extremely slow. You’d be using almost three times your physical RAM with a hard disk replacement…that is slow.

For swap in Linux (I am unsure how the VM affects this) there are a lot of web pages describing how to do this. One such URL, specific to Ubuntu 18.04, is this:
…however, this URL only uses one gigabyte (“1G”), and for this case, you probably want to add 8 gigabytes (“8G”), so edit the gigabyte and use 8 instead.

Do keep in mind that your VM already needs a lot of disk space. When creating a flash image the entire partition for the rootfs on the Jetson is created on the PC, and that is just a single file (there is a lot of other space needed for other things as well).


Thank you very much for your answer. I am going to invistigate this way.

One more question. Using of linux is the only way to flash the jetson TX2 ? Can I install jetpack sdk from USB key ? Because if the VM isn´t supported, I havn´t got other solutions, and I can´t run my computer with linux only, or even install linux in dualboot.

Thank you,

As you suggested, I increase my swap partition.
The sdk manager´s window display the same thing, that I just have 2.6 GB of RAM, but the partition is correct :

nvidiavm@nvidiavm-VirtualBox:~$ sudo free -h
[sudo] password for nvidiavm:
total used free shared buff/cache available
Mem: 2,6G 527M 1,6G 11M 458M 1,9G
Swap: 8,0G 0B 8,0G

It is a problem ?

Thank you,

It does look like SDKM is demanding that amount of physical RAM, so on a system with 8GB RAM, there would never be enough if run as a VM. You can in fact install to a USB thumb drive if certain conditions are met, but I’m not sure I would advise someone to do this without experience.

To start with, if you have insufficient disk space and cannot add an Ubuntu 18.04 partition with all of the space you need, then it is not difficult to instead add an Ubuntu 18.04 dual boot partition which is “just big enough to boot and have temp space”, followed by using an ext4 formatted USB thumb drive for the required extra space the flash software will use. The issues of booting directly to a USB thumb drive may depend on the motherboard capabilities and not something one can answer without knowing the specific motherboard. Dual booting to a more cramped Ubuntu partition is fairly simple (relatively speaking).

Installing directly to a USB thumb drive (or any external device which is hot plug) may not be all that easy since it involves a bootloader.

Windows should be able to reduce the size of its boot partition, which in turn could leave enough space for a more minimal Ubuntu install. I think the docs say a minimum install requires 25GB, and actual partitioning is not 100% efficient, so you would need to reduce your Windows partition by a bit over 25GB minimum (I might even recommend 50GB for various other software and updates which continue to exist even when not flashing Jetsons, but you could get by with less). After this, then a USB thumb drive formatted for ext4 file system type, and with perhaps 35GB or more of space, could be temporarily mounted in the correct place for all of your flashing space needs, or removed when done.

Ok so I do not have other option, I have to install Linux.

Actually, my jetson is running with the jetpack 3.1.
Can you explain me why I can´t update directly from the Jetson ?

Thank you for your help.

This is probably a bit more than you are asking, but people have asked before, so it might be useful trivia to anyone reading…

A desktop PC has a BIOS (or UEFI in modern boards). That BIOS performs a number of clock and power rail setup stesps, plus has drivers for all of the I/O (SATA, PCI, USB, ethernet, so on). A uniform API is presented to the bootloader for a PC such that bootloaders can expect certain functions to be available and called in a certain way no matter which motherboard manufacturer and CPU manufacturer combination is encountered.

Embedded systems do not have any BIOS. All of the power rail and clock and I/O setup are done from custom software. Every single embedded system has its own customization. Typically some generic drivers exist in U-Boot, but in many cases the hardware is not generic, e.g., the PCIe controller might work with some generic chipset out of the U-Boot public software, but in many cases PCIe or other driver support might mandate the manufacturer porting their driver into U-Boot. GRUB is far simpler than booting an embedded system since it has so much less work to do (the BIOS does that work for GRUB) and so much less knowledge is required of it.

This is further complicated in Jetsons because of the earlier boot stages, e.g., CBoot, currently needing some device tree information earlier than U-Boot…and it is U-Boot which can read ext4 filesystems, and so the device tree itself must become a binary partition. Device trees in turn are custom information. I suppose it is possible build a device tree into some sort of boot CD/thumb drive if and only if all of those drivers for the CD filesystem type and USB/SATA/similar drivers are available in recovery mode, but recovery mode is much more primitive than a full BIOS.

If you were to add a full BIOS, then you could expect size, cost, and power consumption to go up dramatically (at least in comparison to size and power requirements without a real BIOS).

Recent times have motivated more secure devices (secure boot), and this just complicates it further when doing this from software. Then there is the whole bootloader redundancy, also done in software, adding to that complication. Even if you do not personally use those features, the hardware has to make this possible. Only a small amount is done in hardware (such as fuses), which makes all of that software for secure boot and redundancy yet more complicated.

The recovery mode Jetson is more or less a very simple (depending on how you look at it) interface. About all you have available is a memory controller and eMMC/RAM setup, along with a few basic abilities. The host PC creates all of those binary files which the BIOS would have replaced, and directly flashes it to the eMMC…the function of creating all of that content would be a bit overwhelming from a small embedded device.

A good reason why the host PC runs Linux is that standard Linux tools are being used to create images, and of course most operating systems have no concept of the ext4 filesystem type. All of those tools are standard and free and very high quality on Linux. You could write your own program which recreates Linux capabilities on another operating system…or you could just use Linux without all of that work.

NOTE: In JetPack4.3, once you have installed this, then over the air methods have been made to allow future updates without a full flash environment. However, you need a running system flashed from the JetPack4.3+ release at the moment of each upgrade. This is new.

Thank you very much for your comprehensive answer !

I installed ubuntu 18.04, and flash my jetson TX2. But now, I cope with another issues. The USB isn’t detected. I tried to change the USB port, but it doesn’t work. I also tried to change the IPV4 adress of my host computer, but nothing happened. Can you suggest an other solution ?

As ubuntu 18.04 is now installed on the Jetson, is it possible to install sdk product direclty from the jetson ?

Thank you very much,

When you have your Linux install on the PC running, the command “lsusb” lists USB devices visible. A VM tends to fail at this, but your Jetson should show up if and only if:

  • The Jetson is in recovery mode.
  • The micro-B USB cable is connected from Jetson to host PC.

In USB NVIDIA has manufacturer ID 0955 (hex), and the TX2 is specifically device ID 7c18 (hex) within that manufacturer ID. So, if a TX2 is connected via recovery mode micro-B USB, then you should some output from this command:

lsusb -d 0955:7c18

Are you using the provided micro-B USB cable, and is the Jetson in recovery mode?

There is on possibility of the Jetson being able to self-install or run JetPack…wrong architecture.