Jetson Orin Nano: Unable to Change UEFI Boot Device

Issue Overview

Users of the Nvidia Jetson Orin Nano DevKit are experiencing difficulties in changing or selecting the UEFI boot device. The system consistently follows a predetermined boot sequence (NVMe -> USB -> SD) regardless of user attempts to modify the boot order or select a specific boot device. This issue persists even when multiple storage devices are connected to the board. Changes made in the UEFI settings, such as deleting boot options, changing boot order, or directly selecting the Boot Manager, are not retained after reaching the ‘L4TLauncher:’ stage.

Possible Causes

  1. Firmware limitations: The UEFI firmware may have restrictions that prevent custom boot order modifications.
  2. Software bug: There could be a bug in the L4TLauncher or bootloader that resets UEFI settings.
  3. Configuration issue: Incorrect or conflicting settings in the bootloader or kernel command line.
  4. Hardware limitation: The Jetson Orin Nano DevKit may have a fixed boot priority that overrides user settings.
  5. Outdated software: The issue might be related to an older version of Jetpack or L4T (Linux for Tegra).

Troubleshooting Steps, Solutions & Fixes

  1. Verify current setup:

    • Check the Jetpack version: The user reported using L4T 35.3.1. Ensure you’re using the latest stable version.
    • Confirm you’re using the Jetson Orin Nano DevKit, not a custom board.
  2. Flash individual boot devices:

    • Flash NVMe, USB, and SD card individually following the official Nvidia guide.
    • Verify that each device boots correctly when it’s the only storage attached.
  3. Modify rootfs target:

    • Edit /boot/extlinux/extlinux.conf on each boot device.
    • Change the root parameter from:
      root=PARTUUID=ad43ec6f-6d79-4df0-b915-1c936b0e33ef
      

      to:

      root=/dev/sda1
      
    • Adjust sda1 to match the appropriate device for each boot option.
  4. Modify flash script:

    • If creating a custom image, modify the flash.sh script to use device names instead of UUIDs.
    • Look for the section in flash.sh that sets the cmdline variable.
    • Change:
      cmdline+="root=PARTUUID=${_tmp_uuid} rw rootwait rootfstype=ext4 "
      

      to:

      cmdline+="root=/dev/${target_rootdev} rw rootwait rootfstype=ext4 "
      
  5. Check kernel command line:

    • After booting, run cat /proc/cmdline to view the current kernel command line.
    • Verify that the root device is correctly specified.
  6. Create a rescue boot option:

    • Prepare a USB drive with a minimal rescue system.
    • Modify its extlinux.conf to ensure it uses its own rootfs.
    • This can serve as a fallback if the main system becomes unbootable.
  7. Use serial console for debugging:

    • Connect a serial console to monitor the full boot process.
    • This can help identify at which point the boot device selection is overridden.
  8. Check for firmware updates:

    • Look for any available updates to the Jetson Orin Nano’s firmware or UEFI.
    • Apply updates if available, following Nvidia’s official documentation.
  9. Contact Nvidia Support:

    • If the issue persists after trying these steps, reach out to Nvidia’s developer support.
    • Provide them with:
      • Your exact hardware configuration
      • Jetpack and L4T versions
      • Detailed boot logs
      • Steps you’ve already taken to troubleshoot

Remember that modifying boot configurations can potentially render your system unbootable. Always have a backup plan and a way to recover your system before making changes.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *