Optimize boot time on On Orin NX

Hi,

I want to further optimize the boot time on Orin NX. We are booting the Orin via a USB drive on the development kit. Currently, a total of 55 seconds is being taken to boot up.

According to the log attached, the initial 13th to 21st second takes to reach the UEFI boot setup segment. How can I optimize this time?

In the UEFI boot setup, i have set auto boot time to 0s and deleted other boot options not relevant to us.
22nd second to 34th second is blank where this time is taken to attempt boot. How do we reduce this wait time?

Post this segment, a total of 29 seconds is taken for completion of kernel boot up to reach login.
We would strip down system services which are not required here and want to reduce the boot time as much as possible.

Also, would switching to U-boot from UEFI be helpful?

Please advice, thanks.
OrinDevKit_Boot_Console_Log.txt (156.9 KB)

Hi san1998,

Are you using Orin Nano devkit(p3768) for Orin NX module to verify?

It seems you are using JP5.1.1(R35.3.1). Could you verify with the latest JP5.1.2(R35.4.1)?
There should be 4s improvement in UEFI.

Optimize the boot time would strongly depend on your use case.
No matter from UEFI or kernel, you could disable the modules you don’t want to use in your case.

@KevinFFF ,

Hi,
Yes, we are using p3768 Orin Nano Devkit.
And the current BSP used was 35.3.1
Here is the log attached for 35.4.1

May I know if we can reduce this wait time taken to attempt boot which is around 12 seconds in this log.
Also how do we optimize the initial 6th second to 10th second.

Yes, we will disable modules that we do not require.

Orindevkit_console_boot_log.txt (159.2 KB)

The code in MB1/MB2 are not public so that you could not optimize the boot time from them.

You could refer to the following instruction to build the debug UEFI and you would see how UEFI boot up.
Build without docker · NVIDIA/edk2-nvidia Wiki (github.com) and remove the modules taking the time and which you don’t need.

disable write data to serial device in TegraCombinedSerialPortWrite()

1 Like

@KevinFFF

Hi,

[2023-12-13 11:24:33.015] Jetson UEFI firmware (version 4.1-33958178 built on 2023-08-01T19:34:02+00:00)
[2023-12-13 11:24:33.031] 
                          [2023-12-13 11:24:33.239] 
                                                    [2023-12-13 11:24:33.303] 
                                                                              [2023-12-13 11:24:33.319] 
                                                                                                        [2023-12-13 11:24:33.399] 
                                                                                                                                  [2023-12-13 11:24:33.399] 
                                                                                                                                                            [2023-12-13 11:24:33.399] 
                                                                                                                                                                                      [2023-12-13 11:24:33. 

[2023-12-13 11:24:33.815] I/TC: Dynamic shared memory is enabled
[2023-12-13 11:24:33.831] I/TC: Normal World virtualization support is disabled
[2023-12-13 11:24:33.847] I/TC: Asynchronous notifications are disabled
[2023-12-13 11:24:34.198] ��
                            [2023-12-13 11:24:34.199] 
                                                      [2023-12-13 11:24:34.199] 
                                                                                [2023-12-13 11:24:34.215] 
                                                                                                          [2023-12-13 11:24:34.230] 
                                                                                                                                    [2023-12-13 11:24:34.230] 
                                                                                                                                                              [2023-12-13 11:24:34.247] 
                                                                                                                                                                                        [2023-12-13 11:24:3 
                                                                                                                                                                                                            

[2023-12-13 11:24:35.414] 
                          [2023-12-13 11:24:35.430] 
                                                    [2023-12-13 11:24:35.446] 
                                                                              [2023-12-13 11:24:35.462] 
                                                                                                        [2023-12-13 11:24:35.478] 
                                                                                                                                  [2023-12-13 11:24:36.710] 
                                                                                                                                                            [2023-12-13 11:24:36.710] 
                                                                                                                                                                                      [2023-12-13 11:24:36. 
  
[2023-12-13 11:24:50.761] 
[2023-12-13 11:24:50.761] ESC   to enter Setup.
[2023-12-13 11:24:50.761] F11   to enter Boot Manager Menu.
[2023-12-13 11:24:50.761] Enter to continue boot.
[2023-12-13 11:24:50.761] **  WARNING: Test Key is used.  **
[2023-12-13 11:24:51.257]

From the log
The start of Jetson UEFI firmware to start of loading the linux kernel , it takes around 17.78 seconds of waiting. Is there any way to optimize this?

Please advice.

Hi san1998,

UEFI would do many works during boot up.
Since you are using the RELEASE image so that you are seeing blank in this stage.
Please use debug UEFI image and check what you don’t need in your use case to optimize the boot time.

@KevinFFF

Where can I find the debug UEFI image?

Please refer to Build without docker · NVIDIA/edk2-nvidia Wiki (github.com) for details.

@KevinFFF

Is there an improvement in boot time in UEFI in JetPack 6.0 DP , Jetson Linux 36.2?

There’re sw stack changed in R36.2, you could just update to JP6.0-DP(r36.2) and compare the boot time.

@KevinFFF ,

How do i access the UEFI source code in order to by pass / disable some of the checks and build it to save boot time?
For

JetPack 5.1.2 L4T R - 35.4.1

Thanks.

@KevinFFF

We don’t support using u-boot for R35 and R36.

Please just clone UEFI source and modify the source directly.

Could you replace the new UEFI binary and flash/boot as expected?

@KevinFFF

Yes, here is the log for it.

Also do i clone the uefi source code from GitHub - NVIDIA/edk2-nvidia: NVIDIA EDK2 platform support ?

uefi_debugLog.txt (222.7 KB)

It seems you’ve updated the debug UEFI binary successfully.

[2023-12-21 16:10:11.447]   Error: Could not detect network connection.

Do you have network requirement in your case?

@KevinFFF

No. I will change the boot order for that so it does not have to detect for network / delete other boot options which are not required. I will also set auto boot timeout to 0s and select quick uefi boot option.

We want to optimize time before the loading of kernel starts.

Thanks.

okay, please help to finish the above 2 items and share the serial console log with timestamp enabled for further check.

@KevinFFF

Here is the log after competing the above steps.

uefi2boot.txt (222.3 KB)

Thanks.

[2024-01-02 13:09:30.683] TegraI2cStartRequest: No ACK received

Do you require I2C in your case?

It seems no significant delay in your current UEFI.
You could try using uefi_Jetson_RELEASE.bin to disable debug message in UEFI to reduce the boot time.