Jetson Orin Nano Fails to Boot After Custom Kernel Build and Flash
Issue Overview
Users are experiencing issues with their Jetson Orin Nano development board after attempting to build a custom kernel and flash it onto the device. The specific problem is that after a seemingly successful flash process, the Jetson Orin Nano fails to boot, resulting in a dark screen. This issue occurs when users try to build and apply a real-time (RT) patched kernel using JetPack 5.1.3.
Possible Causes
-
Incorrect kernel configuration: The custom kernel build process may have resulted in a misconfigured kernel that is incompatible with the Jetson Orin Nano hardware.
-
Incomplete or corrupted flash: Although the flash process reports success, there might be issues with the actual data written to the device.
-
Missing or incompatible drivers: The custom kernel build may not include all necessary drivers for the Jetson Orin Nano, particularly display drivers.
-
PREEMPT_RT patch conflicts: The application of the real-time patch might introduce conflicts with existing Jetson-specific optimizations.
-
Bootloader issues: The flashing process may have affected the bootloader, preventing the system from initializing properly.
-
Incorrect DTB (Device Tree Blob) files: The custom build process might have generated or used incompatible DTB files for the Jetson Orin Nano.
Troubleshooting Steps, Solutions & Fixes
-
Verify flash integrity:
- Re-run the flashing process to ensure all data is correctly written to the device.
- Use the following command to flash:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk1p1 \ -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \ --showlogs --network usb0 jetson-orin-nano-devkit internal
-
Check kernel logs:
- Set up a serial debug console to access low-level boot information.
- Follow the guide at: https://jetsonhacks.com/2019/04/19/jetson-nano-serial-console/
- Analyze the kernel logs for any error messages or boot failures.
-
Verify kernel configuration:
- Review the kernel configuration file (.config) to ensure all necessary options are enabled for the Jetson Orin Nano.
- Pay special attention to display and GPU-related configurations.
-
Rebuild without RT patch:
- Temporarily remove the RT patch application step from the build script.
- Rebuild and flash the kernel without RT support to isolate if the issue is related to the PREEMPT_RT patch.
-
Check display drivers:
- Ensure the NVIDIA display drivers are correctly built and installed.
- Verify the following files are present in the correct location:
$ROOT/Linux_for_Tegra/rootfs/lib/modules/5.10.192-rt96-tegra/extra/opensrc-disp/nvidia-modeset.ko $ROOT/Linux_for_Tegra/rootfs/lib/modules/5.10.192-rt96-tegra/extra/opensrc-disp/nvidia.ko $ROOT/Linux_for_Tegra/rootfs/lib/modules/5.10.192-rt96-tegra/extra/opensrc-disp/nvidia-drm.ko
-
Update module dependencies:
- After building and before flashing, run the following commands:
sudo cp "${KERNEL_OUT}/System.map" ${L4T_ROOTFS_DIR} sudo chroot ${L4T_ROOTFS_DIR} depmod -a -F /System.map 5.10.192-rt96-tegra
- After building and before flashing, run the following commands:
-
Verify DTB files:
- Ensure the correct DTB files for Jetson Orin Nano are being used.
- Check that the DTB files are correctly copied to the
kernel/dtb/
directory.
-
Use known-good configuration:
- If possible, obtain a known-working kernel configuration for Jetson Orin Nano.
- Use this configuration as a base and carefully apply your custom changes.
-
Check for hardware issues:
- If possible, try booting with the original, unmodified JetPack image to rule out hardware problems.
-
Seek community support:
- If the issue persists, gather all relevant logs and information.
- Post a detailed description of the problem, including all troubleshooting steps taken, in the NVIDIA Developer Forums for further assistance.