Problems with Jetson Nanos in recovery mode

I’m having trouble reflashing some Nanos which I’ve isolated to non-deterministic behavior in recovery mode.

Is it expected behavior for the tegrarcm utility to produce different results when run multiple times? For example, if I try to read the uid two times in a row, the second read always fails.

$ cd ~/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader
$ sudo ./tegrarcm --uid
BR_CID: 0x3210100164307307040000000c030580
$ sudo ./tegrarcm --uid
Failed to read UID
$ 

To resolve the problem, the Nano needs to be power cycled (into recovery mode).

The problem happens on 6+ different Nanos. All of which boot and run the JetPack version of Linux without issue.

I don’t know if that is expected or not, especially for something which should be read-only. However, I can tell you there are a number of operations which, after performing some setup in the Jetson, will require restart to run again. An example is you shouldn’t try to clone twice without restarting recovery mode between clones, or you shouldn’t try to flash a second time if the first flash did not succeed (a successful flash reboots anyway). One thing I would consider a failure is if sometimes the operation succeeds right after fresh entry to recovery mode, but at other times it would fail after a fresh start of recovery mode.

@linuxdev , thanks for the helpful insight. I ended up drilling down to this simple failure because I have never successfully run nvautoflash.sh

(This output immediately after power on into recovery mode.)

$ sudo ./nvautoflash.sh 
*** Checking ONLINE mode ... OK.
*** Checking target board connection ... 1 connections found.
*** Reading ECID ... FUSELEVEL=fuselevel_production hwchipid=0x21 bootauth=
*** Reading EEPROM ... "/home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/tegraflash.py" --chip 0x21 --applet "/home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin; dump eeprom baseinfo bbd.bin" 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0015 ] Generating RCM messages
[   0.0039 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0049 ] RCM 0 is saved as rcm_0.rcm
[   0.0052 ] RCM 1 is saved as rcm_1.rcm
[   0.0052 ] List of rcm files are saved in rcm_list.xml
[   0.0052 ] 
[   0.0053 ] Signing RCM messages
[   0.0060 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0066 ] Assuming zero filled SBK key
[   0.0108 ] 
[   0.0109 ] Copying signature to RCM mesages
[   0.0129 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0141 ] 
[   0.0142 ] Boot Rom communication
[   0.0161 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0168 ] RCM version 0X210001
[   0.1182 ] Boot Rom communication completed
[   1.1290 ] 
[   1.1291 ] dump EEPROM info
[   1.1321 ] tegrarcm --oem platformdetails eeprom /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[   1.1335 ] Applet version 00.01.0000
[   1.2134 ] Saved platform info in /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[   1.2992 ] 
[   1.3017 ] tegrarcm --reboot recovery
[   1.3024 ] Applet version 00.01.0000
[   1.3856 ] 
[   3.3879 ] Generating RCM messages
[   3.3906 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   3.3915 ] RCM 0 is saved as rcm_0.rcm
[   3.3925 ] RCM 1 is saved as rcm_1.rcm
[   3.3925 ] List of rcm files are saved in rcm_list.xml
[   3.3925 ] 
[   3.3925 ] Signing RCM messages
[   3.3947 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   3.3955 ] Assuming zero filled SBK key
[   3.4012 ] 
[   3.4012 ] Copying signature to RCM mesages
[   3.4034 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   3.4049 ] 
[   3.4049 ] Boot Rom communication
[   3.4072 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   3.4080 ] BootRom is not running
[   3.9731 ] 
[   3.9733 ] dump EEPROM info
[   3.9764 ] tegrarcm --oem platformdetails eeprom /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/bbd.bin
[   3.9775 ] Cannot open usb device.Check if device is in recovery
[   4.4774 ] 
Error: Return value 8
Command tegrarcm --oem platformdetails eeprom /home/spell/nvidia/nvidia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/bootloader/bbd.bin
--- Error: Reading board information failed.
$ 

Interestingly, the following is spewed to the serial console:

[0014.926] Enabled early print
[0014.928] [L4T TegraBoot] (version Sߧw
                                       ʽ??)
[0014.933] Processing in recovery mode
[0014.936] A02 Bootrom Patch rev = 1023
[0014.940] Power-up reason: pmc por
[0014.943] Established communication link with host
[0016.006] NvTbootI2cWrite(): error code 0x00045100 Error while starting write transaction
[0016.014] NvTbootI2cDeviceRead(): error code 0x00045001 Error while sending the offset to slave
[0016.022] NvTbootI2c: Read failed for slave 0xac, offset 0x00 with error code 0x00045001

FWIW, these are P3448-0000 Nano devkits with SD.

I can’t answer about specific errors, but one of the first things you’ll be asked by someone who knows those specific errors is what your host PC environment is (e.g., native Ubuntu 18.04 versus VM), and which JetPack/SDKM release you are using.

System is native Ubuntu 18.04. Latest SDK manager as of yesterday (1.8.1.10392). JetPack 4.6.2.

I had similar problems with the previous SDK manager release and JetPack 4.6.1

I found a workaround for the failures running nvautoflash.sh.

It turns out, my 18.04 machine is slow when USB devices enumerate. Slower than the scripts tolerate.

To fix the problem, I hacked tegrarcm to delay after it reboots the Nano. The delay is long enough for the Nano to re-enumerate allowing the scripts continue without error.

1 Like

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