Failure to run SDK Manager from official docker image

I’m new to all this so please bear with me.

I’m trying to flash a Jetson TX2 device with 4.4.1.

The last few days I’ve tried probably all combinations, booting from usb drive on plain Ubuntu 18 LTS, etc. After many failed trials I found this:

https://docs.nvidia.com/sdk-manager/docker-containers/index.html

which to my undestanding is the ULTIMATE way to get a controlled environment in which sdkmanager can be run, without the risk of any interference from the host, missing dependencies, misconfiguration, errors in the procedure, etc.

Well, it FAILS.

At the begining I was constantly blaming myself, it has to be this, or that, endlessly, but when I found this I thought I won the lottery, a self contained environment where NVIDIA engineers have the last word in everything, no more host or environment miseries, well, again, not the case.

As far as I know, there’s no chance of failure under docker if everything is properly defined, I wonder then how this could be happening. The whole idea is to execute those few steps and be ready to go.

As seen in the pic the error is when it tries to exec

'dpkg': Exec format error

that smells to me as an attempt to run a binary that is meant to ARM in X86 or viceversa, but again, isn’t that the magic inside the docker image should fix all that? For instance qemu or whatever should be used to flash a device?

Environment and procedure:

Environment to BUILD the container ONLY: Ubuntu 18 LTS VirtualBox VM

Note: I know that VMs don’t get well with flashing BUT at this stage I’m only trying to build the container (basically download everything and then commit the container and NOT actually flashing even though):

Procedure:

$ docker load -i sdkmanager-1.4.0.7363_docker.tar.gz

$ docker tag sdkmanager:1.4.0.7363 sdkmanager:latest

$ docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ --name JetPack_TX2_Devkit sdkmanager --cli install --logintype devzone --product Jetson --target P3310-1000 --targetos Linux --version 4.4.1 --select 'Jetson OS' --deselect 'Jetson SDK Components' --license accept --staylogin true --datacollection enable

Results:

One thing that is maybe relevant is that the log says that QEMU bin was not present (isn’t it supposed to be provided in the dockerfile as one of many dependencies?). It finally tries and installs it from the host (Ubuntu 18 LTS), see details:

info: Start L4T BSP package installation
info: QEMU binary is not available, looking for QEMU from host system
info: Found /usr/bin/qemu-aarch64-static
info: Installing QEMU binary in rootfs

So, I’m puzzled here. I’m not sure what to do to be honest, this official docker image was my silver bullet after so many failures.

What am I doing wrong?

Thanks in advance!!

Hi,

Thanks for reporting this to us.
We are checking this internally. Will update more information with you later.

Thanks.

1 Like

I just wanted to mention that this is a problem with the Jetson Nano target as well.

im having the same problem. its complaining that the jetson nano image exists already so it fails to flash. and im not able to skip that part

docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ --name JetPack_Nano1_Devkit sdkmanager --cli install --logintype devzone --product Jetson --version 4.5 --targetos Linux --host --target P3448-0000 --flash all --additionalsdk DeepStream --license accept --staylogin true

Hi,

Thanks for all of your information.
We are checking this issue internally. Will get back to you later.

1 Like

Hi,

We have double checked the tool.
And be able to flash the device without any issue.

Here are our steps:

  1. Download and install Docker engine

  2. Enable managing Docker as a non-root user

  3. Load Docker image:

    docker load -i ./sdkmanager-1.4.0.7363_docker.tar.gz docker tag sdkmanager:1.4.0.7363 sdkmanager:latest

  4. Flashing with below CLI:

    $ docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ --name JetPack_TX2_Devkit sdkmanager --cli install --logintype devzone --product Jetson --target P3310-1000 --targetos Linux --version 4.4.1 --select ‘Jetson OS’ --deselect ‘Jetson SDK Components’ --flash all --license accept --staylogin true --datacollection enable --exitonfinish

Please noted that you will need to update the --target based on the board you used.
Here are the corresponding value for your reference:

Device Target
Xavier-16GB P2888-0001
Xavier-32GB P2888-0004
Xavier-8GB P2888-0006
NX SDcard P3668-0000
NX EMMC P3668-0001
TX2 P3310-1000
Nano SDcard P3448-0000
Nano EMMC P3448-0002
Nano-2GB P3448-0003

Thanks.

Hi!

I can confirm that this works. I was using interactive selections previously, and this does not work.

ohh ok… by the way we are on Jetpack 4.5 at this point. i see the command line you used has Jetpack 4.4.1 is that just an example of you telling me " run your command line non interactively?" or are you actually also saying i should use jetpack 4.4.1 ?

the next commenter said sdkmanager docker doesnt work interactively yet but worked non interactively for him. what specifically on this command line are the parameters that make this “non interactive”? thanks