TX2 usb2.0 not working,how to fix it

Hi,
Our customer remove gpio expender have same issue, usb2.0 not work – no VBUS power.

Follow below step still not work.
https://devtalk.nvidia.com/default/topic/1024105/jetson-tx2/tx2-usb2-0-not-working-how-to-fix-it/post/5210056/#5210056

But after update the DTB, and than plug in OTG cable to micro usb port(recovery usb port),
the VBUS power appear and usb2.0 work, remove OTG cable the VBUS power disappear.
Could you check it!

Best regards,

Hi FoxK,
Please check the boot log and attach the DTS file name for reference:

[    0.053514] DTS File Name: arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-c03-00-base.dts

Hi,
[ 0.046805] DTS File Name: …/arch/arm64/boot/dts/…/…/…/…/…/…/hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-c03-00-base.dts

attached.
tegra186-quill-p3310-1000-c03-00-base.7z (1.37 KB)

Hi FoxK,
What is the config of the custom board? There are several configs supported.

https://developer.nvidia.com/embedded/dlc/l4t-documentation-28-1
Start_L4T_Docs.html → PDF Documents → Platform Adaptation and Bring-Up Guide: Tegra Linux Driver Package for Jetson TX2 (PDF) → USB Lane Mapping

Does the board work on r27.1?

Hi!DaneL

custom board is used Config1:
USB 2.0
USB0 → for micro USB connector 2.0; USB_VBUS_EN0 (USB0_EN_OC / pin: A17)
USB1 → for Type A USB connector 2.0; USB_VBUS_EN1 (USB1_EN_OC / pin: A18)
USB2 → for Mini PCIE Card connector; USB_VBUS_EN2 (USB2_EN_OC / pin: A19) Not use.
USB 3.0
USB_SS0 → Not use.
USB_SS1 → for M.2 connector; PCIEX4 ‘s Lane 2

Hi, DaneLLL. I work with Hongsheng focusing on the same question.
I tried to flash r28.1 on our own custom board + TX2 module, but USB devices still didn’t work…

On the other hand, based on the boot log Hongsheng committed, what’s the problem with our custom board under r27.1 and what should we do next, modify dts or something?
P.S. We have to fix the problem under r27.1. Thanks a lot!

I attached the boot log on r28.1 for your consideration.
selfBoard_USB_Failed.log (66.8 KB)
learnBoard_USB_OK.log (61.6 KB)

Hi qianyizhou17,
For r28.1, have you tried https://devtalk.nvidia.com/default/topic/1024105/jetson-tx2/tx2-usb2-0-not-working-how-to-fix-it/post/5210056/#5210056 ?

Hi DaneLLL, I didn’t try it. I thought it would be all right for r28.1. If I followed that topic and fix the problem on r28.1, would it be helpful for our problem fixing on r27.1?

Hi DaneLLL, I still want to modify DTB on r27.1, and I try to follow Jetson/TX2 DTB - eLinux.org.
I’m trying to follow these steps:

  1. modify /boot/etxlinux/extlinux.conf by adding FDT /boot/tegra186-quill-p3310-1000-c03-00-base.dtb after the line “LINUX /boot/Image”
  2. decompile the /boot/tegra186-quill-p3310-1000-c03-00-base.dtb and get MODIFY.dts
  3. try to edit or modify MODIFY.dts and compile the dts to get a new dtb, and copy this file to the path /boot
  4. reboot target
    But I’m stuck at step 3 because I don’t know what should I modify. And the reference at #5 under this topic is mainly on r28.1.
    And is the routine OK?

Hi qianyizhou17,
Please modify
JetPack-3.0/64_TX2/Linux_for_Tegra_tx2/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg
JetPack-3.0/64_TX2/Linux_for_Tegra_tx2/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg
per
[url]https://devtalk.nvidia.com/default/topic/1007448/jetson-tx2/differences-between-tx2-module-revisions/post/5144986/#5144986[/url]

And re-flash via Jetpack 3.0

Hi DaneLLL, thank you for you reply.

I tried to modify
JetPack-3.0/64_TX2/Linux_for_Tegra_tx2/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c03.cfg
JetPack-3.0/64_TX2/Linux_for_Tegra_tx2/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-quill-p3310-1000-c04.cfg.

And I gave another try by modifying cfg files from XX-c00.cfg to XX-c04.cfg according to followed https://devtalk.nvidia.com/default/topic/1007448/jetson-tx2/differences-between-tx2-module-revisions/post/5144986/#5144986.

But USB devices still don’t work.

I think maybe I didn’t flash the TX2 module correctly.
I flashed TX2 module by cmd: sudo ./flash.sh jetson-tx2 mmcblk0p1 in the path of JetPack-3.0/64_TX2/Linux_for_Tegra_tx2/. Is it correct?

Hi qianyizhou17,
Do you see the error ‘[    5.760733] xhci-tegra 3530000.xhci: can’t get usb3-0 phy (-517)’ in kernel?

If yes, please also apply the patch and rebuild dtb

- ./common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi:             vbus-2-supply = <&vdd_usb2_5v>;
+ ./common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi:             vbus-2-supply = <&battery_reg>;   

Dear DaneLLL,

Is there any idea about this issue (#25)?
https://devtalk.nvidia.com/default/topic/1024105/jetson-tx2/tx2-usb2-0-not-working-how-to-fix-it/post/5214968/#5214968

Currently USB Port 1 is worked when USB Port 0 is plugged by mini USB to USB TYPE A converter cable. But USB Port 2 is also no worked.

Hi DaneLLL,
Thank you for your help.
I followed https://devtalk.nvidia.com/default/topic/1001771/jetson-tx2/no-usb-support-on-custom-base-carrier-board/2, and get problem solved.
And I’m now trying to understand the solution.
Thank you again!

hi Gary, it mentions config 1 in #25, but config 1 is all PCIes. Can you re-check the config again?

Dear DaneLLL,

Yes, my current configuration is 1. There is no USB3.0 interface but three USB2.0 in my project.
One PCIe x1 for mini PCIe connector and one PCIe x4 for M.2 SSD storage.

Thank for your support.

Hi Gary,
So on your board, you have
[USB2.0 Type A] A17, B39, B40
[USB2.0 Type A] A18, A38, A39
[USB2.0 Type A] A19?, B42, B43

Dear DaneLLL,

YES, and A19 is NC PIN.
Is this issue can be fixed if I try to rework two GPIO Expenders on the platform?
Thank you.

Hi gary,
You need to change in device tree like

xhci@3530000 {
		status = "okay";
		phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
			<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
			<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>;
		phy-names = "utmi-0", "utmi-1", "utmi-2";
		nvidia,boost_cpu_freq = <800>;
	};
tegra_xusb_padctl_pinmux_default: pinmux {
			/* Quill does not support usb3-micro AB */
			usb2-micro-AB {
				nvidia,lanes = "otg-0";
				nvidia,function = "xusb";
				nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
				nvidia,oc-pin = <0>;
			};
			usb2-std-A-port2 {
				nvidia,lanes = "otg-1";
				nvidia,function = "xusb";
				nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
				nvidia,oc-pin = <1>;
			};
			usb3-std-A-port2 {
				nvidia,lanes = "usb3-1";
				nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
				nvidia,oc-pin = <1>;
                                status = "disabled";
			};

			e3325-usb3-std-A-HS {
				nvidia,lanes = "otg-2";
				nvidia,function = "xusb";
				nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
				status = "okay";
			};

			e3325-usb3-std-A-SS {
				nvidia,lanes = "usb3-0";
				nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
				status = "disabled";
			};
		};

And set ODMDATA = 0x90000

Dear DaneLLL,

Thank you for your rapid reply.
I don’t know where I can set ODMDATA = 0x90000. Please let me know.
Currently, I did what you said (except ODMDATA = 0x90000) and it’s not worked.
Thank you.