Hello,
I have a Jetson Thor Developer Kit and I want to use the USB-C ports—for example, to connect a USB mouse or keyboard. This doesn’t work, and I think the USB port needs to be configured as OTG (USB host).
Has anyone managed to use the USB-C ports as OTG on Thor? Are there any hardware or software settings I need to enable?
Thanks in advance!
The flash port on Thror devkit does not support OTG due to some known issue. Currently it sets to device mode only.
Please put your USB device onto the type A port.
And the USB C connectors J81, J82? can those both be set to host? It looks like the are always in ‘device’ mode. Regardless of the cc pins. Or do I need to change that in the software?
We have a total of 9 USB cameras. That’s why the USB-A ports are already in use.
Hi,
There are 3 type C usb ports on Jetson but actually only one of them has USB functionality.
- One is for power supply
- The 2nd one is for UART debug serial port. No usb function.
- The 3rd one is the one you are using now.
If you have some background knowledge of device tree, then doing such change might change that type C port to host mode only.
diff --git a/hardware/nvidia/t264/nv-public/nv-platform/tegra264-p4071-0000.dtsi b/hardware/nvidia/t264/nv-public/nv-platform/tegra264-p4071-0000.dtsi
index fa6d0a37a..6f2101e5b 100644
--- a/hardware/nvidia/t264/nv-public/nv-platform/tegra264-p4071-0000.dtsi
+++ b/hardware/nvidia/t264/nv-public/nv-platform/tegra264-p4071-0000.dtsi
@@ -354,9 +354,10 @@
ports {
usb2-0 {
- mode = "peripheral";
- usb-role-switch;
- role-switch-default-mode = "peripheral";
+ mode = "host";
+ //mode = "peripheral";
+ //usb-role-switch;
+ //role-switch-default-mode = "peripheral";
status = "okay";
};
usb2-1 {
@@ -390,16 +391,19 @@
phys = <&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-0}>,
<&{/bus@0/padctl@a808680000/pads/usb3/lanes/usb3-1}>;
phy-names = "usb2-0", "usb3-1";
- status = "okay";
+ //status = "okay";
+ status = "disabled";
};
usb@a80aa10000 {
- phys = <&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-1}>,
+ phys = <&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-0}>,
+ <&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-1}>,
<&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-2}>,
<&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-3}>,
<&{/bus@0/padctl@a808680000/pads/usb3/lanes/usb3-0}>,
+ <&{/bus@0/padctl@a808680000/pads/usb3/lanes/usb3-1}>,
<&{/bus@0/padctl@a808680000/pads/usb3/lanes/usb3-2}>;
- phy-names = "usb2-1", "usb2-2", "usb2-3", "usb3-0", "usb3-2";
+ phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3", "usb3-0", "usb3-1", "usb3-2";
status = "okay";
};
Thanks for fast response!
I will try to change the device tree.
According to the module carrier board document, both USB-C connectors are usable (see image). Since we are using the power plug J74 (Microfit) for power, we should be able to use both USB-C ports in host mode. This should be possible, right? Of course, we won’t be using the USB-C debug port.
Yes, if you use the microfit for power, then that extra type C port would work as host mode.
If the 3rd USB port is modified to host-only mode , then when using l4t_initrd_flash.sh for flashing, this Type-C port needs to function as a peripheral —which will result in a flashing failure.