Lack of USB on Jetson TX2


I have recently run into a problem after modifying the DT (configure it to Configuration #3): the USB2.0 does not recognize a mouse/keyboard/hub. A LED on an external USB-hub was off.

Once I have applied the modifications per, that is:

- ./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>;

The light on the hub went on, but yet the keyboard and mouse were not available via this hub.

BTW, I do not have access to the terminal physically - this issue is not related to the USB problem


Please refer to adaptation guide to modify device tree to fit your custom board.

Hi DaneLLL,

I have followed this procedure. Though I guess that my problem is the following terminal output:

[    4.430344] xhci-tegra 3530000.xhci: can't get usb3-1 phy (-22)
[    4.430419] xhci-tegra: probe of 3530000.xhci failed with error -22

I understand from xhci-tegra.c that the word usb3-1 is missing from the phy-names property.
But I do have a list of phy(s) in tegra186-quill-p3489-1000-a00-plugin-manager.dtsi file (do note that it is for the TX2i and not TX2):

fragment-p3489-A00 {
			ids = ">=3489-0000-200";

			override@7 {
				target = <&{/xhci@3530000}>;
				_overlay_ {
					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)>,
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>, // config #3
						<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>; // config #3
					phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2";

Is the phy-names is expected elsewhere too, or did I get it all wrong?

Hi igal,
The error looks to be

#define EINVAL          22      /* Invalid argument */

So your custom board works on TX2 but fails on TX2i?

Please also check
Tx2 and TX2i flash different DTBs.

Hi DaneLLL,

You are correct EINVAL is the error.

The header of the topic is a typo it was supposed to be TX2i.

I flash the TX2i correctly per [url]Jetson/TX2 DTB -

Any suggestions?


Hi igal,
Does usb3-2 work? There are two USB3 ports in config #3. Please check if the other one works.

Also please check ODMDATA and device tree via xxd:

Hi DaneLLL,

I have flashed the device tree with the modification of the ODMDATA 0x6090000

Currently I don’t have a way to get devmem2 to the target so I only have this output from the device tree:

<b>ls /proc/device-tree/chosen/plugin-manager/odm-data -l</b>
total 0
-r--r--r-- 1 root root 4 Oct 14 13:07 android-build
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-pmic-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-sdmmc-hwcq
-r--r--r-- 1 root root 4 Oct 14 13:07 disable-tegra-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-debug-console
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-denver-wdt
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-pcie-on-uphy-lane0
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-pcie-on-uphy-lane4
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-sata-on-uphy-lane5
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-xusb-on-uphy-lane1
-r--r--r-- 1 root root 4 Oct 14 13:07 enable-xusb-on-uphy-lane2
-r--r--r-- 1 root root 9 Oct 14 13:07 name
-r--r--r-- 1 root root 4 Oct 14 13:07 no-battery
-r--r--r-- 1 root root 4 Oct 14 13:07 normal-flashed


<b>xxd /proc/device-tree/xhci@3530000/phy-names</b>
00000000: 7574 6d69 2d30 0075 746d 692d 3100 7574  <b>utmi-0.utmi-1.ut</b>
00000010: 6d69 2d32 0075 7362 332d 3100 7573 6233  <b>mi-2.usb3-1.usb3</b>
00000020: 2d32 00                                  <b>-2</b>.

So I guess the usb3-1 is available in the phy-names.

We currently do not utilize USB3.0 ports - we only needed the PCIe ports.

needless to say, but lsusb displays nothing.

BTW, is the order of the phys is important?

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_USB3_P(1)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
		<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
		phy-names = "utmi-0", "utmi-1", "usb3-1", "utmi-2", "usb3-0";


Hi igal,
Do you configure num-lanes of PCIe?

If you don’t have physical USB3 ports, please disable usb3-1 and usb3-2 since the driver will check if the USB HW ports are present.

Hi DaneLLL,
Yes I set the three PCIe to x1 lane each.

When you say to disable what do you mean just remove them from the phy-names list?

Which USB HW do you mean? I thought that the USB phy(s) are implemented inside the Jetson TX2i module.


Hi DaneLLL,

I have found the problem.

In the file tegra186-quill-p3489-1000-a00-plugin-manager.dtsi:

fragment-p3489-A00 {
			ids = ">=3489-0000-200";
		override@8 {
		target = <&tegra_xusb_padctl_pinmux_default>;
			_overlay_ {
				usb3-std-A-port2 {
					nvidia,lanes = "<b>usb3-0</b>"; <u><b>changed to usb3-1</b></u>
				e3325-usb3-std-A-HS {
					status = "okay";

Regards, thanks for the support.

Thanks for sharing the findings.
Update the path of TX2i to [url]Jetson/TX2 USB -