Skip UEFI Boot Screen and Logs on Jetson Orin Nano (BalenaOS 6.10.26 / L4T 36.4.7)

Hi everyone,

I’m developing an application for production (for a fleet) on a Jetson Orin Nano devKit and I need to completely skip the UEFI boot screen (NVIDIA logo, “Press ESC” prompt, and all boot log messages). I have tried multiple methods but none provided the expected result, if someone could tell me if I’m in the good direction or if BalenaOS/BalenaCloud provides a built in solution.

Hardware: Nvidia Jetson Orin Nano 8GB (SD) Devkit NVME, running BalenaOS 6.10.26, L4T 36.4.7.

What I’ve try/done so far:

  1. I have tried to activate the Fast Boot from the BIOS but issues with “Submit Fail for Form: Grace Configuration. Press D(d) to discard the changes form this form, Press G(g) to go to this form”

  2. Set EFI timeout to 0 via efibootmgr -t 0 and L4TDefaultBootMode EFI variable, reduced the display visibility time but didn’t eliminate the screen. I have also tried to set different
    RESIN_HOST_CONFIG variables but it didn’t solve the issue.

  3. Built a custom UEFI firmware from NVIDIA’s edk2-nvidia source on an x86 Ubuntu machine using Docker:

    • Cloned source: edk2_docker edkrepo clone nvidia-uefi NVIDIA-Platforms r36.4.0-updates into /build/nvidia-uefi

    • Modified /build/nvidia-uefi/edk2-nvidia/Platform/NVIDIA/Jetson/Jetson.defconfig:

      • Added CONFIG_SINGLE_BOOT_L4T_LAUNCHER=y (disables ESC menu/boot UI)

      • Added # CONFIG_LOGO is not set (removes NVIDIA logo)

      • Removed CONFIG_NVIDIA_DISPLAY=y and added # CONFIG_NVIDIA_DISPLAY is not set (disables graphics console entirely no display output from UEFI at all)

    • Commented out Error Print lines to try to prevent the warning/errors not relevant to display during the boot in order to not display the logs.

    • Build command: edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh

    • Flashed the custom UEFI to QSPI using NVIDIA’s flash tools:

      • Downloaded L4T BSP R36.4.3 to ~/Linux_for_Tegra

      • Copied custom binary: cp /build/nvidia-uefi/images/uefi_Jetson_RELEASE.bin ~/Linux_for_Tegra/bootloader/uefi_jetson.bin

      • Extracted sample rootfs + ran apply_binaries.sh

      • Put Jetson in recovery mode (jumper on devkit, USB-C to host)

      • Flashed QSPI only: sudo ./flash.sh --qspi-only jetson-orin-nano-devkit-nvme nvme0n1p1

  4. Flash result: NVIDIA logo and boot menu eliminated. Still had some log messages in a text window (FindPartitionInfo errors, legacy interface warning, CheckDtbExists). I think they aren’t from the UEFI source, they come from other boot stages.

Is the custom boot is a coherant way or BalenaCloud ecosystem provides a solution for this?

Hi @EnzoGhisoni , if you perform a hostOS update the UEFI capsule will replace the UEFI binary which you wrote in the QSPI. Also, please note that the UEFI build you may not contain all the patches applied in the balena build and could potentially cause unexpected behavior during OS updates.

Thanks for your reply, so if the BalenaOS update will overwrite the custom UEFI, Does Balena provide a way to do what I want (skip the boot menu and logs before the spash screen) that will persist with the OS updates?

@EnzoGhisoni that is possible only with custom device support

Thanks for the reply, I will give a check to the custom support.