the update process appears broken. (I have linked it for a reason, please read it)
Can you please clarify whether we can use the dist-upgrade method described in the documentation (here) to update from a minor release (i.e. XX.YY.ZZ), say from r32.5.1 to r32.7.1, then update from r32.7.1 to r35.1.0 via Image Based OTA?
I mean I know the answer, no, but if we can’t do that then can you please:
provide a more concise set of steps to perform the upgrade;
elaborate on what dist-upgrade actually does, if not upgrade the L4T.
It seems as though it basically only updates the apt index, and doesn’t do anything about the underlying system images.
We’ve just run into the issue again when trying to update a jetson that was flashed with JetPack 4.3 and dist-upgrade’d to JetPack 4.5.
If you can point me towards any more documentation I’m happy to read it.
Upon repeating the process, it appears that we can reliably follow the dist-upgrade from R32 → R32.5 and then do the Image Based OTA from R32.5 → R32.7.2.
But for some reason the ./tools/l4t_create_default_user.sh script seems to not bypass the oem-config as expected on the new image that is created. The OTA hangs waiting for input to the oem-config stuff.
Any advice on bypassing this and ensuring it is bypassed in the OTA upgrade?
I have run the create default user script in all relevant places with no luck.
We are not suggest use Debian Package update and Image-based OTA at same time, that will get unpredictable results. Please use Image-based OTA from r32.5.1 → r32.7.2 → r35.1.
We have workaround to run two times Image-based OTA.
Detail steps:
Generate a OTA package that updates bootloader only from R32.5.1 to R32.7.2 with -b option $ sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh -b jetson-agx-xavier-devkit R32-5
Apply it on the failed system to update bootloader chain A.
Edit /etc/nv_tegra_release to r32.5.1 before run nv_ota_start.sh
Reboot device and make sure it is booting from chain A after OTA is finished. $ sudo nvbootctrl dump-slots-info $ sudo nvbootctrl set-active-boot-slot 0 $ sudo reboot
After updating (with just the bootloader, which i hadnt tried previously), i.e. step 2., it doesnt look like it actually updated. /etc/nv_tegra_release still showed r35.1.
I proceeded anyway with the following steps, and the R32.7.2 → R35.1.0 ended up in a boot cycle.
Actually @carolyuu, now the board cant even be flashed…
[0000.053] W> RATCHET: MB1 binary ratchet value 4 is too la I> MB1 (prd-version: 1.5.1.6-t194-41334769-1740dd39)
[0000.06700.078] I> ATE fuse revision : 0x200
[0000.082] I> Ram repair f> Boot-device: eMMC
[0000.109] I> sdmmc DDR50 mode
[0000.113] E> No bootable slot found
[0000.116] E> LOAD0 from loader.
[0000.128] E> LOADER: Failed to get info for bink 24 failed (err: 0x1d540102)
[0000.145] E> Top caller module: tus dump :
0000000000011111111110111000000000000000000000000000```
Update - re-flashing twice with r35.1.0 has revived the jetson. Going to flash back to r32.5.1 to try again.
I’m slightly worried about trying the bootloader OTA, I’ll try a full OTA bc I’ve never faced any issues with that before and I dont want to brick the device again. Let me know if this wont work, or whether it will be fine but just slower
Edit: I also took logs if you wanted to see, but I dont think theyll be too helpful.
Please make sure your BSP package is clean.
Suggest you can prepare clean BSP and start the Image-based OTA.
If follow my steps still fail, please share command line and uart logs for check.
For anyone who finds themselves unlucky enough to end up in the never ending boot cycle, but can access the bash terminal through the serial console, do the following:
Mount the bootloader stuff: mount /dev/mmcblk0p1 /mnt
Check that /mnt/boot/extlinux/extlinux.conf has this stuff: root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4
If it does, I cant help you (if it doesnt exist, then create the file - lookup what it should look like). If it doesn’t you’ll need to sed it in. For Xavier, you can do the following: sed -i "s|^\([ \t]*APPEND \${cbootargs}\) .*|\1 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0|" /mnt/boot/extlinux/extlinux.conf
for others, refer to here
You should now be able to boot into recovery mode and re-flash.
When I try the OTA from 32.3.1 → 32.7.2, do the bootslot work around, using the patched update scripts from this post, the jetson ends up on the default IP (192.168.55.1) and without an ethernet interface.
I hit this issue on Friday as well while running through a similar update, the difference being that I dist-upgraded to r32.5.2 on friday, and this time I want from fresh flash of r32.3.1 to r32.7.2.
Can you please provide me steps that work? Ideally one’s you’ve tested yourselves.
What I don’t understand is I’m following vanilla NVIDIA provided steps using OTA. Can someone please clarify or provide some patch scripts about what the correct update process is.