Problems flashing jetson nano sd image

I’m using the example root filesystem and BSP R32.6.1.
I have a Jetson Nano Dev Board (Model P3450, B01) with a 32GB SD card inserted

I’ve extracted the rootfs, made some customizations, and then attempted to flash the device, booted with the FC REC jumper pin grounded per the instructions here. (see To flash Jetson Developer Kit operating software section).
This results in the build script hanging at the following step (full listing below):

Sending BCTs
[   0.2699 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct

I’m not really sure what the above step is attempting to do or where to begin looking for troubleshooting steps.
Any suggestions would be appreciated.

As a separate data point, I am able to produce a SD card .img using the following steps, and the system boots as expected:

cd ./Linux_for_Tegra/tools
sudo ROOTFS_DIR=/Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64 \
        ./jetson-disk-image-creator.sh -o sd_card_R32.6.1.img -b jetson-nano-devkit -r 300
    
sudo dd if=./sd_card_R32.6.1.img of=/dev/sdc bs=1M oflag=direct

Full output from hanging flash.sh command:

user@jvbx:/Linux_for_Tegra$ sudo ./flash.sh -R ../Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64 jetson-nano-qspi-sd mmcblk0p1
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 6.1
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi-sd, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.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.0036 ] Generating RCM messages
[   0.0074 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0085 ] RCM 0 is saved as rcm_0.rcm
[   0.0090 ] RCM 1 is saved as rcm_1.rcm
[   0.0094 ] List of rcm files are saved in rcm_list.xml
[   0.0094 ] 
[   0.0094 ] Signing RCM messages
[   0.0125 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0136 ] Assuming zero filled SBK key
[   0.0229 ] 
[   0.0230 ] Copying signature to RCM mesages
[   0.0258 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0279 ] 
[   0.0280 ] Boot Rom communication
[   0.0339 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0350 ] RCM version 0X210001
[   0.0809 ] Boot Rom communication completed
[   1.0928 ] 
[   1.0930 ] dump EEPROM info
[   1.0987 ] tegrarcm --oem platformdetails eeprom /Linux_for_Tegra/bootloader/cvm.bin
[   1.1020 ] Applet version 00.01.0000
[   1.1326 ] Saved platform info in /Linux_for_Tegra/bootloader/cvm.bin
[   1.2141 ] 
[   1.2167 ] tegrarcm --reboot recovery
[   1.2179 ] Applet version 00.01.0000
[   1.2407 ] 
Board ID(3448) version(400) 
copying bctfile(/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
Making Boot image... done.
Existing sosfile(/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
copying wb0boot(/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
Copying nv_boot_control.conf to rootfs
	populating kernel to rootfs... done.
	populating initrd to rootfs... done.
	populating kernel_tegra210-p3448-0000-p3449-0000-b00.dtb to rootfs... done.
Making system.img... 
	populating rootfs from /Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64 ... 	populating /boot/extlinux/extlinux.conf ... done.
	Sync'ing system.img ... done.
	Converting RAW image to Sparse image... done.
system.img built successfully. 
Existing tbcfile(/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
copying cfgfile(/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_max-spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl cboot.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg --odmdata 0xa4000 --bldtb kernel_tegra210-p3448-0000-p3449-0000-b00.dtb --applet nvtboot_recovery.bin  --cmd "flash; reboot"  --cfg flash.xml --chip 0x21    --bins "EBT cboot.bin; DTB tegra210-p3448-0000-p3449-0000-b00.dtb" 
saving flash command in /Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /Linux_for_Tegra/bootloader/flash_win.bat
assign_value: crc-flash.xml.bin 1 65520 1
printf '\x1' | dd of=crc-flash.xml.bin bs=1 seek=65520 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 9.2713e-05 s, 10.8 kB/s
assign_value: crc-flash.xml.bin 0 65521 1
printf '\x0' | dd of=crc-flash.xml.bin bs=1 seek=65521 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 4.0092e-05 s, 24.9 kB/s
assign_string: crc-flash.xml.bin PTHD 65528 4
echo PTHD | dd of=crc-flash.xml.bin bs=1 seek=65528 count=4 conv=notrunc
4+0 records in
4+0 records out
4 bytes copied, 4.7761e-05 s, 83.8 kB/s
*** Flashing target device started. ***
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.0076 ] tegrasign --getmode mode.txt --key None
[   0.0084 ] Assuming zero filled SBK key
[   0.0113 ] 
[   0.0115 ] Generating RCM messages
[   0.0139 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.0157 ] RCM 0 is saved as rcm_0.rcm
[   0.0199 ] RCM 1 is saved as rcm_1.rcm
[   0.0205 ] List of rcm files are saved in rcm_list.xml
[   0.0209 ] 
[   0.0209 ] Signing RCM messages
[   0.0231 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0240 ] Assuming zero filled SBK key
[   0.0383 ] 
[   0.0384 ] Copying signature to RCM mesages
[   0.0411 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0432 ] 
[   0.0432 ] Parsing partition layout
[   0.0482 ] tegraparser --pt flash.xml.tmp
[   0.0532 ] 
[   0.0535 ] Using default ramcode: 0
[   0.0535 ] Disable BPMP dtb trim, using default dtb
[   0.0535 ] 
[   0.0535 ] Creating list of images to be signed
[   0.0559 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   0.0638 ] 
[   0.0645 ] Generating signatures
[   0.0719 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.0731 ] Assuming zero filled SBK key
[   0.1333 ] 
[   0.1334 ] Generating br-bct
[   0.1398 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   0.1513 ] 
[   0.1513 ] Updating boot device parameters
[   0.1538 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   0.1550 ] Warning: No sdram params
[   0.1554 ] 
[   0.1555 ] Updating bl info
[   0.1580 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.1621 ] 
[   0.1622 ] Updating secondary storage information into bct
[   0.1646 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   0.1668 ] 
[   0.1669 ] Updating Odmdata
[   0.1734 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   0.1746 ] Warning: No sdram params
[   0.1750 ] 
[   0.1750 ] Get Signed section of bct
[   0.1798 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   0.1816 ] 
[   0.1817 ] Signing BCT
[   0.1872 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.1886 ] Assuming zero filled SBK key
[   0.1893 ] 
[   0.1894 ] Updating BCT with signature
[   0.1932 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   0.1965 ] 
[   0.1966 ] Copying signatures
[   0.1995 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2161 ] 
[   0.2162 ] Updating BFS information on BCT
[   0.2195 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin
[   0.2210 ] 
[   0.2211 ] Boot Rom communication
[   0.2235 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.2248 ] BootRom is not running
[   0.2679 ] 
[   0.2680 ] Sending BCTs
[   0.2699 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct

hello jcorcoran,

please put your Nano platform into forced-recovery and To determine whether the developer kit is in Force Recovery mode by checking lsusb.
thanks

Thanks, I will try again while leaving the FC REC jumper in place through the duration of the install.

I think my problem originates from the following section of the quickstart page I linked above:

For Jetson Nano 2GB Developer Kit and Jetson Nano 2GB Developer Kit:
1)Ensure that your Jetson Nano developer kit is powered off, and that a 16 GB or larger microSD card is inserted into the module’s microSD card slot.
2)To ensure that the developer kit starts in Force Recovery Mode, place a jumper across the FRC pins of the button header on the carrier board.
•For carrier board revision A02, these are pins 3 and 4 of J40, which is located near the camera header.
•For carrier board revision B01, these are pins 9 and 10 of J50, which is located on the edge of the carrier board under the Jetson module.
3)Place a jumper across J48 to enable use of a DC power adapter.
4)Connect a DC power adapter to J25. The developer kit powers on automatically and enters Force Recovery Mode.
5)Remove the jumper from the FRC pins of the button header.
6)Continue the software installation.

The steps state to remove FRC jumper before performing software installation.

It looks like the beginning of the flash.sh script causes the board to reboot, presumable upon reboot it comes up in a non recovery mode (since I removed the FC REC jumper before running flash.sh)

[   1.2167 ] tegrarcm --reboot recovery
[   1.2179 ] Applet version 00.01.0000

Might be worth revising the instructions for clarity?

hello jcorcoran,

it’s tegraflash.py to reboot the board into recovery.
did you see 7f21 by checking lsusb for the four-digit number that represents the type of Jetson modules.