Issue with Custom Kernel Drivers Not Loading After Flashing on Jetson Orin NX

Hello everyone,

I’m using a Jetson Orin NX (16GB) with kernel version 5.10 and Tegra version 35.3.1. I’ve successfully added some drivers and build kernel following the steps as per documentation Kernel Customization — Jetson Linux Developer Guide documentation .
Before flashing I replaced the files nvgpu.ko, DTS files, and Image as per the instructions in the Kernel Customization document.

flashing this customized kernel to my Jetson Orin NX using the command:

“sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1
-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”

the flashing process was successful. However, when I check kerusing lsmod, I do not see the added driver. Could you please advise how I can ensure that all the drivers I’ve added to the kernel are properly reflected after flashing?

Thank you!

Orin should not be using L4T R32.x. It should be either L4T R35.x or L4T R36.x. See:
https://developer.nvidia.com/linux-tegra

If you have a dev kit without eMMC, then QSPI flash is correct, but you need QSPI which is compatible with the release of content going onto the SD card. One QSPI flash is valid for a number of SD card releases, but not between major releases (e.g., an SD card for 35.x can work with most any 35.x QSPI flash, although the most recent is advised; an SD card for 36.x cannot work with any R35.x QSPI flash). No R32.x was ever made for Orin.

Incidentally, if you use a kernel config which is otherwise an exact match for the running kernel, including a matching CONFIG_LOCALVERSION, and if you are only adding modules, then you just have to copy the file in place and run “sudo depmod -a”. There is no need to flash.

One exception is that if the module is required for boot, then it must also go into the initrd.

sorry for the typing mistakes I was using R35.3.1 only

Can I verify that the model you have does or does not have eMMC? I’m assuming probably no eMMC, which means QSPI matters. If this does have eMMC, then procedures differ. One can also observe if the SD card slot is on the carrier board, or if the SD card slot is on the module itself.

We are using our custom carrier board, which does not have an EEPROM or an SD card slot. we are using an SSD, much similar to the Jetson orin NX DevKit.

The commercial modules which are sold separately always have eMMC. The particular software used might differ, but much of the procedure you might find for an eMMC model will apply (after using your kernel and custom device tree).

When you boot, what result do you get from “uname -r”?

What do you see from (you might need to first “sudo apt-get install tree”):

cd /lib/modules/$(uname -r)/kernel
tree

Is your module in that tree output?

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