USB3 Camera Enumeration

We have designed a custom carrier board where the 5 volts (VBUS) is always on as soon as power supply is on.
When we connect a device to USB3 port (such as camera), the device will not be enumerated until unplug/replug the camera.
Which is power cycle the connected device. The issue is, we don’t have any control to cycle the 5V VBUS and the cameras always connected to the device. When the system reboot we need to reach out to system and replug the cameras.

I have seen some comments where you guys suggest to provide VBUS once the kernel loaded.
I cannot do that due to some limitations. Is there any way to force the enumeration at the startup (SW only)?

dmesg show nothing about the plugged devices until (plug/replug)

note (D+/D- are not connected)

Thank you

Any suggestions?

Since this custom board, I think you already configured the device tree to match your board?

Here is the device tree for USB:
xusb_padctl: xusb_padctl@3520000 {
		status = "okay";
		pads {
			usb2 {
				lanes {
					usb2-0 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb2-1 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb2-2 {
						nvidia,function = "xusb";
						status = "okay";
					};
				};
			};
			usb3 {
				lanes {
					usb3-0 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb3-1 {
						nvidia,function = "xusb";
						status = "okay";
					};
				};
			};
		};

		ports {
			usb2-0 {
				mode = "host";
				status = "okay";
                vbus-supply = <&p3509_vdd_5v_sys>;
				port {
					typec_p0: endpoint {
						remote-endpoint = <&fusb_p0>;
					};
				};
			};
			usb2-1 {
				mode = "host";
                vbus-supply = <&p3509_vdd_av10_hub>;
				status = "okay";
			};
			usb2-2 {/* Goes to M2.E */
				mode = "host";
                vbus-supply = <&p3509_vdd_5v_sys>;
				status = "okay";
			};
			usb3-0 {
				nvidia,usb2-companion = <1>;
				status = "okay";
			};
			usb3-1 {
				nvidia,usb2-companion = <2>;
				status = "okay";
			};
		};
	};

The cameras are connected to usb2-1 and usb2-2

So the one on p3509_vdd_av10_hub is still working fine?

No, there is no hub
There is 5V wired to vbus

If I connect the camera (the device) while system is running, everything works fine. But when there is a reboot, the device still on (5v is there), jetson will not see the camera until unplu/plug it again.

I just had some check with our usb software team.

There is no proper solution to re-enumerate the device during runtime. I can only suggest to rework the hardware.

Can External Connector Class (extcon) be used to re-enumerate?

extcon is not in use on Jetpack5.

Hi WayneWWW

What do you mean by not in use? Not enabled?
Can we use it?

Any other options can be used?

What is the recommended way to handle VBUS power when not using a hub? When looking in the Design Guide (DG-10931-001_v1.1) there is a VBUS enable pin (GPIO00) for USB0. However, there are no enable pins for USB1 and USB2, so I tie the !EN pins of the load switches to Ground for these ports. THis means they are always on.

Should I do this? I’m thinking of turning of power during reset or using a GPIO pin in order to be able to do a power cycle.

What abou USB connector class?
Can this be used foe re-enumeration?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.