Unable to flash TX2

I’m having trouble flashing the TX2 with Jetpack 3.0 using the same process I used for the TX1. I’m using VirtualBox for my Ubuntu 14.04 host machine, which has worked well for flashing the TX1. When I start the flashing process the USB device goes away and I see this message in dmesg.

[ 7887.607628] usb 1-1: new high-speed USB device number 7 using ehci-pci
[ 7887.758362] usb 1-1: New USB device found, idVendor=0955, idProduct=7c18
[ 7887.758365] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7887.758367] usb 1-1: Product: APX
[ 7887.758369] usb 1-1: Manufacturer: NVIDIA Corp.
[ 7887.758371] usb 1-1: SerialNumber: 00000
[ 8159.651959] INFO: task tegrarcm_v2:15652 blocked for more than 120 seconds.
[ 8159.651966]       Tainted: G           OE   4.4.0-31-generic #50~14.04.1-Ubuntu
[ 8159.651967] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 8159.651970] tegrarcm_v2     D ffff8800cd473c08     0 15652  15644 0x20020000
[ 8159.651976]  ffff8800cd473c08 ffff880196618dc0 ffff8800c7c01b80 ffff8800cd474000
[ 8159.651980]  ffff8800cd473d48 ffff8800cd473d40 ffff8800c7c01b80 0000000000000000
[ 8159.651984]  ffff8800cd473c20 ffffffff817f3715 7fffffffffffffff ffff8800cd473cc8
[ 8159.651988] Call Trace:
[ 8159.651996]  [<ffffffff817f3715>] schedule+0x35/0x80
[ 8159.652000]  [<ffffffff817f60a7>] schedule_timeout+0x237/0x2d0
[ 8159.652005]  [<ffffffff810b1bc5>] ? pick_next_entity+0xa5/0x160
[ 8159.652009]  [<ffffffff810c4c01>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
[ 8159.652012]  [<ffffffff810c4c01>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
[ 8159.652015]  [<ffffffff817f43bd>] wait_for_completion_timeout+0x9d/0x120
[ 8159.652018]  [<ffffffff810a7520>] ? wake_up_q+0x80/0x80
[ 8159.652024]  [<ffffffff815edbed>] usb_start_wait_urb+0x7d/0x150
[ 8159.652027]  [<ffffffff8109c859>] ? notifier_call_chain+0x49/0x70
[ 8159.652031]  [<ffffffff811dcdb6>] ? __kmalloc+0x1d6/0x270
[ 8159.652034]  [<ffffffff815ee111>] usb_bulk_msg+0xc1/0x170
[ 8159.652038]  [<ffffffff815f8626>] proc_bulk+0x1b6/0x350
[ 8159.652042]  [<ffffffff815f9ab5>] usbdev_do_ioctl+0x745/0x1040
[ 8159.652057]  [<ffffffff8121cf24>] ? mntput+0x24/0x40
[ 8159.652061]  [<ffffffff811ff6b0>] ? __fput+0x190/0x210
[ 8159.652064]  [<ffffffff815fa3c0>] usbdev_compat_ioctl+0x10/0x20
[ 8159.652069]  [<ffffffff81254875>] compat_SyS_ioctl+0xb5/0x2c0
[ 8159.652073]  [<ffffffff81003ad9>] do_syscall_32_irqs_off+0x59/0xb0
[ 8159.652082]  [<ffffffff817f95c6>] entry_INT80_compat+0x36/0x50
[ 8279.591715] INFO: task tegrarcm_v2:15652 blocked for more than 120 seconds.
[ 8279.591723]       Tainted: G           OE   4.4.0-31-generic #50~14.04.1-Ubuntu
[ 8279.591725] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 8279.591728] tegrarcm_v2     D ffff8800cd473c08     0 15652  15644 0x20020000
[ 8279.591736]  ffff8800cd473c08 ffff880196618dc0 ffff8800c7c01b80 ffff8800cd474000
[ 8279.591741]  ffff8800cd473d48 ffff8800cd473d40 ffff8800c7c01b80 0000000000000000
[ 8279.591746]  ffff8800cd473c20 ffffffff817f3715 7fffffffffffffff ffff8800cd473cc8
[ 8279.591751] Call Trace:
[ 8279.591762]  [<ffffffff817f3715>] schedule+0x35/0x80
[ 8279.591766]  [<ffffffff817f60a7>] schedule_timeout+0x237/0x2d0
[ 8279.591772]  [<ffffffff810b1bc5>] ? pick_next_entity+0xa5/0x160
[ 8279.591777]  [<ffffffff810c4c01>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
[ 8279.591781]  [<ffffffff810c4c01>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
[ 8279.591785]  [<ffffffff817f43bd>] wait_for_completion_timeout+0x9d/0x120
[ 8279.591789]  [<ffffffff810a7520>] ? wake_up_q+0x80/0x80
[ 8279.591796]  [<ffffffff815edbed>] usb_start_wait_urb+0x7d/0x150
[ 8279.591801]  [<ffffffff8109c859>] ? notifier_call_chain+0x49/0x70
[ 8279.591805]  [<ffffffff811dcdb6>] ? __kmalloc+0x1d6/0x270
[ 8279.591810]  [<ffffffff815ee111>] usb_bulk_msg+0xc1/0x170
[ 8279.591814]  [<ffffffff815f8626>] proc_bulk+0x1b6/0x350
[ 8279.591819]  [<ffffffff815f9ab5>] usbdev_do_ioctl+0x745/0x1040
[ 8279.591825]  [<ffffffff8121cf24>] ? mntput+0x24/0x40
[ 8279.591830]  [<ffffffff811ff6b0>] ? __fput+0x190/0x210
[ 8279.591835]  [<ffffffff815fa3c0>] usbdev_compat_ioctl+0x10/0x20
[ 8279.591841]  [<ffffffff81254875>] compat_SyS_ioctl+0xb5/0x2c0
[ 8279.591846]  [<ffffffff81003ad9>] do_syscall_32_irqs_off+0x59/0xb0
[ 8279.591851]  [<ffffffff817f95c6>] entry_INT80_compat+0x36/0x50
[ 8302.560863] usb 1-1: USB disconnect, device number 7
[ 8374.927892] usb 1-1: new high-speed USB device number 8 using ehci-pci
[ 8375.073851] usb 1-1: New USB device found, idVendor=0955, idProduct=7c18
[ 8375.073855] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8375.073856] usb 1-1: Product: APX
[ 8375.073858] usb 1-1: Manufacturer: NVIDIA Corp.
[ 8376.942285] usb 1-1: USB disconnect, device number 8

Please flash from a native Ubuntu 16.04 x86_64 install, flashing from VM is not formally supported.

Hi
I have the same problem. And the answer that a flashing from a vm is not formally supported, is not really helpful. it says nothing about the potential reason. Today the most developer will work with vm’s, so it would be great when nvidia would support the most common tool chain.

… in this case … lets find a other computer and spent unnecessarily time for setup and find place for additional devices like keyboard, mice and computer.
/tegraflash.py --chip 0x18 --applet “/home/georg/64_TX2/Linux_for_Tegra_tx2/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


[ 8.0889 ] tegrahost_v2 --generateblob blob.xml blob.bin
[ 8.0896 ] number of images in blob are 9
[ 8.0962 ] blobsize is 3497944
[ 8.0984 ] Added binary blob_nvtboot_recovery_cpu_sigheader.bin.encrypt of size 144272
[ 8.1073 ] Added binary blob_nvtboot_recovery_sigheader.bin.encrypt of size 60096
[ 8.1146 ] Added binary blob_preboot_d15_prod_cr_sigheader.bin.encrypt of size 59824
[ 8.1239 ] Added binary blob_mce_mts_d15_prod_cr_sigheader.bin.encrypt of size 2077344
[ 8.1320 ] Added binary blob_bpmp_sigheader.bin.encrypt of size 524880
[ 8.1421 ] Added binary blob_tegra186-a02-bpmp-quill-p3310-1000-c01-00-te770d-ucm2_sigheader.dtb.encrypt of size 327072
[ 8.1525 ] Added binary blob_tos_sigheader.img.encrypt of size 54784
[ 8.1614 ] Added binary blob_eks_sigheader.img.encrypt of size 1488
[ 8.1638 ] Added binary blob_tegra186-quill-p3310-1000-c03-00-base.dtb of size 248032
[ 8.1638 ]
[ 8.1639 ] Sending bootloader and pre-requisite binaries
[ 8.1693 ] tegrarcm_v2 --download blob blob.bin
[ 8.1700 ] Applet version 01.00.0000
[ 8.1887 ] Sending blob
[ 8.1888 ] [… ] 029%
[ 8.1888 ] [… ] 059%
[ 8.1888 ] [… ] 089%
[ 8.1888 ] […] 100%
[ 8.6301 ]
[ 8.6310 ] tegrarcm_v2 --boot recovery
[ 8.6359 ] Applet version 01.00.0000
[ 8.6606 ]
[ 13.6659 ] Retrieving storage infomation
[ 13.6680 ] tegrarcm_v2 --oem platformdetails storage storage_info.bin
[ 13.6699 ] Applet is not running on device. Continue with Bootloader
[ 13.7044 ]
[ 13.7225 ] tegradevflash_v2 --oem platformdetails storage storage_info.bin
[ 13.7233 ] CPU Bootloader is not running on device.
[ 13.7480 ]
Error: Return value 4
Command tegradevflash_v2 --oem platformdetails storage storage_info.bin
Failed flashing t186ref.

I avoid a VM, and use command line tools (my host is Fedora, not Ubuntu). That said, those who do get a VM working may need to tune the VM for USB options. I’m uncertain of what that may include, though I suspect buffer RAM for the USB could be part of that (I know buffer reserved for that USB has been discussed in the past and has at times fixed VM problems).

I am seeing the error below when flashing the TX2. I was able to flash a TX2 last week from a 16.04 Ubuntu VM (Parallels running on a MacBook Pro) but I have tried flashing multiple new TX2’s over the last two days with no luck. The version of Parallels, Ubuntu and Jetpack have not changed. Is there any additional debugging that can be done to troubleshoot?

OS’s:
Macbook Pro running Ubuntu 14.04 in a Parallels VM
Dell Laptop running 16.04
Dell Laptop running 14.04

Jetpack:
3.0

TX2:
5 different TX2’s

Dev Kits:
4 different dev kits

sudo ./flash.sh jetson-tx2 mmcblk1p1
./tegraflash.py --chip 0x18 --applet “/XXXXX_for_Tegra_tx2/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.0068 ] Generating RCM messages
[ 0.0080 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 --download rcm /XXXXX/64_TX2/Linux_for_Tegra_tx2/bootloader/mb1_recovery_prod.bin 0 0
[ 0.0112 ] RCM 0 is saved as rcm_0.rcm
[ 0.0119 ] RCM 1 is saved as rcm_1.rcm
[ 0.0122 ] List of rcm files are saved in rcm_list.xml
[ 0.0323 ]
[ 0.0323 ] Signing RCM messages
[ 0.0342 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0353 ] Assuming zero filled SBK key
[ 0.0554 ]
[ 0.0555 ] Copying signature to RCM mesages
[ 0.0567 ] tegrarcm_v2 --chip 0x18 --updatesig rcm_list_signed.xml
[ 0.0762 ]
[ 0.0763 ] Boot Rom communication
[ 0.0884 ] tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
[ 0.0971 ] Boot Rom communication failed
[ 0.1122 ]
Error: Return value 3
Command tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
Reading board information failed.

In all cases of VM failure of USB I’d suggest making sure the USB port is configured as USB2…USB3 should drop back to USB2 speeds but seems to not work right on VMs for this case. I also suggest researching how your VM can add more buffer to the USB port…I have no experience on that but others have sometimes “fixed” VM USB issues by adding more buffer.

I changed the VM to not allow USB 3.0 and also tested on both a fresh Macbook Pro with Ubuntu 14.04 and Dell with Ubuntu 16.04 (no VM).

The failing command
tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid

Some additional information. After analyzing the USB bus using wireshark and observed the following.

8 packets in total going across the USB bus (4 pairs of host->board, board->host).

It looked like the 1st pair was a request, the 2nd the response. Same with the 3rd and 4th. The last response status was -EPIPE.

Perhaps the EPIPE was related to a data corruption or truncation (insufficient buffer?).

I faced similar issues when trying to flash Tegra TX2 from VirtualBox with Ubuntu 16.04. It kept getting stuck at the same place with “CPU Bootloader is not running on device”. I experimented with change USB Controller in VirtualBox Settings between “USB 2.0”, “USB 3.0” and even “USB 1.1”. I set filters for the “NVIDIA Corp APX” and for “NVidia Corp”, but alas that didn’t do it.

The solution was to switch to VMWare Workstation 12 Player (free) and setup Ubuntu 16.04 there. (Installed VMWare tools when it was offered). From there I followed the same steps to put Tegra TX2 into Recovery mode and connected it to VM. Then I ran the flash script and it finally worked! Glad that I didn’t have to go with the dual boot route.

Hope this helps.

Same error message here but was able to successfully flash my TX2 using VBox Version 5.1.30r118389 and installing the expansion USB pack. The requirement is to enable USB 3.0 (xHCI) controller port and select NVIDIA Corp APX as the device filter.

shut down the vm, open settings, hit restore to defaults in usb & bluetooth, and then try again and it should work!

@gfrolov Thank you! I’ve been fighting this thing all day with VirtualBox…switched to Workstation Player and worked fine.

Windows 10 Machine w/ Workstation 14 Player
Ubuntu 16.04
Jetson TX2
Jetpack 3.2

@gfrolov Thank you very much!

I’ve been trying to flash my TX2 with Virtual box too but to no avail. However, there were no issues at all with Workstation 14. My setup was:

Windows 10 Machine w/ Workstation 14 Player
Ubuntu 16.04.05
Jetson TX2
Jetpack 3.2

For completeness’ sake, I will post my results as well.

My configuration is:

Windows 10 Host with Ubuntu VM
Jetson TX2
Jetpack 3.3

My computer is connected to the netowrk via WiFi. The Jetson connects to my local network via a wireless bridge device (a Vonets VAP11G) which allows the Jetson to use the Ethernet port to connect to the network via WiFi in recovery mode (this is effectively equivalent to connecting the Jetson’s Ethernet port directly to the router via cable, except that was not possible in my case because the router was far from the board).

I tried VirtualBox with Ubuntu 16.04 and Ubuntu 18.04, both with USB 2 and USB 3, but none of them worked.

I tried with VMWare 12, as suggested here, but installing Ubuntu 16.04 would result in a Kernel Panic error.

Finally, it worked with VMWare Workstation 15 Player (the latest version as of writing), Ubuntu 16.04.5 (I did not try with Ubuntu 18.04) and JetPack 3.3 (also the latest version). After running Jetpack, it managed to flash the OS, but it could not find the Jetson’s IP address after that.

For Jetpack to be able to find the Jetson’s IP, I had to configure the virtual machine to use a Bridged network (VM settings > Network Adapter > Bridged). Checking the “replicate physical network connection state” option should not matter for this particular case. However, using a bridged connection disabled my VM’s internet connection and I could only get it to work again by clicking on the “Configure Adapters” button and unchecking all the adapters except for the one my host uses to connect to the Internet (in my case, the wireless card).

Once the connections were working, I had to check the Jetson’s IP address in my router’s DHCP table (you should see an entry with hostname “tegra-ubuntu”). Once I found it, I checked that I could ping it from my VM and that I could ssh into it (ssh ubuntu@[IP], using “ubuntu” as password). If all that works, it means that the Jetson is reacheble form the network and therefore Jetpack should also be able to see it.

I then re-run JetPack (type ./JetPack-${VERSION}.run in a shell from within its folder), but selected a Custom install, instead of Full, and unchecked the Flash OS entry, since that had already been done. After that, Jetpack should asked for the Jetson’s IP address, username (ubuntu or nvidia) and password (ubuntu or nvidia). After that, everything worked and Jetpack finished installing all the packages.