How do I downgrade from Jetpack 6DP to JetPack 5 on Jetson Orin Nano Dev Kit (SD Card)

I’m brand new to Jetsons, but experienced in programming for windows and writing firmware… But I have nearly 60 hours into trying to get the examples from Dusty-NV on github to work, and only have only succeeded with one or two. Most problems have to do with docker, which I’m unable to get to work.

So I’ve concluded that I really don’t know enough about the system. I would like to downgrade to Jetpack 5 so I can follow the tutorials I’ve found on YouTube. But I’ve had trouble finding out exactly how to do that. SDK manager on my x86 Ubuntu machine doesn’t seem to offer me that option. If it does, please point me in the right direction!

Please Help! LOL

You just select JetPack 5 in the menu.
Nothing difficult.

That’s great news, but the only selectable option in the menu is Jetpack 6 DP. It lists Jetpack 5, but it cannot be selected. So what am I missing to allow me to select Jetpack 5?

If you use Ubuntu 22.04, then only JetPack 6 is available.
You either downgrade to Ubuntu 20.04, or download the BSP and flash manually:
https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/index.html
https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v5.0/release/jetson_linux_r35.5.0_aarch64.tbz2
https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v5.0/release/tegra_linux_sample-root-filesystem_r35.5.0_aarch64.tbz2

Ok, I was a dummy on that one… I was using Ubuntu 22.04 on my desktop. With that resolved, I still can’t get Jetpack 5 to boot up once the SD card is flashed (Either through the SDK Manager or by manually flashing). If I put a Jetpack 6 flashed SD card in it boots up just fine, which tells me the bootloader for Jetpack 6 is still on there. Does this mean I need to downgrade the bootloader in order to load Jetpack 5? And if so, how do I go about that?

For reference, this is how the reflash process ends in SDK Manager. After this point the Dev Board is no longer detectable. The only thing I can do is manually flash the SD card with Jetpack 6 again. And then I’m back where I started.

18:47:07 INFO: Flash Jetson Linux - flash: Waiting for device to expose ssh …Run command: flash on fc00:1:1:0::2

18:47:07 INFO: Flash Jetson Linux - flash: SSH ready

18:47:08 INFO: Flash Jetson Linux - flash: blockdev: cannot open /dev/mmcblk0boot0: No such file or directory

18:47:08 INFO: Flash Jetson Linux - flash: max_index=57

18:47:11 INFO: Flash Jetson Linux - flash: [ 2]: l4t_flash_from_kernel: Successfully create gpt for emmc

18:47:11 INFO: Flash Jetson Linux - flash: max_index=17

18:47:11 INFO: Flash Jetson Linux - flash: writing item=1, 9:0:primary_gpt, 512, 19968, gpt_primary_9_0.bin, 16896, fixed–0, 66cc883f85ede5b39fe1495738df2f0903da40af

18:47:15 INFO: Flash Jetson Linux - flash: Writing primary_gpt partition with gpt_primary_9_0.bin

18:47:15 INFO: Flash Jetson Linux - flash: dd if=/mnt/external/gpt_primary_9_0.bin of=/dev/mmcblk1 bs=1 skip=0 seek=512 count=16896

18:47:15 INFO: Flash Jetson Linux - flash: 16896 bytes (17 kB, 16 KiB) copied, 0.0357316 s, 473 kB/s

18:47:15 INFO: Flash Jetson Linux - flash: Writing primary_gpt partition done

18:47:15 ERROR: Flash Jetson Linux - flash: Error: Invalid argument during seek for read on /dev/mmcblk1

18:47:15 INFO: Flash Jetson Linux - flash: Flash failure

18:47:15 INFO: Flash Jetson Linux - flash: Cleaning up…

18:47:16 ERROR: Flash Jetson Linux - flash: command terminated with error

Put the full log in .zip exported from SDK Manager here.
Don’t crop it yourself.
Also do this while flashing:

OK, here are the logs. I tried it the two different ways I am able to get SDK Manager to recognize the Jetson: Starting with Jetpack 6 booted up, and starting the Jetson in Recovery Mode. I’ve included both. The text files are the debug serial logs.

Booted_JP6_JetsonOrinNanoFlashLog.txt (101.9 KB)
Booted_JP6_SDKM_logs_2024-04-23_23-50-48.zip (659.8 KB)
RECOVERY_MODE_JetsonOrinNanoFlashLog.txt (100.8 KB)
RECOVERY_MODE__SDKM_logs_2024-04-23_21-48-44.zip (423.8 KB)

Just for confirmation, are you using a 64GB or larger SD card?

Yes, 64 GB cards. (I’ve tried several just to make sure it isn’t an SD card failure.)

Try formatting the SD card before flashing.

OK, I tried it with a clean format. The only way to get SDK Manager to detect the board was to put it in recovery mode. Unfortunately, my Serial Logger didn’t record anything for some reason. I’ll run it again if you think the serial log would be helpful.

CLEAN_FORMAT_SDKM_logs_2024-04-24_10-32-20.zip (658.5 KB)

Is it really strictly 64GB?
Can you run sudo fdisk -l on your host PC with the SD card attached?

The two disks I’ve been using are 57 and 58 GB. Given that Jetpack 6 works fine on them I assumed they would be sufficient for Jetpack 5. Do I need to go to a 128GB card?

I am asking for the exact sector sizes.

Give it a try if you have one.

I’ll have to acquire a 128GB card.

SD Card#1:
57.98 GiB, 62226694144 bytes, 121536512 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

SD Card#2:
58.25 GiB, 62534975488 bytes, 122138624 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Hi,

As you can see in the help message of flash.sh:

        -T <ext num sectors> ---The number of the sectors of the external storage device.
                                The default value is 122159104 if this option is not set.

, both of your two cards are actually smaller than the required size.

You have to manually run scripts instead of SDK Manager to avoid this,
and the regular flashing command looks like:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/IN/QuickStart.html

Couple of ways for you to overwrite it:

  1. Use environment variable EXT_NUM_SECTORS=<value>, like sudo EXT_NUM_SECTORS=121536512 ./tools/kernel_flash/l4t_initrd_flash.sh...
  2. Specify the -T option and pass it to flash.sh, like -p "-T 121536512 -c bootloader/t186ref/cfg/flash_t234_qspi.xml"
  3. Hardcode the sector size in the board config file. For your case, add this line EXT_NUM_SECTORS=121536512 in jetson-orin-nano-devkit.conf.

That did it Dave! Thanks for your help and patience!

1 Like

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