USB3 not working on Jetson TK1

Hi,

I am using Jetson TK1 and I have flashed L4T21.7 on it. I have also upgraded the ubuntu to 16.04. I want to activate the USB3.0. I have already changed the parameter “usb_port_owner_info” in the /boot/extlinux/extlinux.conf but it didn’t activate the USB3. Instead, the port has disappeared from the lsusb and have stopped working. I have a lot of configuration on this board so I would not want to reflash it. How can I turn USB3 on without reflashing the board?

Edit: I investigated further and found the following error in the kernel log

tegra-xhci tegra-xhci: failed to init firmware from filesystem: tegra_xusb_firmware

The normal Ubuntu mechanism for upgrading to a new release does not have knowledge of how the Jetson works since it is custom embedded and not a PC with a BIOS. There might be some way to put firmware in place from the old release, but I don’t know for sure. What do you see from:
sha1sum -c /etc/nv_tegra_release

All of those are operating system libraries, and firmware would be dependent upon those. If those are in place, then maybe it can be fixed, but mostly I’m going to suggest flashing again and going back to 14.04 (the 32-bit content just was not developed past this point). To be fair though, there were a couple of people who I think did get this to work with 16.04. Here are two of the threads I know of:

Thanks for the suggestion but my problem is not the update. I have been successfully working with 16.04 for quite a while now until i needed usb3 support. The nv_tegra_release works fine which means drivers are intact.
The above error I have been able to remove by recompiling the kernel from source and adding the config parameters:

CONFIG_EXTRA_FIRMWARE="tegra_xusb_firmware"
CONFIG_EXTRA_FIRMWARE_DIR="firmware"

Now there is no error in the log but lsusb still doesn’t show the usb 3 port. The /var/log/dmesg lists the detection of usb3 hub but no port shows up in the lsusb.

[   14.085618] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[   14.085652] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   14.085668] usb usb3: Product: Tegra EHCI Host Controller
[   14.085681] usb usb3: Manufacturer: Linux 3.10.40-ge78bb38 ehci_hcd
[   14.085693] usb usb3: SerialNumber: tegra-ehci.0
[    0.521369] usbcore: registered new interface driver hub
[    4.134980] hub 1-0:1.0: USB hub found
[    4.134998] hub 1-0:1.0: 1 port detected
[    4.145944] hub 2-0:1.0: USB hub found
[    4.145967] hub 2-0:1.0: 1 port detected
[   14.087701] hub 3-0:1.0: USB hub found
[   14.087741] hub 3-0:1.0: 1 port detected

and then the lsusb:

Bus 001 Device 002: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Strangely, the usb3 is using tegra-ehci as opposed to tegra-xhci. Not sure what is going on!

Keep in mind that if Ubuntu 16.04 thinks it needs a package update that it won’t know that it should not touch certain files (firmware). The original 14.04 from the official software does know this. It could work for a while in 16.04 and then an update would break it. The files, by themselves, are not enough.

Device tree is part of the firmware, and if something updates this, then parts of the system will start failing. This is basically an argument passed to drivers as they load, and even if the drivers and libraries are correct, then it will still fail if arguments being passed are from public 16.04 when 16.04 differs from the NVIDIA device tree. I don’t know that this happened, but beware there is a lot which can go wrong even when it looks like the original files are in place.

About this:

…the above is saying USB worked, but I don’t see a note of a driver being loaded (perhaps for a HUB this differs, just speculating). However, all we know is that the EHCI controller is found…we don’t know if (A) a driver took control, or (B) firmware routed the working device’s port to the controller. In this case firmware is device tree.

Note that in systems which have only USB2 that a single controller will support USB2 or slower devices, e.g., USB1.1 or USB1.0. In the case of USB3 a given port would work with a given USB3 controller, but if a slower device (e.g., USB2) is plugged in, then it reroutes to a different controller. Without the correct firmware this breaks. Indeed tegra-ehci does not support USB3, but tegra-xhci does. It seems likely the port is going to work with slower devices, e.g., keyboard/mouse, but may lack knowledge of how to route to the USB3 controller.

You could clone the device, and then flash again, followed by migration to 16.04 just to see if it works. Then perform an update and see if USB stops working. A clone is a good idea anyway, and you could always examine your old content for manual restore of parts of it, or flash using the clone.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.