Firstly, why aren’t the spi pins on the jetson nano GPIO board enabled by default?
And secondly, why is no documentation on how to enable spidev for the jetson nano?
I have been following the Jetson/TX2 SPI - eLinux.org tutorial to enable SPI, however, it is outdated so you need to search through all the other discussion boards to determine what to do.
Here is what I have done so far, I think I’m pretty close, but I’m stuck on the last couple steps.
Do no use Getting Started With Jetson Nano Developer Kit | NVIDIA Developer tutorial, otherwise you will not have the necessary files for the tutorial (which is ridiculous). You have to instead download the Nvidia jetpack sdk manager on your main computer, not your jetson nano.
Boot your jetson nano in recovery mode (this doesn’t mean the jetson will boot with the UI, it just allows your main computer to do its magic on the nano via USB). Also you will need a way to power your device from the J25 jack, as the usb line will now be used for data transfer. To start your jetson nano in recovery mode make sure your Jetson Nano Developer Kit is powered off. Enable “Force Recovery mode” by placing a jumper across pins the FRC pins (3 & 4) of the Button Header (J40) on the carrier board. Enable use of a DC power adapter by placing a jumper across J48. Connect a DC power adapter to J25. The developer kit will power on automatically and enter “Force Recovery Mode”. Remove jumper from FRC pins (3 & 4) of the Button Header (J40). Connect your main computer with the nano via the usb connection.
Start the Nvidia sdk manager. Choose the nano as your target hardware. Start your downloads, you only need to install the Jetson OS, don’t worry about the SDK components for now, you can install them separately later. Then when it asks to flash your device, select “Manual Setup” and then install. Once everything is flashed and installed. You need to log onto your nano, login, and complete the setup wizard stuff.
At this point the TX2_SPI tutorial would tell you to rebuild your kernel with the spidev module, but it seems that the the nano already has this module enabled. So all that is left to do now is edit and recompile your device tree. Which can be done by following the steps after the “Update The Device-Tree” section of the TX2_SPI tutorial.
When you get to the step of flashing you need to be aware of a few things which aren’t specified anywhere in the tutorial. Firstly the “flash.sh” script won’t exist anywhere on your jetson nano machine, and secondly, this step needs to be done on your main computer where you have the sdk manager installed. To complete the flash step you need to restart your nano in recovery mode and attach it your main computer with the usb again. Then your flash.sh script should be in the ‘~/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra’ directory (This is the default location specified in the sdk manager). Next you want to run the the following command “sudo ./flash.sh -r -k kernel-dtb jetson-nano-qspi mmcblk0p1”
That is the final step I have been able to get up to unfortunately.
###############################################################################
# L4T BSP Information:
# R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t210ref, EABI: aarch64,
# DATE: Wed Mar 13 07:46:13 UTC 2019
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi, Board Family: t210ref, SoC: Tegra 210,
# OpMode: production, Boot Authentication: ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/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.0018 ] Generating RCM messages
[ 0.0031 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[ 0.0043 ] RCM 0 is saved as rcm_0.rcm
[ 0.0051 ] RCM 1 is saved as rcm_1.rcm
[ 0.0052 ] List of rcm files are saved in rcm_list.xml
[ 0.0052 ]
[ 0.0052 ] Signing RCM messages
[ 0.0064 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0077 ] Assuming zero filled SBK key
[ 0.0221 ]
[ 0.0221 ] Copying signature to RCM mesages
[ 0.0234 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0252 ]
[ 0.0253 ] Boot Rom communication
[ 0.0264 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0273 ] RCM version 0X210001
[ 0.0754 ] Boot Rom communication completed
[ 1.0822 ]
[ 1.0823 ] dump EEPROM info
[ 1.0840 ] tegrarcm --oem platformdetails eeprom /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/cvm.bin
[ 1.0857 ] Applet version 00.01.0000
[ 1.1043 ] Saved platform info in /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/cvm.bin
[ 1.1804 ]
Board ID(3448) version(200)
copying bctfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
populating kernel to rootfs... done.
populating initrd to rootfs... done.
populating extlinux.conf.emmc to rootfs... done.
populating /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb to rootfs... done.
done.
Making Boot image... done.
Existing sosfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
Reusing existing system.img...
done.
Existing tbcfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
copying cfgfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_spi_p3448.xml) to flash.xml... done.
copying flasher(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/tegraflash.py) reused.
*** Updating [kernel-dtb] with tegra210-p3448-0000-p3449-0000-a02.dtb ***
./tegraflash.py --bl cboot.bin --bldtb tegra210-p3448-0000-p3449-0000-a02.dtb --chip 0x21 --applet nvtboot_recovery.bin --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --cfg flash.xml --cmd "sign; write kernel-dtb ./signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt; reboot"
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.0028 ] Generating RCM messages
[ 0.0041 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[ 0.0054 ] RCM 0 is saved as rcm_0.rcm
[ 0.0060 ] RCM 1 is saved as rcm_1.rcm
[ 0.0061 ] List of rcm files are saved in rcm_list.xml
[ 0.0061 ]
[ 0.0061 ] Signing RCM messages
[ 0.0074 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0081 ] Assuming zero filled SBK key
[ 0.0146 ]
[ 0.0146 ] Copying signature to RCM mesages
[ 0.0158 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0180 ]
[ 0.0180 ] Parsing partition layout
[ 0.0190 ] tegraparser --pt flash.xml.tmp
[ 0.0205 ]
[ 0.0205 ] Creating list of images to be signed
[ 0.0220 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[ 0.0234 ]
[ 0.0234 ] Generating signatures
[ 0.0246 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[ 0.0261 ] Assuming zero filled SBK key
[ 0.0352 ]
[ 0.0352 ] Generating br-bct
[ 0.0367 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[ 0.0378 ] Copying Sdram info from 0 to 1 set
[ 0.0394 ] Copying Sdram info from 1 to 2 set
[ 0.0394 ] Copying Sdram info from 2 to 3 set
[ 0.0394 ]
[ 0.0394 ] Updating boot device parameters
[ 0.0408 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[ 0.0419 ] Warning: No sdram params
[ 0.0420 ]
[ 0.0421 ] Updating bl info
[ 0.0434 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[ 0.0448 ]
[ 0.0449 ] Updating secondary storage information into bct
[ 0.0458 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.0471 ]
[ 0.0471 ] Get Signed section of bct
[ 0.0481 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[ 0.0490 ]
[ 0.0490 ] Signing BCT
[ 0.0506 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[ 0.0514 ] Assuming zero filled SBK key
[ 0.0518 ]
[ 0.0518 ] Updating BCT with signature
[ 0.0524 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[ 0.0531 ]
[ 0.0532 ] Copying signatures
[ 0.0538 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[ 0.0547 ]
[ 0.0547 ] Copying signed file in /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed
[ 0.0572 ] Generating RCM messages
[ 0.0579 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[ 0.0586 ] RCM 0 is saved as rcm_0.rcm
[ 0.0590 ] RCM 1 is saved as rcm_1.rcm
[ 0.0590 ] List of rcm files are saved in rcm_list.xml
[ 0.0590 ]
[ 0.0590 ] Signing RCM messages
[ 0.0603 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0613 ] Assuming zero filled SBK key
[ 0.0705 ]
[ 0.0705 ] Copying signature to RCM mesages
[ 0.0712 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0724 ]
[ 0.0725 ] Boot Rom communication
[ 0.0733 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[ 0.0741 ] BootRom is not running
[ 0.1187 ]
[ 0.1188 ] Parsing partition layout
[ 0.1203 ] tegraparser --pt flash.xml.tmp
[ 0.1219 ]
[ 0.1220 ] Creating list of images to be signed
[ 0.1235 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[ 0.1253 ]
[ 0.1254 ] Generating signatures
[ 0.1267 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[ 0.1280 ] Assuming zero filled SBK key
[ 0.1393 ]
[ 0.1393 ] Send BCT from Host
[ 0.1393 ] Generating br-bct
[ 0.1400 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[ 0.1413 ] Copying Sdram info from 0 to 1 set
[ 0.1438 ] Copying Sdram info from 1 to 2 set
[ 0.1438 ] Copying Sdram info from 2 to 3 set
[ 0.1438 ]
[ 0.1439 ] Updating boot device parameters
[ 0.1448 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[ 0.1455 ] Warning: No sdram params
[ 0.1456 ]
[ 0.1456 ] Updating bl info
[ 0.1463 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[ 0.1473 ]
[ 0.1474 ] Updating secondary storage information into bct
[ 0.1486 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.1501 ]
[ 0.1501 ] Get Signed section of bct
[ 0.1513 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[ 0.1527 ]
[ 0.1527 ] Signing BCT
[ 0.1553 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[ 0.1563 ] Assuming zero filled SBK key
[ 0.1569 ]
[ 0.1569 ] Updating BCT with signature
[ 0.1578 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[ 0.1589 ]
[ 0.1589 ] Sending BCTs
[ 0.1598 ] tegrarcm --download bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.1606 ] Applet version 00.01.0000
[ 0.1765 ] Sending bct
[ 0.1767 ] [................................................] 100%
[ 0.2433 ]
[ 0.2434 ] Sending bootloader and pre-requisite binaries
[ 0.2449 ] tegrarcm --download ebt cboot.bin 0 0 --download rp1 tegra210-p3448-0000-p3449-0000-a02.dtb 0
[ 0.2463 ] Applet version 00.01.0000
[ 0.2645 ] Sending ebt
[ 0.2648 ] [................................................] 100%
[ 0.3692 ] Sending rp1
[ 0.3695 ] [................................................] 100%
[ 0.4128 ]
[ 0.4142 ] tegrarcm --boot recovery
[ 0.4150 ] Applet version 00.01.0000
[ 0.4372 ]
[ 0.4372 ] Writing partition
[ 0.4380 ] tegradevflash --write kernel-dtb /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt
My flash script executes but gets stuck at the final line. I leave it for ages, but nothing happens.
How can I get past this next step? Is the flash script broken? Why is it so difficult to enable SPI? Why is SPI dev not enabled by default when there are dedicated SPI pins in GPIO of the jetson nano carrier board.
However, when I updated the /boot/etxlinux/extlinux.conf to include FDT /boot/dtb/xxxx, and rebooted the system, my Nano wouldn’t boot anymore. It would get stuck on the Nvidia start-up screen.
I saw on a related tutorial (Jetson/TX2 DTB - eLinux.org) that you could just update the default DTB in the jetback folder to enable the SPI. However, then when I attempted to flash, it would get stuck again. How do you recommend updating the DTB to enable SPI and flashing with the Jetson Nano? There is no clearly defined way for this to be done on the Nano. I’m sure a lot of people would find this information useful.
If I run the aforementioned flash command then reboot, the spi device is still not enabled. How does the flash script know to automatically use the /boot/dtb/xxxx.dtb file? Do I not need to tell it what dtb file I want to use?
Just got round to trying this out.
By default my dtb file is /boot/dtb/tegra210-p3448-0000-p3449-a02.dtb. I have done all the previous steps again, and recompiled that dtb file with the spi enabled. I then replaced the ../Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-a02.dtb and ran the spi command. The following happened:
linuxmr@motion:~/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra$ sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1
[sudo] password for linuxmr:
###############################################################################
# L4T BSP Information:
# R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t210ref, EABI: aarch64,
# DATE: Wed Mar 13 07:46:13 UTC 2019
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi-sd, Board Family: t210ref, SoC: Tegra 210,
# OpMode: production, Boot Authentication: ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/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.0019 ] Generating RCM messages
[ 0.0033 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[ 0.0045 ] RCM 0 is saved as rcm_0.rcm
[ 0.0053 ] RCM 1 is saved as rcm_1.rcm
[ 0.0053 ] List of rcm files are saved in rcm_list.xml
[ 0.0053 ]
[ 0.0054 ] Signing RCM messages
[ 0.0067 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0080 ] Assuming zero filled SBK key
[ 0.0172 ]
[ 0.0173 ] Copying signature to RCM mesages
[ 0.0184 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0196 ]
[ 0.0196 ] Boot Rom communication
[ 0.0204 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0212 ] RCM version 0X210001
[ 0.0667 ] Boot Rom communication completed
[ 1.0736 ]
[ 1.0737 ] dump EEPROM info
[ 1.0753 ] tegrarcm --oem platformdetails eeprom /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/cvm.bin
[ 1.0765 ] Applet version 00.01.0000
[ 1.0959 ] Saved platform info in /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/cvm.bin
[ 1.1721 ]
Board ID(3448) version(200)
copying bctfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
populating kernel to rootfs... done.
populating initrd to rootfs... done.
populating extlinux.conf.emmc to rootfs... done.
populating /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb to rootfs... done.
done.
Making Boot image... done.
Existing sosfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
Existing badpagefile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/badpage.bin) reused.
copying wb0boot(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
Reusing existing system.img...
done.
Existing tbcfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb)... done.
copying cfgfile(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/tegraflash.py) reused.
*** Updating [DTB] with tegra210-p3448-0000-p3449-0000-a02.dtb ***
./tegraflash.py --bl cboot.bin --bldtb tegra210-p3448-0000-p3449-0000-a02.dtb --chip 0x21 --applet nvtboot_recovery.bin --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --cfg flash.xml --cmd "sign; write DTB ./signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt; reboot"
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.0061 ] Generating RCM messages
[ 0.0073 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[ 0.0086 ] RCM 0 is saved as rcm_0.rcm
[ 0.0093 ] 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.0105 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0115 ] Assuming zero filled SBK key
[ 0.0202 ]
[ 0.0203 ] Copying signature to RCM mesages
[ 0.0216 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.0235 ]
[ 0.0236 ] Parsing partition layout
[ 0.0246 ] tegraparser --pt flash.xml.tmp
[ 0.0263 ]
[ 0.0263 ] Creating list of images to be signed
[ 0.0273 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[ 0.0327 ]
[ 0.0328 ] Generating signatures
[ 0.0341 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[ 0.0350 ] Assuming zero filled SBK key
[ 0.0749 ]
[ 0.0749 ] Generating br-bct
[ 0.0757 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[ 0.0764 ] Copying Sdram info from 0 to 1 set
[ 0.0771 ] Copying Sdram info from 1 to 2 set
[ 0.0771 ] Copying Sdram info from 2 to 3 set
[ 0.0772 ]
[ 0.0772 ] Updating boot device parameters
[ 0.0778 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[ 0.0784 ] Warning: No sdram params
[ 0.0785 ]
[ 0.0785 ] Updating bl info
[ 0.0792 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[ 0.0800 ]
[ 0.0801 ] Updating secondary storage information into bct
[ 0.0807 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.0814 ]
[ 0.0814 ] Get Signed section of bct
[ 0.0820 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[ 0.0827 ]
[ 0.0828 ] Signing BCT
[ 0.0841 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[ 0.0849 ] Assuming zero filled SBK key
[ 0.0857 ]
[ 0.0858 ] Updating BCT with signature
[ 0.0867 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[ 0.0878 ]
[ 0.0878 ] Copying signatures
[ 0.0889 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[ 0.0922 ]
[ 0.0922 ] Copying signed file in /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed
[ 0.0996 ] Generating RCM messages
[ 0.1005 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[ 0.1019 ] RCM 0 is saved as rcm_0.rcm
[ 0.1025 ] RCM 1 is saved as rcm_1.rcm
[ 0.1029 ] List of rcm files are saved in rcm_list.xml
[ 0.1029 ]
[ 0.1029 ] Signing RCM messages
[ 0.1039 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.1047 ] Assuming zero filled SBK key
[ 0.1113 ]
[ 0.1114 ] Copying signature to RCM mesages
[ 0.1123 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[ 0.1133 ]
[ 0.1134 ] Boot Rom communication
[ 0.1141 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[ 0.1149 ] BootRom is not running
[ 0.1637 ]
[ 0.1637 ] Parsing partition layout
[ 0.1652 ] tegraparser --pt flash.xml.tmp
[ 0.1669 ]
[ 0.1669 ] Creating list of images to be signed
[ 0.1680 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[ 0.1735 ]
[ 0.1735 ] Generating signatures
[ 0.1747 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[ 0.1755 ] Assuming zero filled SBK key
[ 0.2161 ]
[ 0.2162 ] Send BCT from Host
[ 0.2162 ] Generating br-bct
[ 0.2170 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[ 0.2177 ] Copying Sdram info from 0 to 1 set
[ 0.2185 ] Copying Sdram info from 1 to 2 set
[ 0.2185 ] Copying Sdram info from 2 to 3 set
[ 0.2185 ]
[ 0.2185 ] Updating boot device parameters
[ 0.2192 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[ 0.2198 ] Warning: No sdram params
[ 0.2200 ]
[ 0.2200 ] Updating bl info
[ 0.2206 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[ 0.2215 ]
[ 0.2215 ] Updating secondary storage information into bct
[ 0.2222 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.2229 ]
[ 0.2230 ] Get Signed section of bct
[ 0.2236 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[ 0.2243 ]
[ 0.2244 ] Signing BCT
[ 0.2260 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[ 0.2269 ] Assuming zero filled SBK key
[ 0.2274 ]
[ 0.2275 ] Updating BCT with signature
[ 0.2283 ] tegrabct --bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[ 0.2291 ]
[ 0.2292 ] Sending BCTs
[ 0.2297 ] tegrarcm --download bct P3448_A00_4GB_Micron_4GB_lpddr4_204Mhz_P987.bct
[ 0.2304 ] Applet version 00.01.0000
[ 0.2456 ] Sending bct
[ 0.2458 ] [................................................] 100%
[ 0.3123 ]
[ 0.3123 ] Sending bootloader and pre-requisite binaries
[ 0.3136 ] tegrarcm --download ebt cboot.bin 0 0 --download rp1 tegra210-p3448-0000-p3449-0000-a02.dtb 0
[ 0.3148 ] Applet version 00.01.0000
[ 0.3334 ] Sending ebt
[ 0.3337 ] [................................................] 100%
[ 0.4381 ] Sending rp1
[ 0.4384 ] [................................................] 100%
[ 0.4822 ]
[ 0.4837 ] tegrarcm --boot recovery
[ 0.4847 ] Applet version 00.01.0000
[ 0.5023 ]
[ 0.5024 ] Writing partition
[ 0.5041 ] tegradevflash --write DTB /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt
A similar issue to earlier occurred. It seems to just hang when it begins writing the partition. What do I need to do to fix this?
I’m encountering the same issue here. I repeated the the process 2 times today:
First, I replaced tegra210-p3448-0000-p3449-0000-a01.dtb with the one a compiled with a modified dts. However, the tegradevflash fails because “Cboot is not running on the device”…
[ 0.5222 ] tegradevflash --write DTB /home/kamel/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt
[ 0.5246 ] Cboot is not running on device.
I also tried to replace the tegra210-p3448-0000-p3449-0000-a02.dtb file which I believe is the default dtb the Jetson nano uses. This time, I ended up with a similar issue to Micheals’, getting stuck at:
Just performed the normal flash with the modified 'tegra210-p3448-0000-p3449-a02.dtb’in ../Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-a02.dtb. And it stalled again.
Here is the output:
The first thing I tried was changing the usb cable and power supply. KmL_ seems to be having a usb issue.
I am only seeing the flashing problem after changing the Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-a02.dtb binary. When I ran the sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1 command, it gets stuck on the following output: [ 0.5041 ] tegradevflash --write DTB /home/linuxmr/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3448/Linux_for_Tegra/bootloader/signed/tegra210-p3448-0000-p3449-0000-a02.dtb.encrypt. Which points to a xxxx.dtb.encrypt version of just the .dtb file. Where is it getting this from?
Thanks. It came from one of the USB ports of my laptop. “Normal” flash passes now.
However, flashing with the modified dtb still fails. It might be a naive question, but is it possible to get a “working” version of the “dtb.encrypt” file for Jetson nano ?