Flash Firmware on TX2 while on 3rd Party Carrier Board

I’m having some trouble flashing firmware onto a TX2 that is on a 3rd party carrier board, specifically the Auvidea J130. I built the TX2 into an enclosure that was not designed to be reopened for flashing or development. Because the ports are all there on the carrier, I assumed that flashing the board would be extremely simple, just like flashing it on the stock carrier. However, I just found out that the flashing steps halt at jetpack trying to read the board information.

###############################################################################
# L4T BSP Information:
# R28 (release), REVISION: 2.1, GCID: 11272647, BOARD: t186ref, EABI: aarch64, 
# DATE: Thu May 17 07:29:06 UTC 2018
###############################################################################
# Target Board Information:
# Name: jetson-tx2, Board Family: t186ref, SoC: Tegra 186, 
# OpMode: production, Boot Authentication: , 
###############################################################################
./tegraflash.py --chip 0x18 --applet "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin" --cmd "dump eeprom boardinfo cvm.bin" --skipuid 
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.0058 ] Generating RCM messages
[   0.0065 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 --download rcm /home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin 0 0
[   0.0070 ] RCM 0 is saved as rcm_0.rcm
[   0.0074 ] RCM 1 is saved as rcm_1.rcm
[   0.0074 ] List of rcm files are saved in rcm_list.xml
[   0.0074 ] 
[   0.0074 ] Signing RCM messages
[   0.0080 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0086 ] Assuming zero filled SBK key
[   0.0116 ] 
[   0.0117 ] Copying signature to RCM mesages
[   0.0130 ] tegrarcm_v2 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0138 ] 
[   0.0138 ] Boot Rom communication
[   0.0145 ] tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
[   0.0152 ] RCM version 0X180001
[   0.7847 ] Boot Rom communication completed
[   1.7912 ] 
[   1.7923 ] tegrarcm_v2 --isapplet
[   1.7936 ] Applet version 01.00.0000
[   3.3374 ] 
[   3.3394 ] Retrieving EEPROM data
[   3.3396 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/cvm.bin
[   3.3410 ] Applet version 01.00.0000
[   4.8979 ] 0000Traceback (most recent call last):
  File "./tegraflash.py", line 1101, in <module>
    tegraflash_run_commands()
  File "./tegraflash.py", line 1008, in tegraflash_run_commands
    interpreter.onecmd(command)
  File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
    return func(arg)
  File "./tegraflash.py", line 664, in do_dump
    tegraflash_dump(exports, args)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 884, in tegraflash_dump
    tegraflash_dumpeeprom(args, dump_args[1:])
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 924, in tegraflash_dumpeeprom
    run_command(command)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 167, in run_command
    print_process(process)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 149, in print_process
    for string in process.communicate()[0].decode('utf-8').split('\n'):
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 14: invalid start byte
Reading board information failed.

Can I get around this and not have to take the enclosure apart every time I need to reflash the firmware?

Is the TX2 connected to the PC via usb? Does ‘lsusb’ show the NVIDIA device? It should
look like this:

$ lsusb

Bus 001 Device 005: ID 0955:7c18 NVIDIA Corp.

Although bus and device might be different.

It looks like it’s getting partway through the install. Maybe there’s some problem with the
usb routing on the carrier board.

I checked the lsusb, and it seems correct:

Bus 003 Device 022: ID 0955:7c18 NVidia Corp.

I just changed usb cables and I’ll report back if it works.

If the Jetson is correctly in recovery mode, then indeed the ID will always be “0955:7c18” and you will have verification of a flashable recovery mode.

If the host itself is a VM then it would be expected to fail without extra work. Is the host a VM?

The host is not a VM. I’m using an ubunbtu desktop to flash the board. It is on a J130 carrier board.

I changed the cable and still get the same error:

###############################################################################
# L4T BSP Information:
# R28 (release), REVISION: 2.1, GCID: 11272647, BOARD: t186ref, EABI: aarch64, 
# DATE: Thu May 17 07:29:06 UTC 2018
###############################################################################
# Target Board Information:
# Name: jetson-tx2, Board Family: t186ref, SoC: Tegra 186, 
# OpMode: production, Boot Authentication: , 
###############################################################################
./tegraflash.py --chip 0x18 --applet "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin" --cmd "dump eeprom boardinfo cvm.bin" --skipuid 
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.0012 ] Generating RCM messages
[   0.0018 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 --download rcm /home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin 0 0
[   0.0024 ] RCM 0 is saved as rcm_0.rcm
[   0.0027 ] RCM 1 is saved as rcm_1.rcm
[   0.0027 ] List of rcm files are saved in rcm_list.xml
[   0.0027 ] 
[   0.0027 ] Signing RCM messages
[   0.0033 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0040 ] Assuming zero filled SBK key
[   0.0070 ] 
[   0.0071 ] Copying signature to RCM mesages
[   0.0077 ] tegrarcm_v2 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0086 ] 
[   0.0086 ] Boot Rom communication
[   0.0093 ] tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
[   0.0098 ] RCM version 0X180001
[   0.7803 ] Boot Rom communication completed
[   1.7865 ] 
[   1.7874 ] tegrarcm_v2 --isapplet
[   1.7880 ] Applet version 01.00.0000
[   3.3301 ] 
[   3.3322 ] Retrieving EEPROM data
[   3.3324 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/cvm.bin
[   3.3339 ] Applet version 01.00.0000
[   4.8906 ] 000000000Traceback (most recent call last):
  File "./tegraflash.py", line 1101, in <module>
    tegraflash_run_commands()
  File "./tegraflash.py", line 1008, in tegraflash_run_commands
    interpreter.onecmd(command)
  File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
    return func(arg)
  File "./tegraflash.py", line 664, in do_dump
    tegraflash_dump(exports, args)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 884, in tegraflash_dump
    tegraflash_dumpeeprom(args, dump_args[1:])
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 924, in tegraflash_dumpeeprom
    run_command(command)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 167, in run_command
    print_process(process)
  File "/home/patrick/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/tegraflash_internal.py", line 149, in print_process
    for string in process.communicate()[0].decode('utf-8').split('\n'):
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 9: invalid start byte
Reading board information failed.

Hi, I am having an issue with the jetson tx2 - i flashed the device and it boots up. The Nvidia logo shows and then there is no display.
It shows - “The current input timing is not supported by the monitor display. Please change your input timing to 1920x1200, 60Hz or any other monitor listed timing as per the monitor specifications.”

I changed the display setting on my monitor to 1920x1200, 60Hz and i still shows the same problem every time I try to switch on the jetson Tx2

There are some languages (on a host) which the flash software does not deal well with. Even a space in a path leading up to the flash software of the host might interfere. I am reminded of this because of the following error which was logged:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 9: invalid start byte

Is there some locale being used other than en_US on the host? On your host, what do you see from “echo $LANG”?

I get this when I do “echo $LANG”:

patrick@patrick-XPS-8700:~/JetPack3.3$ echo $LANG
en_US.UTF-8

I am not positive if it is an error of the program, or if it is instead an error of the data being read. It is very likely it is the data being read from the EEPROM since your character set on the host is ok and the program being used is known to work (this is the first time I’ve seen that error).

Can you give the steps leading up to this? Were the Auvidea instructions specific to R28.2.1?

I downloaded a fresh version of JetPack3.3 and the Auvidea firmware for the J130 board and followed their steps. They specify that the firmware is specific to a either JetPack 3.2 and 3.3 and again got the “Failed to flash device error”

At the bottom of flash_os_tx2.log I noticed the followed output that confirms your suspicion of it being an error reading board information:

return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 9: invalid start byte
Reading board information failed.

Would someone at NVIDIA be able to look at the flash code and see what a possible cause is when EEPROM reads fail on an invalid UTF8 byte in position 9? I am really curious what is going on, but I have no way to look at that.

Sorry for late reply. I would like to make sure it is due to eeprom error or Auvidea J130 custom carrier board.

Could you describe how to and what is the firmware Auvidea provided to you?