USB hub stopped working in Jetpack 3.1

I have a custom TX1 carrier board which I have been developing on, which has an integrated smsc95xx USB hub with a couple devices hard-wired to it. I have been using Jetpack 3.0/L4T24.2.1 for a while now, and the USB hub has always worked fine for me. When I switched to Jetpack 3.1/L4T28.1, my internal USB hub is no longer detected. I can connect an external hub with the same chipset, and it is detected and works, so I know the driver exists in my kernel. For some reason, the internal hub is no longer working with the new Jetpack 3.1

Has anyone noticed any strangeness with USB hubs in Jetpack 3.1?

You might want to double-check if the device tree is as expected. R28.1 may of course require a different device tree, but the part I’m thinking about is that the setting of the device tree changed in R28.1. It used be valid to set from extlinux.conf’s FDT entry, but in R28.1 it needs to be in mmcblk0p15 partition.

You can see what your current device tree is via:

dtc -I fs -O dts -o extracted.dts /proc/device-tree

…compare this to what you think it should be.

Thanks linuxdev, can you double check your info on the FDT location? I’ve been reading/writing it to mmcblk0p13, and I’ve made plenty of device tree tweaks in R28.1 that are working fine for me. I don’t see anything useful in mmcblk0p15. I just figured this out by trial and error… dumping the contents of mmcblk0pXX using ‘dd’, and then trying to disassemble it with ‘dtc’.

For what it’s worth, I’m building the device tree from the stock nVidia L4T source, with my own patches for various peripherals. However, I’m not sure which device tree items I should look at for the USB hub. But, you bring up a good point, and I’ll go scrub through it again and see if I can find something.


mmcblk0p15 is for TX2 under R28.1, so I quoted incorrectly…you are correct, it is mmcblk0p13 on the TX1. On a TX1 the GPT label is “DTB”, on a TX2 the GPT label is “kernel-dtb”. The reason I mentioned the partition is that anything in the extlinux.conf FDT key/value pair entry will not work as expected and I didn’t know if you had been using FDT entries or the partition scheme.

In reality if some USB works with a given driver but onboard USB with altered hardware layout or other major version change fails (using the same driver) chances are very high it is a device tree change at issue. Sometimes loaded firmware in “/lib/firmware/” can also be at issue since device tree, drivers, and firmware work together.

So I discovered the “Tegra Linux Driver Package TX1 Adapation Guide” in the downloads directory, and it addressed this problem. It turns out that the specific USB port I’m using was not even enabled in the device tree USB lane mapping. I added an entry in the device tree according to the guide, and now my USB hub is working.

Amazing what you can accomplish when you actually read the documentation, huh?