Force USB-OTG to Host Mode on Jetson TX1


I’m developing a custom carrier board for the TX1, and had intended to use the OTG port only for host mode with a full-size Type A port, so I did not connect the ID pin on the Jetson. Unfortunately, the port appears to be unresponsive, which I suspect is due to it defaulting to device mode. It appears that it was possible to manually override this on the TK1, but I haven’t found any indication as to whether it’s possible with the TX1. Is this capability hidden away somewhere?


Please refer to

Hi DaneLLL,

I came across that thread when searching the forum for any relevant posts, but it looks like the thread is about enabling a device-mode USB3.0 connection. I want to enable a host-mode USB2.0 connection on the USB0 interface. Can I adapt the instructions to my particular case? It’s not obvious to me how I might do so. I’m bringing out USB_SS0 to a separate port, so I want to be sure that any changes made by the patch won’t interfere with operation of that port (also in host mode).

Please modify the device tree

usb_cd {
	status = "<b>disabled</b>";
	phys = <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(0)>;
	phy-names = "otg-phy";
usb2-micro-AB-xusb {
	nvidia,lanes = "otg-0";
	nvidia,function = "xusb";
	nvidia,port-cap =
	nvidia,usb3-port-fake = <3>;

I am attempting to use your suggested modification, but I’m getting dtb compilation errors pointing to the line:

phys = <&tegra_padctl_uphy TEGRA_PADCTL_UPHY_UTMI_P(0)>;

Are these constants that I need to replace the values for? I’d like to manually compile this dts and replace it on devices without flashing (without JetPack). Please provide some guidance.

Hi proskate44,
Seems like you are not on r28.1 or later revision. Please refer to the patch and adapt to your case.

Hi DaneLLL,

So what we ended up doing was merging your suggested changes to usb_cd::status and usb2-micro-AB-xusb::nvidia,port-cap into our existing dts file. We left usb_cd::phys as it was (a pair of bytes) and guessed that TEGRA_PADCTL_PORT_HOST_ONLY was equivalent to 0x1, which appears to be correct. Otherwise, we couldn’t get the dts file to compile.

We can look at the adaptation guide to see if there’s a more legit way of doing this, but for now, it works.