I’m trying to use SDK Manager docker container to flash Jetson AGX Orin devkit. Whatever I do, the flash process always fails at this stage:
info: Waiting for target to boot-up...
info: Waiting for target to boot-up...
info: Waiting for target to boot-up...
Waiting for device to expose ssh...
RTNETLINK answers: File exists
RTNETLINK answers: File exists
Waiting for device to expose ssh...
Run command: flash on fc00:1:1:0::2
SSH ready
mount.nfs: Connection refused
Flash failure
Cleaning up...
Below are my observations and attempts to figure out what’s going on (please take them with a grain of salt):
Initially the error was a little different: the “mount.nfs: Connection refused” part was missing (everything else was the same: reboot, ssh ready, and then flash failure, with no additional logs). I tried to debug it and found out that usb network interface (enp0s20f0u3 in my case) was being claimed by network manager, and after some time destroyed by it.
Another symptom was that for some short period of time after jetson reboot, I could successfully ping it by ipv6 address fc00:1:1:0::2
. But after this line appeared in journalctl, ping no longer worked:
NetworkManager[666]: <info> [1704560130.6036] device (enp0s20f0u3): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-iface-state: 'managed')
After that I decided to exclude this interface from networkmanager by following this guide. It appeared to have worked, and after another jetson reboot I could successfully ping it and ssh into it:
Then I looked into ps aux
to figure out what was the sdkmanager doing, and it looks like it just executes /bin/nv_flash_from_network.sh
. Somewhere inside this script it tries to mount the nfs from the docker container (I suppose). And it’s probably what is causing the mount.nfs: Connection refused
error.
That’s all I have so far… Any advice is welcome. However, please don’t suggest to use an Ubuntu and/or GUI version of sdkmanager: I know it will probably work, but I want to figure out the solution using docker, because it’s much more portable and easier to automate.
Some debug info you may want:
Host OS: Manjaro Linux x86_64
, kernel: 6.5.13
SDK manager docker image: 2.0.0.11405-Ubuntu_22.04
, hash: 16af7c06fd7a
Jetson install target: NVME SSD
Command used to start the container:
docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb/ -v /dev:/dev -v /media/$USER:/media/nvidia:slave --network host sdkmanager:ubuntu-22.04 --cli
Effective sdkmanager command (was configured interactively)
sdkmanager --cli --action install --login-type devzone --product Jetson --target-os Linux --version DP_6.0 --target JETSON_AGX_ORIN_TARGETS --additional-sdk 'DeepStream 6.4' --flash --license accept