Flashing multiple TX2s at the same time?

Start_L4T_Docs.html contains a section “Flashing Multiple Tegra Devices”. It’s pretty straightforward, essentially using the existing subcommands to run the flashing sequence against a specified USB device instead of against the only one that’s attached.

My problem is that it does not work.

Cutting and pasting the multi_flash_tegra.sh script launches multiple processes, but they all fail.

I manually executed a flashing command by hand:

$ sudo ./tegraflash.py --bl nvtboot_recovery_cpu.bin --sdram_config P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --odmdata 0x1090000 --applet mb1_recovery_prod.bin --cmd "flash; reboot"  --cfg flash.xml --chip 0x18 --misc_config tegra186-mb1-bct-misc-si-l4t.cfg --pinmux_config tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmic_config tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --pmc_config tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --prod_config tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg --scr_config minimal_scr.cfg --scr_cold_boot_config mobile_scr.cfg --br_cmd_config tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --dev_params emmc.cfg  --bins "mb2_bootloader nvtboot_recovery.bin; mts_preboot preboot_d15_prod_cr.bin; mts_bootpack mce_mts_d15_prod_cr.bin; bpmp_fw bpmp.bin; bpmp_fw_dtb tegra186-a02-bpmp-quill-p3310-1000-c01-00-te770d-ucm2.dtb; tlk tos.img; eks eks.img; bootloader_dtb tegra186-quill-p3310-1000-c03-00-base.dtb" --instance /dev/bus/usb/002/

...

[   0.2759 ] Copying signatures
[   0.2767 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2920 ] 
[   0.2921 ] Boot Rom communication
[   0.2931 ] tegrarcm_v2 --instance /dev/bus/usb/002/059 --chip 0x18 --rcm rcm_list_signed.xml
[   0.2939 ] BR_CID: 0x81801001642ca6c61c00000004010040
[   0.2944 ] RCM version 0X180001
[   0.2948 ] Boot Rom communication completed
[   1.3011 ] 
[   1.3022 ] tegrarcm_v2 --instance /dev/bus/usb/002/059 --isapplet
[   1.3032 ] USB communication failed.Check if device is in recovery
[   1.3032 ] 
[   1.3040 ] tegradevflash_v2 --instance /dev/bus/usb/002/059 --iscpubl
[   1.3049 ] Cannot Open USB
[   1.3049 ] 
[  31.4673 ] Retrieving board information
[  31.4684 ] tegrarcm_v2 --instance /dev/bus/usb/002/059 --oem platformdetails chip chip_info.bin
[  31.4694 ] USB communication failed.Check if device is in recovery
[  31.4694 ] 
[  31.4703 ] tegradevflash_v2 --instance /dev/bus/usb/002/059 --oem platformdetails chip chip_info.bin
[  31.4716 ] Cannot Open USB
[  31.4716 ] 
Error: Return value 8
Command tegradevflash_v2 --instance /dev/bus/usb/002/059 --oem platformdetails chip chip_info.bin

That’s the failure.

I disconnected the other TX2s and moved this one to being plugged directly in the the PC.

The above command still fails, BUT, since it’s now the only TX2 attached, I immediately reran the command leaving off the --instance parameter, and it worked.

That’s the only difference between working and not-working: the presence or absence of the --instance parameter.

Is this a known issue?

Flashing is about 4-5 minutes per TX2 and we’d like to parallelize that to keep our production time down.

I searched via devtalk’s search and Google and could only turn up one post asking about this for TX1s, with an answer of “it can’t be done”. I assume that post predates the instructions in the documentation I mentioned above.

Interesting!

stracing reveals that the first process in the sequence opens the USB device successfully, twice:

[pid 30311] open("/dev/bus/usb/002/062", O_RDWR) = 3
...
[pid 30311] close(3 <unfinished ...>
[pid 30250] <... read resumed> "B", 1)  = 1
[pid 30310] write(1, "--skipuid ", 10)  = 10
[pid 30311] <... close resumed> )       = 0
...
[pid 30311] open("/dev/bus/usb/002/062", O_RDWR <unfinished ...>
[pid 30310] <... write resumed> )       = 1
[pid 30250] read(4, "R", 1)             = 1
[pid 30310] write(1, "[", 1 <unfinished ...>
[pid 30250] write(1, "R", 1R <unfinished ...>
[pid 30311] <... open resumed> )        = 3

Every other process is getting ENOENT:

[pid 30335] open("/dev/bus/usb/002/062", O_RDWR <unfinished ...>
[pid 30334] <... write resumed> )       = 1
[pid 30250] close(5 <unfinished ...>
[pid 30335] <... open resumed> )        = -1 ENOENT (No such file or directory)

After this /dev/bus/usb/002/063 exists, so there’s some problem where the TX2 re-enumerates and the “–instance” handling doesn’t know to account for that.

strace of a successful run:

[pid 30965] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 30970] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 30970] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 30972] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 30972] open("/dev/bus/usb/002/063", O_RDWR) = 5
[pid 30974] open("/dev/bus/usb/002/063", O_RDWR) = 5
[pid 30974] open("/dev/bus/usb/002/063", O_RDWR) = 5
[pid 31050] open("/dev/bus/usb/002/063", O_RDWR) = 5
[pid 31050] open("/dev/bus/usb/002/063", O_RDWR) = 5
[pid 31052] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 31052] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 31054] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 31054] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 31056] open("/dev/bus/usb/002/063", O_RDWR <unfinished ...>
[pid 31065] open("/dev/bus/usb/002/032", O_RDWR <unfinished ...>
[pid 31065] open("/dev/bus/usb/002/031", O_RDWR) = 5
[pid 31065] open("/dev/bus/usb/002/030", O_RDWR) = 5
[pid 31065] open("/dev/bus/usb/002/004", O_RDWR) = 5
[pid 31065] open("/dev/bus/usb/002/003", O_RDWR) = 5
[pid 31065] open("/dev/bus/usb/002/002", O_RDWR) = 5
[pid 31065] open("/dev/bus/usb/002/001", O_RDWR) = 5
[pid 31082] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>
[pid 31084] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>
[pid 31084] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>
[pid 31086] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>
[pid 31090] open("/dev/bus/usb/002/064", O_RDWR) = 5
[pid 31132] open("/dev/bus/usb/002/064", O_RDWR) = 5
[pid 31134] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>
[pid 31136] open("/dev/bus/usb/002/064", O_RDWR <unfinished ...>

shows the existing instance being opened, and its incremented version later on, and a bunch of other USB devices.

smacdonald,

You are using 2 Jetson TX2 devices for your testing, correct?
I assume “multi_flash_tegra.sh” can be executed. If not, you might need to chmod +x

"USB communication failed.Check if device is in recovery
=> are the USB under recovery mode for all the devices connected? lsusb will tell.

One of the relevant Forum thread,

For production line flashing, we will need to check if we have such testing data. Another common way is to use gang programmer to duplicate the flash image.

Yes, I have two TX2s. The script is exectuable.

Yes, all the devices are in recovery mode.

I did not see that thread before, but it only says to check the “Flashing Multiple Tegra Devices” which as I said in my original post, those instructions do not work.

In the bottom part of my original post, I believe I discovered the exact problem: during the normal flashing operation, the TX2 will re-enumerate on the USB bus, and it will come up at a different device number.
When flashing a single TX2, the flash.sh and friends all just use the TX2 attached to the bus, without regard to its bus & device numbers.
When flashing multiple TX2s, the flash.sh and friends get passed a ‘–instance /dev/bus/usb/002/064’ reference to the TX2, which is invalid once the re-enumeration occurs and the TX2 comes up at /dev/bus/usb/002/066 instead.

nVidia’s tooling needs to track the attached TX2s better. ‘tegrarcm_v2 --uid’ appears to get a unique serial-number-type identifier from the TX2, that identifier should be passed instead of the USB bus device reference.

I’d fix the scripts myself, but some of these programs are compiled binaries. Is it at all possible to get the source code for those? We can sign an NDA.

I’m flashing the image to the internal storage on the TX2. A gang programmer (where you plug in many SD cards for example) isn’t relevant here… unless… does nVidia have gang programming devices for TX2s? We’d buy that.

I don’t have multiple TX2s to flash, so I don’t know how it behaves in practice. I see something though of interest: The USB re-enumerating. One place this occurs even on a single TX2 is if the host is a VM. Is this a native install host? If it turns out to be a VM this would be a USB re-enumeration issue.

My original testing was on a native Ubuntu 14.04 host.

I intend to run flash.sh from within a docker container though.

You may find issues with docker, one of which will be you need to find a way for docker to own that USB device regardless of enumeration order.

The USB bus is passed through to the docker container. The TX2 behaviour on USB is the same on my host natively as it is within the container.

hello smacdonald,

we had also saving the flashing log in the background,
could you please check and share the log files to us,
the file naming would be something like below. thanks

flash_${BUS}_${DEV}.log

I had removed those, so I just recreated them. Ah… there doesn’t seem to be a mechanism to attach files, so cut n pasted code blocks it is. Sorry about this.

Ubuntu 14.04.5 LTS amd64 laptop, running Jetpack 3.1. This is a native host operation, there is no virtualization of any kind in place. (The Docker daemon is running though.)

multi_tegra_flash.sh created as per instructions from the html page in the Jetpack install.

Both TX2s in recovery mode, attached via USB to an Anker powered hub, then to my laptop. Since I know people will ask, I re-ran the test with the TX2s attached directly to my laptop, no change. Those results are the second batch below.

This is 100% reproducible on my setup, and should be 100% reproducible by nVidia or anyone.

smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ !lsus
lsusb -d 0955:
Bus 002 Device 008: ID 0955:7c18 NVidia Corp. 
Bus 002 Device 007: ID 0955:7c18 NVidia Corp. 
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ sudo ./multi_tegra_flash.sh
start flash with PID=19798
start flashing device: /dev/bus/usb/002/008, process ID: 19813
start flashing device: /dev/bus/usb/002/007, process ID: 19946
2 flash processes ongoing:  19813 19946
onging processes: 19813 19946
onging processes: 19813 19946
onging processes: 19813 19946
onging processes: 19946
onging processes: 19946
onging processes:
All Flash Done, exit!
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ !lsusb
lsusb -d 0955:
Bus 002 Device 009: ID 0955:7c18 NVidia Corp. 
Bus 002 Device 010: ID 0955:7c18 NVidia Corp. 
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$

You can see here that the TX2s have re-enumerated on the USB bus. Since the new numbers no longer match the old numbers, ‘–instance /dev/bus/usb/002/008’ fails.

smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./19798/pid.log
19813
19946
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./19798/flash_002_007.log
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.0009 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0017 ] Assuming zero filled SBK key
[   0.0020 ] 
[   0.0021 ] Generating RCM messages
[   0.0030 ] tegrarcm_v2 --instance /dev/bus/usb/002/007 --listrcm rcm_list.xml --chip 0x18 --download rcm mb1_recovery_prod.bin 0 0
[   0.0040 ] RCM 0 is saved as rcm_0.rcm
[   0.0044 ] RCM 1 is saved as rcm_1.rcm
[   0.0044 ] List of rcm files are saved in rcm_list.xml
[   0.0044 ] 
[   0.0044 ] Signing RCM messages
[   0.0053 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0062 ] Assuming zero filled SBK key
[   0.0096 ] 
[   0.0096 ] Copying signature to RCM mesages
[   0.0105 ] tegrarcm_v2 --instance /dev/bus/usb/002/007 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0117 ] 
[   0.0118 ] Parsing partition layout
[   0.0127 ] tegraparser_v2 --pt flash.xml.tmp
[   0.0139 ] 
[   0.0139 ] Creating list of images to be signed
[   0.0148 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   0.0223 ] 
[   0.0223 ] Generating signatures
[   0.0234 ] tegrasign_v2 --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.0243 ] Assuming zero filled SBK key
[   0.1321 ] 
[   0.1321 ] Generating br-bct
[   0.1330 ] Updating dev and MSS params in BR BCT
[   0.1331 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18
[   0.1482 ] 
[   0.1482 ] Updating bl info
[   0.1491 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.1528 ] 
[   0.1528 ] Updating smd info
[   0.1537 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesmdinfo flash.xml.bin
[   0.1550 ] 
[   0.1550 ] Updating Odmdata
[   0.1559 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatefields Odmdata =0x1090000
[   0.1571 ] 
[   0.1571 ] Get Signed section bct
[   0.1581 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --listbct bct_list.xml
[   0.1591 ] 
[   0.1592 ] Signing BCT
[   0.1609 ] tegrasign_v2 --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.1618 ] Assuming zero filled SBK key
[   0.1620 ] 
[   0.1620 ] Updating BCT with signature
[   0.1628 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesig bct_list_signed.xml
[   0.1641 ] 
[   0.1641 ] Generating coldboot mb1-bct
[   0.1650 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr mobile_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.1658 ] MB1-BCT version: 0xe
[   0.1660 ] Copying Sdram info from 2 to 3 set
[   0.1770 ] Copying Sdram info from 0 to 1 set
[   0.1772 ] Packing sdram param for instance[0]
[   0.1773 ] Packing sdram param for instance[1]
[   0.1775 ] Packing sdram param for instance[2]
[   0.1776 ] Packing sdram param for instance[3]

[   0.1777 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.1780 ] Appending platform config data of size :- 2904

[   0.1782 ] Parsing config file :mobile_scr.cfg 
[   0.1783 ] Appending platform config data of size :- 12240

[   0.1792 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.1794 ] Appending platform config data of size :- 24
[   0.1794 ] 
[   0.1794 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.1794 ] Appending platform config data of size :- 744
[   0.1794 ] 
[   0.1794 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.1794 ] Appending platform config data of size :- 64
[   0.1794 ] 
[   0.1794 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.1794 ] Appending platform config data of size :- 1628
[   0.1794 ] 
[   0.1795 ] Updating mb1-bct with firmware information
[   0.1803 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.1811 ] MB1-BCT version: 0xe
[   0.1815 ] 
[   0.1815 ] Updating mb1-bct with storage information
[   0.1824 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.1833 ] MB1-BCT version: 0xe
[   0.1837 ] 
[   0.1846 ] tegrahost_v2 --align mb1_cold_boot_bct_MB1.bct
[   0.1856 ] 
[   0.1865 ] tegrahost_v2 --appendsigheader mb1_cold_boot_bct_MB1.bct zerosbk
[   0.1875 ] 
[   0.1887 ] tegrasign_v2 --key None --list mb1_cold_boot_bct_MB1_sigheader.bct_list.xml
[   0.1895 ] Assuming zero filled SBK key
[   0.1911 ] 
[   0.1922 ] tegrahost_v2 --updatesigheader mb1_cold_boot_bct_MB1_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_sigheader.bct.hash zerosbk
[   0.1932 ] 
[   0.1933 ] Generating recovery mb1-bct
[   0.1942 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr minimal_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.1951 ] MB1-BCT version: 0xe
[   0.1953 ] Copying Sdram info from 2 to 3 set
[   0.2064 ] Copying Sdram info from 0 to 1 set
[   0.2066 ] Packing sdram param for instance[0]
[   0.2068 ] Packing sdram param for instance[1]
[   0.2071 ] Packing sdram param for instance[2]
[   0.2073 ] Packing sdram param for instance[3]

[   0.2075 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.2079 ] Appending platform config data of size :- 2904

[   0.2082 ] Parsing config file :minimal_scr.cfg 
[   0.2084 ] Appending platform config data of size :- 12240

[   0.2094 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2098 ] Appending platform config data of size :- 24
[   0.2098 ] 
[   0.2098 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2098 ] Appending platform config data of size :- 744
[   0.2098 ] 
[   0.2098 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2098 ] Appending platform config data of size :- 64
[   0.2098 ] 
[   0.2098 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2098 ] Appending platform config data of size :- 1628
[   0.2098 ] 
[   0.2098 ] Updating mb1-bct with firmware information
[   0.2106 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2115 ] MB1-BCT version: 0xe
[   0.2120 ] 
[   0.2120 ] Updating mb1-bct with storage information
[   0.2130 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2138 ] MB1-BCT version: 0xe
[   0.2143 ] 
[   0.2152 ] tegrahost_v2 --align mb1_bct_MB1.bct
[   0.2161 ] 
[   0.2170 ] tegrahost_v2 --appendsigheader mb1_bct_MB1.bct zerosbk
[   0.2181 ] 
[   0.2191 ] tegrasign_v2 --key None --list mb1_bct_MB1_sigheader.bct_list.xml
[   0.2199 ] Assuming zero filled SBK key
[   0.2215 ] 
[   0.2225 ] tegrahost_v2 --updatesigheader mb1_bct_MB1_sigheader.bct.encrypt mb1_bct_MB1_sigheader.bct.hash zerosbk
[   0.2235 ] 
[   0.2236 ] Copying signatures
[   0.2245 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2332 ] 
[   0.2332 ] Boot Rom communication
[   0.2341 ] tegrarcm_v2 --instance /dev/bus/usb/002/007 --chip 0x18 --rcm rcm_list_signed.xml
[   0.2350 ] BR_CID: 0x818010016430b8830400000008fe8340
[   0.2355 ] RCM version 0X180001
[   0.2360 ] Boot Rom communication completed
[   1.2428 ] 
[   1.2438 ] tegrarcm_v2 --instance /dev/bus/usb/002/007 --isapplet
[   1.2447 ] USB communication failed.Check if device is in recovery
[   1.2447 ] 
[   1.2456 ] tegradevflash_v2 --instance /dev/bus/usb/002/007 --iscpubl
[   1.2464 ] Cannot Open USB
[   1.2464 ] 
[  31.4535 ] Retrieving board information
[  31.4546 ] tegrarcm_v2 --instance /dev/bus/usb/002/007 --oem platformdetails chip chip_info.bin
[  31.4556 ] USB communication failed.Check if device is in recovery
[  31.4557 ] 
[  31.4566 ] tegradevflash_v2 --instance /dev/bus/usb/002/007 --oem platformdetails chip chip_info.bin
[  31.4576 ] Cannot Open USB
[  31.4576 ] 
Error: Return value 8
Command tegradevflash_v2 --instance /dev/bus/usb/002/007 --oem platformdetails chip chip_info.bin
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./19798/flash_002_008.log
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 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0028 ] Assuming zero filled SBK key
[   0.0098 ] 
[   0.0101 ] Generating RCM messages
[   0.0135 ] tegrarcm_v2 --instance /dev/bus/usb/002/008 --listrcm rcm_list.xml --chip 0x18 --download rcm mb1_recovery_prod.bin 0 0
[   0.0153 ] RCM 0 is saved as rcm_0.rcm
[   0.0160 ] RCM 1 is saved as rcm_1.rcm
[   0.0160 ] List of rcm files are saved in rcm_list.xml
[   0.0160 ] 
[   0.0160 ] Signing RCM messages
[   0.0170 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0180 ] Assuming zero filled SBK key
[   0.0214 ] 
[   0.0214 ] Copying signature to RCM mesages
[   0.0224 ] tegrarcm_v2 --instance /dev/bus/usb/002/008 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0237 ] 
[   0.0237 ] Parsing partition layout
[   0.0253 ] tegraparser_v2 --pt flash.xml.tmp
[   0.0268 ] 
[   0.0269 ] Creating list of images to be signed
[   0.0283 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   0.0483 ] 
[   0.0483 ] Generating signatures
[   0.0494 ] tegrasign_v2 --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.0504 ] Assuming zero filled SBK key
[   0.1610 ] 
[   0.1610 ] Generating br-bct
[   0.1643 ] Updating dev and MSS params in BR BCT
[   0.1643 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18
[   0.1783 ] 
[   0.1783 ] Updating bl info
[   0.1793 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.1806 ] 
[   0.1806 ] Updating smd info
[   0.1815 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesmdinfo flash.xml.bin
[   0.1827 ] 
[   0.1828 ] Updating Odmdata
[   0.1837 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatefields Odmdata =0x1090000
[   0.1848 ] 
[   0.1849 ] Get Signed section bct
[   0.1858 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --listbct bct_list.xml
[   0.1869 ] 
[   0.1869 ] Signing BCT
[   0.1887 ] tegrasign_v2 --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.1895 ] Assuming zero filled SBK key
[   0.1898 ] 
[   0.1898 ] Updating BCT with signature
[   0.1907 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesig bct_list_signed.xml
[   0.1919 ] 
[   0.1919 ] Generating coldboot mb1-bct
[   0.1928 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr mobile_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.1937 ] MB1-BCT version: 0xe
[   0.1939 ] Copying Sdram info from 2 to 3 set
[   0.2138 ] Copying Sdram info from 0 to 1 set
[   0.2141 ] Packing sdram param for instance[0]
[   0.2142 ] Packing sdram param for instance[1]
[   0.2144 ] Packing sdram param for instance[2]
[   0.2146 ] Packing sdram param for instance[3]

[   0.2148 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.2151 ] Appending platform config data of size :- 2904

[   0.2153 ] Parsing config file :mobile_scr.cfg 
[   0.2155 ] Appending platform config data of size :- 12240

[   0.2171 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2175 ] Appending platform config data of size :- 24

[   0.2177 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2181 ] Appending platform config data of size :- 744
[   0.2181 ] 
[   0.2181 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2181 ] Appending platform config data of size :- 64
[   0.2181 ] 
[   0.2181 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2181 ] Appending platform config data of size :- 1628
[   0.2181 ] 
[   0.2181 ] Updating mb1-bct with firmware information
[   0.2190 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2199 ] MB1-BCT version: 0xe
[   0.2203 ] 
[   0.2203 ] Updating mb1-bct with storage information
[   0.2212 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2220 ] MB1-BCT version: 0xe
[   0.2225 ] 
[   0.2234 ] tegrahost_v2 --align mb1_cold_boot_bct_MB1.bct
[   0.2243 ] 
[   0.2252 ] tegrahost_v2 --appendsigheader mb1_cold_boot_bct_MB1.bct zerosbk
[   0.2262 ] 
[   0.2273 ] tegrasign_v2 --key None --list mb1_cold_boot_bct_MB1_sigheader.bct_list.xml
[   0.2281 ] Assuming zero filled SBK key
[   0.2297 ] 
[   0.2308 ] tegrahost_v2 --updatesigheader mb1_cold_boot_bct_MB1_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_sigheader.bct.hash zerosbk
[   0.2319 ] 
[   0.2319 ] Generating recovery mb1-bct
[   0.2329 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr minimal_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.2338 ] MB1-BCT version: 0xe
[   0.2340 ] Copying Sdram info from 2 to 3 set
[   0.2451 ] Copying Sdram info from 0 to 1 set
[   0.2453 ] Packing sdram param for instance[0]
[   0.2455 ] Packing sdram param for instance[1]
[   0.2457 ] Packing sdram param for instance[2]
[   0.2459 ] Packing sdram param for instance[3]

[   0.2460 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.2464 ] Appending platform config data of size :- 2904

[   0.2467 ] Parsing config file :minimal_scr.cfg 
[   0.2469 ] Appending platform config data of size :- 12240

[   0.2483 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2486 ] Appending platform config data of size :- 24

[   0.2488 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2490 ] Appending platform config data of size :- 744
[   0.2490 ] 
[   0.2491 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2491 ] Appending platform config data of size :- 64
[   0.2491 ] 
[   0.2491 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2491 ] Appending platform config data of size :- 1628
[   0.2491 ] 
[   0.2491 ] Updating mb1-bct with firmware information
[   0.2499 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2508 ] MB1-BCT version: 0xe
[   0.2514 ] 
[   0.2514 ] Updating mb1-bct with storage information
[   0.2523 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2532 ] MB1-BCT version: 0xe
[   0.2538 ] 
[   0.2547 ] tegrahost_v2 --align mb1_bct_MB1.bct
[   0.2556 ] 
[   0.2564 ] tegrahost_v2 --appendsigheader mb1_bct_MB1.bct zerosbk
[   0.2574 ] 
[   0.2585 ] tegrasign_v2 --key None --list mb1_bct_MB1_sigheader.bct_list.xml
[   0.2593 ] Assuming zero filled SBK key
[   0.2610 ] 
[   0.2621 ] tegrahost_v2 --updatesigheader mb1_bct_MB1_sigheader.bct.encrypt mb1_bct_MB1_sigheader.bct.hash zerosbk
[   0.2631 ] 
[   0.2632 ] Copying signatures
[   0.2641 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2725 ] 
[   0.2725 ] Boot Rom communication
[   0.2734 ] tegrarcm_v2 --instance /dev/bus/usb/002/008 --chip 0x18 --rcm rcm_list_signed.xml
[   0.2743 ] BR_CID: 0x81801001642d98421c00000014030400
[   0.2748 ] RCM version 0X180001
[   0.2752 ] Boot Rom communication completed
[   1.2819 ] 
[   1.2829 ] tegrarcm_v2 --instance /dev/bus/usb/002/008 --isapplet
[   1.2837 ] USB communication failed.Check if device is in recovery
[   1.2838 ] 
[   1.2876 ] tegradevflash_v2 --instance /dev/bus/usb/002/008 --iscpubl
[   1.2884 ] Cannot Open USB
[   1.2893 ] 
[  31.4281 ] Retrieving board information
[  31.4305 ] tegrarcm_v2 --instance /dev/bus/usb/002/008 --oem platformdetails chip chip_info.bin
[  31.4317 ] USB communication failed.Check if device is in recovery
[  31.4318 ] 
[  31.4331 ] tegradevflash_v2 --instance /dev/bus/usb/002/008 --oem platformdetails chip chip_info.bin
[  31.4341 ] Cannot Open USB
[  31.4342 ] 
Error: Return value 8
Command tegradevflash_v2 --instance /dev/bus/usb/002/008 --oem platformdetails chip chip_info.bin

Directly attached TX2s attempt:

smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ lsusb -d 0955:
Bus 002 Device 015: ID 0955:7c18 NVidia Corp. 
Bus 002 Device 014: ID 0955:7c18 NVidia Corp. 
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ sudo ./multi_tegra_flash.sh
start flash with PID=21700
start flashing device: /dev/bus/usb/002/015, process ID: 21715
start flashing device: /dev/bus/usb/002/014, process ID: 21849
2 flash processes ongoing:  21715 21849
onging processes: 21715 21849
onging processes: 21715 21849
onging processes: 21715 21849
onging processes: 21849
onging processes: 21849
onging processes:
All Flash Done, exit!
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ lsusb -d 0955:
Bus 002 Device 016: ID 0955:7c18 NVidia Corp. 
Bus 002 Device 017: ID 0955:7c18 NVidia Corp. 
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ dir -str

Same result, failure.

smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./21700/pid.log
21715
21849
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./21700/flash_002_014.log
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.0013 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0025 ] Assuming zero filled SBK key
[   0.0029 ] 
[   0.0030 ] Generating RCM messages
[   0.0041 ] tegrarcm_v2 --instance /dev/bus/usb/002/014 --listrcm rcm_list.xml --chip 0x18 --download rcm mb1_recovery_prod.bin 0 0
[   0.0053 ] RCM 0 is saved as rcm_0.rcm
[   0.0057 ] RCM 1 is saved as rcm_1.rcm
[   0.0057 ] List of rcm files are saved in rcm_list.xml
[   0.0057 ] 
[   0.0058 ] Signing RCM messages
[   0.0069 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0080 ] Assuming zero filled SBK key
[   0.0127 ] 
[   0.0127 ] Copying signature to RCM mesages
[   0.0139 ] tegrarcm_v2 --instance /dev/bus/usb/002/014 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0154 ] 
[   0.0155 ] Parsing partition layout
[   0.0165 ] tegraparser_v2 --pt flash.xml.tmp
[   0.0179 ] 
[   0.0179 ] Creating list of images to be signed
[   0.0190 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   0.0288 ] 
[   0.0288 ] Generating signatures
[   0.0301 ] tegrasign_v2 --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.0312 ] Assuming zero filled SBK key
[   0.1516 ] 
[   0.1517 ] Generating br-bct
[   0.1527 ] Updating dev and MSS params in BR BCT
[   0.1527 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18
[   0.1645 ] 
[   0.1645 ] Updating bl info
[   0.1655 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.1683 ] 
[   0.1683 ] Updating smd info
[   0.1691 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesmdinfo flash.xml.bin
[   0.1702 ] 
[   0.1702 ] Updating Odmdata
[   0.1711 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatefields Odmdata =0x1090000
[   0.1723 ] 
[   0.1723 ] Get Signed section bct
[   0.1732 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --listbct bct_list.xml
[   0.1741 ] 
[   0.1741 ] Signing BCT
[   0.1758 ] tegrasign_v2 --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.1766 ] Assuming zero filled SBK key
[   0.1769 ] 
[   0.1769 ] Updating BCT with signature
[   0.1777 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesig bct_list_signed.xml
[   0.1788 ] 
[   0.1788 ] Generating coldboot mb1-bct
[   0.1796 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr mobile_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.1804 ] MB1-BCT version: 0xe
[   0.1805 ] Copying Sdram info from 2 to 3 set
[   0.1978 ] Copying Sdram info from 0 to 1 set
[   0.1979 ] Packing sdram param for instance[0]
[   0.1980 ] Packing sdram param for instance[1]
[   0.1982 ] Packing sdram param for instance[2]
[   0.1984 ] Packing sdram param for instance[3]

[   0.1986 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.1990 ] Appending platform config data of size :- 2904

[   0.1992 ] Parsing config file :mobile_scr.cfg 
[   0.1993 ] Appending platform config data of size :- 12240

[   0.2001 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2004 ] Appending platform config data of size :- 24
[   0.2004 ] 
[   0.2004 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2004 ] Appending platform config data of size :- 744
[   0.2004 ] 
[   0.2004 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2004 ] Appending platform config data of size :- 64
[   0.2004 ] 
[   0.2004 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2004 ] Appending platform config data of size :- 1628
[   0.2004 ] 
[   0.2004 ] Updating mb1-bct with firmware information
[   0.2014 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2024 ] MB1-BCT version: 0xe
[   0.2031 ] 
[   0.2031 ] Updating mb1-bct with storage information
[   0.2041 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2050 ] MB1-BCT version: 0xe
[   0.2055 ] 
[   0.2064 ] tegrahost_v2 --align mb1_cold_boot_bct_MB1.bct
[   0.2073 ] 
[   0.2082 ] tegrahost_v2 --appendsigheader mb1_cold_boot_bct_MB1.bct zerosbk
[   0.2093 ] 
[   0.2104 ] tegrasign_v2 --key None --list mb1_cold_boot_bct_MB1_sigheader.bct_list.xml
[   0.2112 ] Assuming zero filled SBK key
[   0.2128 ] 
[   0.2140 ] tegrahost_v2 --updatesigheader mb1_cold_boot_bct_MB1_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_sigheader.bct.hash zerosbk
[   0.2151 ] 
[   0.2151 ] Generating recovery mb1-bct
[   0.2161 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr minimal_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.2169 ] MB1-BCT version: 0xe
[   0.2172 ] Copying Sdram info from 2 to 3 set
[   0.2328 ] Copying Sdram info from 0 to 1 set
[   0.2330 ] Packing sdram param for instance[0]
[   0.2332 ] Packing sdram param for instance[1]
[   0.2334 ] Packing sdram param for instance[2]
[   0.2336 ] Packing sdram param for instance[3]

[   0.2339 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.2343 ] Appending platform config data of size :- 2904

[   0.2346 ] Parsing config file :minimal_scr.cfg 
[   0.2348 ] Appending platform config data of size :- 12240

[   0.2358 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2361 ] Appending platform config data of size :- 24
[   0.2361 ] 
[   0.2361 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2361 ] Appending platform config data of size :- 744
[   0.2361 ] 
[   0.2361 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2361 ] Appending platform config data of size :- 64
[   0.2361 ] 
[   0.2361 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2361 ] Appending platform config data of size :- 1628
[   0.2362 ] 
[   0.2362 ] Updating mb1-bct with firmware information
[   0.2371 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2379 ] MB1-BCT version: 0xe
[   0.2383 ] 
[   0.2384 ] Updating mb1-bct with storage information
[   0.2393 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2402 ] MB1-BCT version: 0xe
[   0.2408 ] 
[   0.2417 ] tegrahost_v2 --align mb1_bct_MB1.bct
[   0.2425 ] 
[   0.2435 ] tegrahost_v2 --appendsigheader mb1_bct_MB1.bct zerosbk
[   0.2445 ] 
[   0.2456 ] tegrasign_v2 --key None --list mb1_bct_MB1_sigheader.bct_list.xml
[   0.2464 ] Assuming zero filled SBK key
[   0.2481 ] 
[   0.2492 ] tegrahost_v2 --updatesigheader mb1_bct_MB1_sigheader.bct.encrypt mb1_bct_MB1_sigheader.bct.hash zerosbk
[   0.2501 ] 
[   0.2502 ] Copying signatures
[   0.2512 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2603 ] 
[   0.2604 ] Boot Rom communication
[   0.2613 ] tegrarcm_v2 --instance /dev/bus/usb/002/014 --chip 0x18 --rcm rcm_list_signed.xml
[   0.2621 ] BR_CID: 0x81801001642d98421c00000014030400
[   0.2626 ] RCM version 0X180001
[   0.2629 ] Boot Rom communication completed
[   1.2691 ] 
[   1.2701 ] tegrarcm_v2 --instance /dev/bus/usb/002/014 --isapplet
[   1.2711 ] USB communication failed.Check if device is in recovery
[   1.2711 ] 
[   1.2720 ] tegradevflash_v2 --instance /dev/bus/usb/002/014 --iscpubl
[   1.2728 ] Cannot Open USB
[   1.2728 ] 
[  31.4368 ] Retrieving board information
[  31.4378 ] tegrarcm_v2 --instance /dev/bus/usb/002/014 --oem platformdetails chip chip_info.bin
[  31.4387 ] USB communication failed.Check if device is in recovery
[  31.4388 ] 
[  31.4397 ] tegradevflash_v2 --instance /dev/bus/usb/002/014 --oem platformdetails chip chip_info.bin
[  31.4406 ] Cannot Open USB
[  31.4407 ] 
Error: Return value 8
Command tegradevflash_v2 --instance /dev/bus/usb/002/014 --oem platformdetails chip chip_info.bin
smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat ./21700/flash_002_015.log
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.0010 ] tegrasign_v2 --key None --getmode mode.txt
[   0.0020 ] Assuming zero filled SBK key
[   0.0024 ] 
[   0.0024 ] Generating RCM messages
[   0.0036 ] tegrarcm_v2 --instance /dev/bus/usb/002/015 --listrcm rcm_list.xml --chip 0x18 --download rcm mb1_recovery_prod.bin 0 0
[   0.0054 ] RCM 0 is saved as rcm_0.rcm
[   0.0060 ] RCM 1 is saved as rcm_1.rcm
[   0.0060 ] List of rcm files are saved in rcm_list.xml
[   0.0060 ] 
[   0.0061 ] Signing RCM messages
[   0.0093 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0114 ] Assuming zero filled SBK key
[   0.0151 ] 
[   0.0151 ] Copying signature to RCM mesages
[   0.0160 ] tegrarcm_v2 --instance /dev/bus/usb/002/015 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0171 ] 
[   0.0171 ] Parsing partition layout
[   0.0182 ] tegraparser_v2 --pt flash.xml.tmp
[   0.0194 ] 
[   0.0194 ] Creating list of images to be signed
[   0.0204 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --list images_list.xml zerosbk
[   0.0284 ] 
[   0.0285 ] Generating signatures
[   0.0294 ] tegrasign_v2 --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.0303 ] Assuming zero filled SBK key
[   0.1455 ] 
[   0.1455 ] Generating br-bct
[   0.1464 ] Updating dev and MSS params in BR BCT
[   0.1465 ] tegrabct_v2 --dev_param emmc.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --brbct br_bct.cfg --chip 0x18
[   0.1583 ] 
[   0.1583 ] Updating bl info
[   0.1592 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.1619 ] 
[   0.1619 ] Updating smd info
[   0.1628 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesmdinfo flash.xml.bin
[   0.1639 ] 
[   0.1639 ] Updating Odmdata
[   0.1648 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatefields Odmdata =0x1090000
[   0.1658 ] 
[   0.1658 ] Get Signed section bct
[   0.1667 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --listbct bct_list.xml
[   0.1677 ] 
[   0.1678 ] Signing BCT
[   0.1695 ] tegrasign_v2 --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.1703 ] Assuming zero filled SBK key
[   0.1706 ] 
[   0.1706 ] Updating BCT with signature
[   0.1715 ] tegrabct_v2 --brbct br_bct_BR.bct --chip 0x18 --updatesig bct_list_signed.xml
[   0.1726 ] 
[   0.1727 ] Generating coldboot mb1-bct
[   0.1735 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr mobile_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.1744 ] MB1-BCT version: 0xe
[   0.1746 ] Copying Sdram info from 2 to 3 set
[   0.1861 ] Copying Sdram info from 0 to 1 set
[   0.1863 ] Packing sdram param for instance[0]
[   0.1865 ] Packing sdram param for instance[1]
[   0.1868 ] Packing sdram param for instance[2]
[   0.1870 ] Packing sdram param for instance[3]

[   0.1872 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.1877 ] Appending platform config data of size :- 2904

[   0.1880 ] Parsing config file :mobile_scr.cfg 
[   0.1882 ] Appending platform config data of size :- 12240

[   0.1891 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.1895 ] Appending platform config data of size :- 24
[   0.1895 ] 
[   0.1895 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.1895 ] Appending platform config data of size :- 744
[   0.1895 ] 
[   0.1895 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.1895 ] Appending platform config data of size :- 64
[   0.1895 ] 
[   0.1895 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.1895 ] Appending platform config data of size :- 1628
[   0.1895 ] 
[   0.1895 ] Updating mb1-bct with firmware information
[   0.1904 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.1913 ] MB1-BCT version: 0xe
[   0.1917 ] 
[   0.1917 ] Updating mb1-bct with storage information
[   0.1926 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_cold_boot_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.1935 ] MB1-BCT version: 0xe
[   0.1940 ] 
[   0.1949 ] tegrahost_v2 --align mb1_cold_boot_bct_MB1.bct
[   0.1957 ] 
[   0.1965 ] tegrahost_v2 --appendsigheader mb1_cold_boot_bct_MB1.bct zerosbk
[   0.1974 ] 
[   0.1984 ] tegrasign_v2 --key None --list mb1_cold_boot_bct_MB1_sigheader.bct_list.xml
[   0.1991 ] Assuming zero filled SBK key
[   0.2007 ] 
[   0.2018 ] tegrahost_v2 --updatesigheader mb1_cold_boot_bct_MB1_sigheader.bct.encrypt mb1_cold_boot_bct_MB1_sigheader.bct.hash zerosbk
[   0.2029 ] 
[   0.2030 ] Generating recovery mb1-bct
[   0.2038 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct.cfg --sdram P3310_A00_8GB_Samsung_8GB_lpddr4_204Mhz_A02_l4t.cfg --misc tegra186-mb1-bct-misc-si-l4t.cfg --scr minimal_scr.cfg --pinmux tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg --pmc tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg --pmic tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg --brcommand tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg --prod tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg
[   0.2047 ] MB1-BCT version: 0xe
[   0.2048 ] Copying Sdram info from 2 to 3 set
[   0.2158 ] Copying Sdram info from 0 to 1 set
[   0.2160 ] Packing sdram param for instance[0]
[   0.2161 ] Packing sdram param for instance[1]
[   0.2162 ] Packing sdram param for instance[2]
[   0.2164 ] Packing sdram param for instance[3]

[   0.2165 ] Parsing config file :tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg 
[   0.2168 ] Appending platform config data of size :- 2904

[   0.2170 ] Parsing config file :minimal_scr.cfg 
[   0.2171 ] Appending platform config data of size :- 12240

[   0.2179 ] Parsing config file :tegra186-mb1-bct-pad-quill-p3310-1000-c03.cfg 
[   0.2182 ] Appending platform config data of size :- 24
[   0.2182 ] 
[   0.2182 ] Parsing config file :tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg 
[   0.2182 ] Appending platform config data of size :- 744
[   0.2182 ] 
[   0.2182 ] Parsing config file :tegra186-mb1-bct-bootrom-quill-p3310-1000-c03.cfg 
[   0.2182 ] Appending platform config data of size :- 64
[   0.2182 ] 
[   0.2182 ] Parsing config file :tegra186-mb1-bct-prod-quill-p3310-1000-c03.cfg 
[   0.2182 ] Appending platform config data of size :- 1628
[   0.2182 ] 
[   0.2182 ] Updating mb1-bct with firmware information
[   0.2190 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatefwinfo flash.xml.bin
[   0.2197 ] MB1-BCT version: 0xe
[   0.2202 ] 
[   0.2202 ] Updating mb1-bct with storage information
[   0.2210 ] tegrabct_v2 --chip 0x18 --mb1bct mb1_bct_MB1.bct --updatestorageinfo flash.xml.bin
[   0.2218 ] MB1-BCT version: 0xe
[   0.2222 ] 
[   0.2231 ] tegrahost_v2 --align mb1_bct_MB1.bct
[   0.2240 ] 
[   0.2248 ] tegrahost_v2 --appendsigheader mb1_bct_MB1.bct zerosbk
[   0.2258 ] 
[   0.2269 ] tegrasign_v2 --key None --list mb1_bct_MB1_sigheader.bct_list.xml
[   0.2277 ] Assuming zero filled SBK key
[   0.2293 ] 
[   0.2304 ] tegrahost_v2 --updatesigheader mb1_bct_MB1_sigheader.bct.encrypt mb1_bct_MB1_sigheader.bct.hash zerosbk
[   0.2314 ] 
[   0.2315 ] Copying signatures
[   0.2323 ] tegrahost_v2 --chip 0x18 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.2411 ] 
[   0.2411 ] Boot Rom communication
[   0.2421 ] tegrarcm_v2 --instance /dev/bus/usb/002/015 --chip 0x18 --rcm rcm_list_signed.xml
[   0.2430 ] BR_CID: 0x818010016430b8830400000008fe8340
[   0.2434 ] RCM version 0X180001
[   0.2438 ] Boot Rom communication completed
[   1.2509 ] 
[   1.2521 ] tegrarcm_v2 --instance /dev/bus/usb/002/015 --isapplet
[   1.2530 ] USB communication failed.Check if device is in recovery
[   1.2531 ] 
[   1.2538 ] tegradevflash_v2 --instance /dev/bus/usb/002/015 --iscpubl
[   1.2552 ] Cannot Open USB
[   1.2554 ] 
[  31.4388 ] Retrieving board information
[  31.4418 ] tegrarcm_v2 --instance /dev/bus/usb/002/015 --oem platformdetails chip chip_info.bin
[  31.4445 ] USB communication failed.Check if device is in recovery
[  31.4448 ] 
[  31.4476 ] tegradevflash_v2 --instance /dev/bus/usb/002/015 --oem platformdetails chip chip_info.bin
[  31.4503 ] Cannot Open USB
[  31.4506 ] 
Error: Return value 8
Command tegradevflash_v2 --instance /dev/bus/usb/002/015 --oem platformdetails chip chip_info.bin

19798.tar.gz (2.9 KB)
21700.tar.gz (2.91 KB)

Just in case:

smacdonald@L087:~/work/va/nvidia/jetpack/64_TX2/Linux_for_Tegra_tx2/bootloader$ cat multi_tegra_flash.sh 
#!/bin/bash
 
NVIDIA_USB_ID=0955:
 
# create a folder for saving log
PID=$$
mkdir ${PID}
 
echo "start flash with PID=${PID}"
 
## flash all devices in background
lsusb -d ${NVIDIA_USB_ID} | while IFS= read -r line
do
	BUS=`echo $line | awk '{print $2}'`
	DEV=`echo $line | awk '{print $4}' | cut -d ':' -f 1`
	USB_INSTANCE=`echo /dev/bus/usb/${BUS}/${DEV}`
	rm -f ./flash_${BUS}_${DEV}.log
	FLASHCMD=`cat flashcmd.txt`
	CMD="${FLASHCMD} --instance ${USB_INSTANCE}"
	(eval ${CMD} > ${PID}/flash_${BUS}_${DEV}.log) &
	PROCESS_ID=$!
	echo ${PROCESS_ID} >>${PID}/pid.log
	echo "start flashing device: ${USB_INSTANCE}, process ID: ${PROCESS_ID}"
	TIMEOUT=0
	while [ ${TIMEOUT} -lt 6 ]
	do
		cat ${PID}/flash_${BUS}_${DEV}.log | grep "system.img" 2>&1 >/dev/null
		if [ $? == 0 ]; then
			sleep 4
			break;
		else
			sleep 1
			let "TIMEOUT=TIMEOUT+1"
		fi
	done
done
 
## exit if pid file is not generated
if [ ! -e ${PID}/pid.log ]
then
	echo "no ongoing flash, exit"
	exit 1
fi
 
## print process info
PROCESS_NUM=`cat $PID/pid.log | wc -l`
echo -n "${PROCESS_NUM} flash processes ongoing: "
while read process
do
	echo -n " ${process}"
done < ${PID}/pid.log
echo
 
## wait all flash processes done
PROCESS_NUM=`cat $PID/pid.log | wc -l`
P_DONE=0
while [ ${P_DONE} -lt ${PROCESS_NUM} ]
do
	let "P_DONE=0"
	sleep 5
	echo -n "onging processes:"
	while read process
	do
		if [ -e /proc/${process} ]
		then
			echo -n " ${process}"
		else
			let "P_DONE=P_DONE+1"
		fi
	done < ${PID}/pid.log
	echo
done
 
echo "All Flash Done, exit!"

multi_tegra_flash.sh.gz (743 Bytes)

File attachments in the forum work only on an existing post…you can’t add them while creating the original post. If you hover your mouse over the “quote” icon in the upper right you will see other icons show up. The “paper clip” icon attaches to that pre-existing post. You may need to rename logs with a “.txt” suffix if the name is not liked by the filters.

No kidding. Okay, I’ve added the logs as zipped tarballs, but I’m going to leave the post as is.

Edit: Also added the multi_tegra_flash script to the other post.

Hi smacdonald,

We have release the latest 28.2 documentation.
Could you try this “multi_tegra_flash.sh” script?
We have check to flash two tx2 devices, it’s success!

L4T R28.2 Documentation: https://developer.nvidia.com/embedded/dlc/l4t-documentation-28-2-ga

Huzzah! Yes, this worked. The switch from ‘/dev/bus/usb/xxx/yyy’ to the USB physical tree ‘1-4.2.3’ descriptor is the difference. Since the physical location of the TX2 never changes it’s always the same and the existing tooling works just fine.

Yes, I tested the new multi flash script inside Jetpack 3.1 as that’s what we’ve standardized on for production purposes at the moment. So… it always worked, the 28.1 documentation wasn’t correct. :-)

Thanks all for the help!