USB2.0 doesnt work with J120 firmware v1.5 TX2

I am trying to get the TX2 working with the Auvidea J120 carrier board (rev. 7).
On installing the TX2 module on the J120 carrier board, the HDMI and ethernet ports work. All USB ports don’t work. I see console output through the UART0 port, however trying to type anything just loops it back to the PC console. This means that I am locked out of the TX2 with no means of input to place/move any files.

I followed the instructions provided with the firmware v1.5 (replacing files in the L4T 28.1 file tree) from the Auvidea website in order to get the USB ports working. I end up with the following error on a tty1 login screen:

xhci-tegra 3530000.xhci: cannot find firmware...retry after 1 second
xhci-tegra 3530000.xhci: Leaving it upto user to load firmware!

I tried the same sequence of instructions used by Veshnu in https://devtalk.nvidia.com/default/topic/1028068/auvidea-j120-tx2-flashing-concerns/, but end up without working USB2.0 ports.

Auvidea support seems non responsive to support tickets, and there is no auxiliary documentation available anywhere.

I’m in a pinch and would appreciate if anyone can help me get even USB2.0 running quickly with the J120. It seems to be a popular board, however the lack of official/community support and documentation is appalling.

Managed to get the system working after spending 50+ hours on what should have been a 10 minute job with proper documentation. Describing what worked for me here for anyone else facing the same issue:

  1. Download the L4T 28.1 file tree using Jetpack 3.1. Do not try the sample rootfs given on the L4T 28.1 page.

  2. [IMPORTANT] Use the Jetson TX2 Development Kit to flash the firmware. DO NOT use the J120 board, even though it supports putting the TX2 in recovery mode. Not sure what the matter is, but after close to 30-35 times of following the exact same instructions with all types of ingenious variations on the J120 and doing it just once using the Development Kit, one left me with the above error, and one worked. Guess which is which.

  3. I will briefly describe the workflow to get the board running, since the Auvidea readme is written incredibly poorly:

  • On the Host PC, copy(replace) the files from BCT folder to Linux_for_Tegra_tx2/bootloader/t186ref/BCT/
  • Put TX2 in recovery mode and run 'sudo ./flash.sh jetson-tx2 mmcblk0p1' on the Host PC from inside the Linux_for_Tegra_tx2 folder
  • After the flash operation is complete on the Host PC, the TX2 will reboot. At this point, the keyboard mouse will work on the Devkit, but not on the J120. So, take this opportunity to copy the files inside the J120 kernel folder to the TX2 using a USB drive, or over the network and place them in the TX2 root filesystem as follows:
    sudo cp kernel/Image /boot/
    
    sudo cp kernel/zImage /boot/
    
    sudo cp -R kernel/lib/modules/4.4.38-tegra/* /lib/modules/4.4.38-tegra/
    
  • On the Host PC, copy the files inside the dtb folder to Linux_for_Tegra_tx2/kernel/dtb/ (There is an extraneous file "out.dts" which does not need to be copied.)
  • Now run 'sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1' on the Host PC from inside the Linux_for_Tegra_tx2 folder
  • Finally, transplant the TX2 module from the Devkit to the J120 carrier board
  • Voila! The USB ports should work (1 USB 3.0 port, rest 2.0) and the TX2 should boot into the Ubuntu 16.04 desktop without any errors during boot.

In the original ‘sudo ./flash.sh jetson-tx2 mmcblk0p1’ you may want to specify a partition size. I do not know if the J120 layout would lead to the same partition sizes, but very likely they do…in which case you might use ‘sudo ./flash.sh -S 29318MiB jetson-tx2 mmcblk0p1’.

Unless U-Boot has changed you probably won’t need the zImage (the extlinux.conf normally only points to Image on 64-bit L4T).

The partitions live in the Jetson module, not on the motherboard. The motherboard has no block storage, and thus no partitions.

Partitioning involves device tree differences between a J120 and a dev carrier…presumably the partitions are different content, but the same size. In some extreme case it is possible for some odd requirement to change those sizes (which in turn could alter the max “-S” size). In every case I know about the partitions will still be the same size. If that is so, then the default “flash.sh” without the “-S” will leave some of the eMMC unused. This is why I suggest “-S 29318MiB” since the default is much smaller…but this is also why I mention that it is unlikely partitions differ for a J120…it is just a caveat in case of something extreme going on (such as a future L4T release changing this). I just didn’t want someone wondering why they ran out of disk so soon (it is because of the flash.sh example without “-S”, not because of the J120).