Orin NX Flashing timeout

Hello,

We’re having some issues flashing an Orin NX 16GB on a custom carrier board. Here is our full setup(s):

  • Nvidia Orin Nano carrier board
  • Custom carrier board v1
  • Custom carrier board v2
  • Orin NX 16 GB
  • 256GB SSD
  • r35.4.1

The same flashing commands are used for attempting to flash on all 3 carrier boards, from the docs:
Flashing Support — Jetson Linux Developer Guide documentation, “Flashing with disk encryption enabled”. Also, a modification we had to make is set the carrier board EEPROM size to 0, as our board doesn’t have an EEPROM. The flashing commands are in a script which generates a clean environment for every attempt.

  • Flashing on Nvidia carrier board, and on our v1 carrier board (which is inspired from the Orin NX Eng sample) works as expected every time.
  • Flashing on our carrier board v2, which has the same USB2-0 implementation as our v1 fails at “Step 3: Start the flashing process” with “Waiting for target to boot-up…”
    carrier board v2 UART log (100.9 KB)

We’ve looked at the USB implementation, I2Cs and GPIOs, but couldn’t figure out the problem. Could you help us locate the issue?

Thank you,

Have you checked documents on the USB part?
https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/HR/JetsonModuleAdaptationAndBringUp/JetsonOrinNxNanoSeries.html#porting-universal-serial-bus

Thanks for the reply.
We did check them before building the v1, and the v2 carrier board has the same schematic for the USBs as the v1.

Follow the guide to setup a bootable disk and share dmesg with USB cables connected after you can boot with it:
https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/SD/FlashingSupport.html#flashing-to-a-usb-drive

We can flash the Orin on a v1/nvidia cb and then move it to the v2 to get the dmesg logs if that’s the end goal.

You need to make sure the software got flashed on your v1 board is really equal to what happened on v2 so that the comparison has the point.

The exact same software + flashing setup is used on all carrier boards, to help narrow down the issue

1 Like

Here is the dmesg on a v2 carrier board

Do you have a log for your first board?

I see from 2nd board dmesg that usb device mode is still not ready. Same situation as your flash failure.

Just moved the Orin SOM to the v1 carrier board and got the logs at boot. Will reflash it on the v1 carrier board and get the dmesg from there too.
cbv1_003_boot_dmesg.log (83.0 KB)

USB device mode seems not working even in this dmesg.

And here’s the uart of reflashing it on the v1 cb: cbv1_003_flash_uart.log (190.5 KB)

Indeed, the flashing usb port does not work as host after flashing on the v1 cb, but does on the NV cb. Now on the v2 cb it does not even work for flashing anymore. Again, same Orin SOM, same SW in all the tests.

Config for the port is default, no changes there:

			usb2-0 {/* Goes to recovery port */
				mode = "otg";
				status = "okay";
				vbus-supply = <&p3768_vdd_5v_sys>;
				usb-role-switch;
				port {
					typec_p0: endpoint {
						remote-endpoint = <&fusb_p0>;
					};
				};
			};

… if your board design is different from NV devkit, then you need device tree change.

This topic seems reach the conclusion. If no further question, please close.
If any problem in configuring usb device tree, file a new topic for it.

The USB design for usb2-0 is the same as the nvidia carrier board, this is why the flashing works without any change on the nvidia carrier board. The issue is that it does not work on the v2 carrier board, which also has the same usb2-0 implementation

What are you talking about exactly?

Didn’t you just tell us none of your custom carrier board can get flashed by using initrd flash?

Please be aware that we need the flash port to be device mode. Could you clarify that first?

Please see my initial post " * Flashing on Nvidia carrier board, and on our v1 carrier board (which is inspired from the Orin NX Eng sample) works as expected every time."

Our v1 and v2 carrier boards have the same HW usb2-0 implementation as the nvidia carrier board. The device tree for usb 2-0 is the original one, no changes there.

I just notice you uploaded a new log there.

Sorry to say that, your board can get flashed on v1 carrier board is just a luck. Somehow usb device mode gets triggered on v1 board but not happened on v2 board. However, even v1 board software configuration is wrong. Thus, the result your board can gets flashed is just a luck or coincidence.

From software log and your comment,

The USB design for usb2-0 is the same as the nvidia carrier board,

I don’t know what nvidia carrier board you are talking about. This is false according to your log. Your design is not same a Orin Nano devkit carrier board at all.

Could you please expand on this? I’m not sure what you mean.

Jetson Linux 35.4.1 | NVIDIA Developer > Sources > … > kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi:

...
		ports {
			usb2-0 {/* Goes to recovery port */
				mode = "otg";
				status = "okay";
				vbus-supply = <&p3768_vdd_5v_sys>;
				usb-role-switch;
				port {
					typec_p0: endpoint {
						remote-endpoint = <&fusb_p0>;
					};
				};
			};
...

Can you please confirm this is the correct file to look at?
The device tree for usb port 2-0 is unchanged, because our HW implementation for it is the same as Jetson Orin Nano Developer Kit Carrier Board Specification.

Hi,

If it is same as Orin Nano devkit, then I should not see this log. But this happens in your log…

[   16.671538] fusb301 1-0025: failed to read device id, err : 0xffffff87
[   16.671540] fusb301 1-0025: fusb301 not support
[   16.671559] fusb301: probe of 1-0025 failed with error -22

because our HW implementation for it is the same as Jetson Orin Nano Developer Kit Carrier Board Specification.

This document may not sufficient to prove your board is same as Orin nano devkit at all… It is just a simple guideline.