WSL2 flashing with NVIDIA SDK Manager

Hi,
I’m trying to flash a Jetson Orin Nano with a new version, specific 5.1.2.
Currently I’m getting the following error message in step 3 Step 3: Start the flashing process:

Waiting for target to boot-up...
Unknown device "/sys/class/net/bonding_masters": No such device
Unknown device "/sys/class/net/bonding_masters": No such device
Waiting for target to boot-up...
Timeout
Cleaning up...

I did everthing described in here:

https://docs.nvidia.com/sdk-manager/wsl-systems/index.html#wsl-systems-flash-jetson

I’m currently using the following WSL2 version:

wsl --version
WSL-Version: 2.0.9.0
Kernelversion: 5.15.133.1-1
WSLg-Version: 1.0.59
MSRDC-Version: 1.2.4677
Direct3D-Version: 1.611.1-81528511
DXCore-Version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows-Version: 10.0.19045.3693

What could be the reason for this error?

1 Like

Technically, no VM is supported. Each has its own setup, and the flash software cannot assist in any way (that is in fact one of the purposes of a VM: Security that cannot be modified by the software running in it).

Some people do get VMs to work. One problem is usually that USB disconnects and reconnects during a flash, but reconnect fails if the VM is not set up correctly. This does not appear to be the issue in this case.

Unless it has been set up properly (and how to set it up is beyond my ability), it is quite probably that the WSL2 kernel is missing a feature, e.g., loopback. Loopback mode is used when creating a rootfs image.

One other problem is that if you use this with a Windows filesystem type, e.g., NTFS or VFAT, that the flash will “appear” to succeed, but in reality the Jetson boot will be highly crippled.

Mostly you are advised to use an actual Ubuntu 20 install. Dual boot is reasonably easy to add if you already have the disk space. You could divide existing space, but adding a second drive makes installing Linux fairly easy.

It might also be possible to use a “live” distribution whereby you are trying out Ubuntu 20, and it runs in RAM, but doesn’t actually install it until you tell it to. You’d still need sufficient ext4 filesystem, and it does take a lot. After the operating system install you’d probably want at least another 100 GB of space before any kind of use in flashing (I’d personally suggest another 50 GB on top of that).

Ok, I understand, but it would be good to know under which conditions it is possible via WSL2. For example, which kernel was used, etc.

Unfortunately, a native Linux is currently not so easily possible.

For this reason, the question is not yet answered for me.

Someone else would have to answer the WSL2 conditions, it is something I don’t use. 100% of the older WSL2 installations required loopback customization of the kernel. I don’t know about the most recent versions.

Hi,

I’m sorry but our documents only verifies cases with AGX Orin, which is to be flashed internally with flash.sh. For Orin NX/Nano that requires initrd flash, we don’t validate such use cases.

Anyway, seems like WSL kernel you use does not enable the bonding driver, which is required in the case of initrd flash.
For example, this is enabled on my Ubuntu 18.04 PC

davey@dave-yu-nvidia-pc:~/Downloads$ cat /boot/config-$(uname -r) | grep BONDING
CONFIG_BONDING=m

I’m not sure why it’s not there because it should be enabled by default:

You may enable that driver and build the kernel again to see if it solves the issue.

i am in the same condition, trying to install Jetpack on a Orin Nano 8gb Dev Kit with 1TB SSD:

stuck at 99%:

lsusb:

image

usbipd command:

if anything else is needed @DaveYYY , let me know so i can provide with better information for the solving of the issue.

thanks.

The APX says it is likely a VM. The same answer as originally posted is that the VM probably lacks some feature, e.g., maybe it is not holding the USB for a disconnect/reconnect, or (in the original case) the VM kernel lacks a driver (that example is bonding). There is no way for the flash software to know about, nor to configure, a VM host. You’d have to figure out the VM configuration and kernel update yourself.

After some research, I have now found a way to perform an update with the help of a WSL. Many thanks for your support.

Here is the procedure that worked for me:

Upgrade Jetson Orin Nano from a third party provider

  1. Create new WSL env
  • wsl --update
  • wsl --install Ubuntu-20.04
  1. Get WSL2-Linux-Kernel (GitHub - microsoft/WSL2-Linux-Kernel: The source for the Linux kernel used in Windows Subsystem for Linux 2 (WSL2))
  • sudo apt-get update
  • sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev bc
  • Use custom config file: Flash Jetson Orin Nano WSL2 - #9 by henkman
  • make KCONFIG_CONFIG=Jan/config
  • copy vmlinux to /mnt/c/temp
  • Set in C:\Users\<UserName>\.wslconfig
[wsl2]
kernel=C:\\temp\\wsl-kernel\\vmlinux
  1. SDK Manager
  • sudo apt install iputils-ping iproute2 netcat iptables dnsutils network-manager usbutils net-tools python3-yaml dosfstools libgetopt-complete-perl openssh-client binutils xxd cpio udev dmidecode -y

  • sudo apt install linux-tools-virtual hwdata -y

  • sudo update-alternatives --install /usr/local/bin/usbip usbip 'ls /usr/lib/linux-tools/*/usbip | tail -n1' 20

  • Download Debian package for SDK Manager

  • sudo apt install ./sdkmanager_[version]-[build#]_amd64.deb

  • Fix due to missing qemu-system package:

sudo apt-get install qemu-user-static
sudo update-binfmts --import qemu-aarch64
sudo update-binfmts --import qemu-arm
sudo update-binfmts --import qemu-armeb
  • Enable systemd
    • sudo vi /etc/wsl.conf
 [boot]
 systemd=true   
  • wsl --shutdown
  • Install some liberaries for the visualization of the sdk manager (I forgot to write them down)
  1. Upgrade Device
  • Apply third party files
  • usbipd.exe wsl attach --busid 1-1 --auto-attach --distribution Ubuntu-20.04
    • might not work in some corporate enviromnents due to firewalls which blocking the network connection of the usb device
    • I also restartet this command after Unknown device "/sys/class/net/bonding_masters": No such device but I am not sure if this is necessary
  • Use flash.sh to install new firmware package (or in my case a flash script from the third party provider which calls flash.sh with some parameters
2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.