Using "initrd flash" when USB0 is in host mode

Hi,
We have a custom carrier board with Orin NX, JP 5.1.3
There is no USB0_VBUS_DET circuit on it.
I want to set the usb0 port as HOST device in DT, without using the OTG mode.

  1. Can I still use “initrd flash” in recovery mode?

  2. In case if “initrd flash” cannot work when usb0 is in host mode:
    Is it possible to set usb0 to OTG mode and also map the VBUS_DETECT pin to some other GPIO, which is always HIGH?
    So, the driver will always switch to HOST in operational mode.

I can only answer part of this. The short answer is that “no, you cannot flash without recovery mode, and recovery mode is tied to the device mode port”. However, Orin ports may be more flexible than earlier Jetson, which is something someone else will have to answer (how flexible? I don’t know).

An “initrd flash” is not what you think it is. When booting up an initrd is a filesystem in RAM which has minimal requirements, and then it pivots the root of the filesystem to the main persistent storage device when it is done. However, an “initrd flash” is not different than a regular flash in the sense that both flashes must be in recovery mode; the difference is in what boot chain content goes in.

An actual flash is in recovery mode. This is a hardware mode and does not use an initrd to flash. This mode installs an initrd, but it also installs everything that a regular flash would install. In recovery mode the Jetson becomes a custom USB device (not mass storage like many people believe). That custom USB device is understood only by the custom USB driver…which is what the heart of the flash software is (JetPack/SDKM is just a network and graphics GUI on top of the real flash software). The specific port which is in device mode for flash won’t work any other way (although I do not know if there is any option as to which USB controller talks to the device mode port when in recovery mode).

What you can do is flash a module on a different carrier board and then move the module to your carrier board.

It is possible to use device tree to do a fake OTG function for flash.

But after the system boots up, this usb port will not work properly.

Thank you for your responses.

As I understand it, I cannot set usb0 to “host” function, in the device tree…

However, is it still possible to fake the operational HOST mode in hardware ?
In case I set OTG mode in device tree, so:
→ The usb2-0 function in recovery is fixed to the device only and does not refer to ID pin and VBUS_DET pin.
→ After the system boots up, its mode should be defined by the hardware pin USB0_VBUS_DET, which I intend to set to constant high (that is HOST mode).

Hi,

What you are talking about won’t happen.

You can fix the usb port mode into device mode only to pass the flash process.
But after you boot up, because the device tree set up is wrong, no matter what hardware signal there is, it won’t work because the software setting is already wrong.

OK . So, we need to implement a USB0_VBUS_DET circuit on our board …

Thank you!

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