Xavier NX SD card with SDK Manager

I am trying to create a bootable SD card for my Xavier NX using the latest version of SDK Manager. After using the GUI to choose my target hardware as a Xavier NX, the target software as JetPack 4.5, and setting an ext4 formatted SD card as a destination for the target image, I run SDK manager to install image on the SD card. The operation apparently succeeds (I skip flashing the Xavier NX since it does not have bootable media yet), but upon insertion of the SD card into the Xavier NX and attempting to boot it up, it only runs a few successful tests before returning this error: mount: wrong fs type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error. I would really appreciate any guidance as to what I might be doing wrong here.

My goal is to eventually be able to build a kernel with a modified driver, which is why I am not using CLI and dd or an etcher to create the SD card (the tutorial for a modified kernel assumes SDK Manager was used to create the card I believe), but so far I am stuck at this first step of creating bootable media via SDK Manager.

Hello,

Could you elaboarte more about what you were doing?

After using the GUI to choose my target hardware as a Xavier NX, the target software as JetPack 4.5, and setting an ext4 formatted SD card as a destination for the target image, I run SDK manager to install image on the SD card.

You use GUI to install image on the sdcard. OK, that’s sounds correct.

The operation apparently succeeds (I skip flashing the Xavier NX since it does not have bootable media yet), but upon insertion of the SD card into the Xavier NX and attempting to boot it up

Then I don’t get what you were doing here. Why did you have to insert sdcard to NX? If it was not in NX, where was it when you flash sdkamanger?

Hi, and thanks for your reply.

Apologies for the confusion. I installed sdkmanager on a Linux host machine (Ubuntu 18.04 laptop), as I was under the impression that this is one of the ways to create a bootable card for the Xavier NX. The NX currently has no OS on it since I’ve yet to successfully create the card. I know I can also use the command line or something like balena etcher to create the sd, but a tutorial I’m following to customize the kernel suggested using sdkmanager. I can tell I’m missing something here, just don’t yet know what.

Hi,

Could you share us how was your method to create bootable card here? That is what I want to know.

Hi,
I start sdkmanager, then:
Step 1: product category is Jetson, hardware configuration, I check host machine and target hardware (which I select as a Xavier NX), target operating system I choose as Jetpack 4.5. Additional SDKs I leave unchecked.
Step 2: I choose a download folder and a target hardware folder (a 64GB ext4 micro SD card). Then I continue to step 3, at which point it asks me for my root password.
Step 3: wait for the installation to finish. In the process, it asks me whether I want to flash the Xavier NX board, but since I don’t have it connected (not even sure how I would connect it) I skip that step.
In the end, it creates some folders on my SD card, inside one of which is a Linux_for_Tegra folder with a boot folder which contains an Image file which I planned on replacing with my version. However, the card as created will not allow the Xavier NX to boot, with the error I gave in the opening post, when inserted into the NX.

Hello,

I guess you are new to this platform because your step is totally wrong. That is why I couldn’t understand what you were trying to do.

The sdkmanager is used to download a driver package, which we call BSP, to your host. This “BSP” is not same as “sdcard image”. BSP is using a tool named flash.sh to flash your NX board.

Thus, when you use sdkmanager, you should plug the empty sdcard to your NX first. Then plug the micro usb cable between your host and NX, put device into recovery mode and then running flash.sh. The tool will then prepare the system image and flash it into NX.

More detail is in Quickstart guide.

Make it more easier to understand… we are not installing the whole “Linux_for_Tegra” folder to the sdcard…

You can download the sdcard image and open it. And you will definitely not see a folder Linux_for_Tegra inside.

There are still lots of concept here but I don’t want to tell it now to make things more difficult to understand. Thus, please try either sdkmanager or sdcard image first.

Ok, thank you. I am indeed new to the platform.

The reason I tried it this way is because a tutorial I was following mentioned replacing the Image in Linux_for_Tegra with what I compiled myself:
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/kernel_custom.html
In a different thread, someone mentioned that sdkmanager creates the Linux_for_Tegra folder that I’m meant to replace the Image file in. Do you happen to know the proper procedure to install the customized kernel in my case? Thanks again for your help so far.

Hi,

The sdcard “image” is not the same as your “Image” here. What you are using here is the kernel image.

It is easier to replace the kernel image. Just use any methods that can copy the customized image to your device and then replace the old one under /boot/Image. Reboot, and it will take effect.

The “any method” here could be ethernet, usb drive or any device that can move your file from host to device should be fine.

But before you doing all of these, you have to make sure you already boot up the device.

If you want to flash your board with updated kernel, then you can put it to Linux_for_Tegra/kernel/Image and then flash the board. This is an alternative.

Ok, thanks a lot!