Flashing Orin NX IO-BASE-B (p3509-a02-p3767-0000) not working in Jetson Linux 36.2

I am trying to flash a Nvidia Jetsion Orin NX 16GB on the JETSON-IO-BASE-B carrier board (configuration p3509-a02-p3767-0000) with Jetson Linux 36.2 using the following command:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_nvme.xml -S 64GiB -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" --showlogs --network usb0 p3509-a02-p3767-0000 internal

Unfortunately this command uses this device tree kernel_tegra234-p3768-0000+p3767-0000-nv.dtb that I think does not have the right USB configuration for p3509-a02 carrier board. For this reason after the first reboot I got this error:

***************************************
*                                     *
*  Step 3: Start the flashing process *
*                                     *
***************************************
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
....
Waiting for target to boot-up...
Timeout
Cleaning up..

In my dmesg I see that only USB disconection was detected, but not the reconection:

[34356.997270] nfsd: last server has exited, flushing export cache
[34357.210790] NFSD: Using nfsdcld client tracking operations.
[34357.210809] NFSD: no clients to reclaim, skipping NFSv4 grace period (net f0000000)
[34365.145945] usb 3-7: USB disconnect, device number 94

On the UART log I see that the kernel starts correctly and the usb ethernet is available:


bash-5.1# ifconfig 
usb0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet6 fe80::1  prefixlen 128  scopeid 0x20<link>
        inet6 fc00:1:1::2  prefixlen 64  scopeid 0x0<global>
        ether ce:1a:b1:6b:3b:6b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

I attach the flash and UART full logs.

uart_logs.txt (71.6 KB)
flash_logs.txt (181.1 KB)

I think the p3509-a02-p3767-0000.conf does not have the right overlays for the USB configuration on the
JETSON-IO-BASE-B carrier board

Do you have the WiFi card or any USB devices other than the flashing cable plugged in?
Or otherwise the tegra-xudc driver will fail to be loaded, and normally you should see stuff like this:

bash-5.1# [   68.107831] tegra-xudc 3550000.usb: EP 5 (type: intr, dir: in) enabled
[   68.107852] tegra-xudc 3550000.usb: EP 3 (type: bulk, dir: in) enabled
[   68.107864] tegra-xudc 3550000.usb: EP 2 (type: bulk, dir: out) enabled
[   68.107980] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[   68.108142] tegra-xudc 3550000.usb: EP 7 (type: bulk, dir: in) enabled
[   68.108160] tegra-xudc 3550000.usb: EP 4 (type: bulk, dir: out) enabled

It’s true that we don’t fully support p3509-a02-p3767-0000 on L4T 36.x, and we keep this config just to make sure HDMI functions well with Orin NX/Nano, but the USB part should still work.

Finally, you should use:

-p "-c bootloader/generic/cfg/flash_t234_qspi.xml"

instead of

-p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml"

Hi, thanks for your quick response. I do not have a WiFi or USB devices attached to the carrier board. I only have a NVMe Samsung 970 Evo Plus 2TB attached. I used the flash option that you mentioned as follows:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_nvme.xml -S 64GiB \
-p "-c bootloader/generic/cfg/flash_t234_qspi.xml" --showlogs \
--network usb0 p3509-a02-p3767-0000 internal

But I got the same results. I attach the full logs
uart_logs_2.txt (75.9 KB)
flash_logs_2.txt (233.0 KB)

I see that in JP 35.2.1 sources for p3509 the vbus-gpio is defined in hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3509-a02.dtsi:

		ports {
			usb2-0 {
				mode = "otg";
				status = "okay";
                                vbus-supply = <&p3509_vdd_5v_sys>;
#if TEGRA_XUSB_DT_VERSION >= DT_VERSION_3
				usb-role-switch;
				connector {
					compatible = "usb-b-connector", "gpio-usb-b-connector";
 					label = "micro-USB";
 					type = "micro";
 					vbus-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Z, 1) GPIO_ACTIVE_LOW>;
 				};
#endif
			};

But for JP36.2 there is not sources for p3509, and in source/hardware/nvidia/t23x/nv-public/tegra234-p3768-0000.dtsi, the vbus-gpio definition is not present.

			ports {
				/* recovery port */
				usb2-0 {
					mode = "otg";
					vbus-supply = <&vdd_5v0_sys>;
					status = "okay";
					usb-role-switch;
				};

Then, I think the p3768 configuration is not USB otg compatible with p3509

That is required. Please make sure you have at least one USB device attached during flashing.
It’s a bug in 36.2 and has been fixed internally.
It’s not related to the device tree setting, and flashing should still work.

1 Like

Thanks a lot for the solution. I attached a USB keyboard and the flash process completed successfully with Jetpack 36.2.

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