No Display for Jetson Nano ORIN

Hi Team,
I am compiling the kernel for my Jetson Nano Orin Development board.

First we have tried to build the linux kernel using nvbuild.sh.
Kernel Compilation
i am enabling the WWAN driver via menuconfig. there were compilation error about frame length also there is no screen after booting up.

so we have used below commands to compile the kernel successfully.
sharing my kernel building steps.

export JETSON_ORIN_NANO_KERNEL=/media/extended/nvidia/kernel_cc/public_sources/Linux_for_Tegra/source/public/kernel_src/kernel
export JETSON_ORIN_NANO_KERNEL_SOURCE=$JETSON_ORIN_NANO_KERNEL/kernel-5.10
export CROSS_COMPILE_AARCH64_PATH=/media/extended/nvidia/kernel_cc/aarch64--glibc--stable-final
export CROSS_COMPILE_AARCH64=$CROSS_COMPILE_AARCH64_PATH/bin/aarch64-buildroot-linux-gnu-
export CROSS_COMPILE=$CROSS_COMPILE_AARCH64
export TEGRA_KERNEL_OUT=$JETSON_ORIN_NANO_KERNEL/build
export KERNEL_MODULES_OUT=$JETSON_ORIN_NANO_KERNEL/modules
export LOCALVERSION=-tegra
make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT defconfig
make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT menuconfig
make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 Image
make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 dtbs
make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT CROSS_COMPILE=${CROSS_COMPILE} -j6 modules
sudo make -C $JETSON_ORIN_NANO_KERNEL_SOURCE ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=$KERNEL_MODULES_OUT

with this setting we are able to build kernel but there is no display after booting up i am also attaching my log file for better reference.

log.txt (95.1 KB)

Best Regards.
Parth.

When using menuconfig, did you alter only module features (“=m”), or did you integrate or change the kernel itself (“=y”; list whatever you changed)? Did you install by copy of kernel modules, kernel Image file, or both?

1 Like

Hi linuxdev,
Thank you for quick response.

We have only enabled the wwan module features("= * ") and all the other settings left as it is.
Yes, we have copied the both modules and Imgae file.

Best regards,
Parth

Most likely the kernel configuration and installation was invalid for the NVIDIA drivers. Is it possible that you can rebuild the original config, and set wwan as a module? Then, if you reinstall the Image (if it is an exact match to the original other than perhaps adding a module format driver, and also has CONFIG_LOCALVERSION="-tegra", then it would work again. I’m assuming you didn’t remove the old modules (which would include the NVIDIA modules).

I don’t know if your changes are such that you still have access to login over ssh or serial console, but I think if the old modules are still present, then things might be simpler. Otherwise you might end up flashing again, and then adding the module rather than replacing the entire kernel and all modules.

1 Like

Hello,
I did remove the old modules before replacing them with the new one.i did have access to login ssh but i have to connect to the wifi using nmcli through serial console as there is no GUI available. as per your suggestion i will try to add only wwan module rather than replacing the whole modules.
i have one more question why do we need to add LOCALVERSION=“-tegra” ?

Best Regards,
Parth.

You forgot display drivers:
https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/SD/Kernel/KernelCustomization.html#to-build-display-kernel-modules

It just means this kernel is used by Tegra platforms.
You can omit it if you don’t like it.

1 Like

Hi DaveYYY,

I will add the display modules and let you know the results.
BR.

Never remove the old modules. Overwrite them. That’s what deleted video. Also, if you get the wrong module directory, you’ll remove things you definitely don’t want gone. Add to this that it is best to keep a copy of the original kernel and modules in place in case things don’t work out.

You might find this of interest regarding CONFIG_LOCALVERSION and setting it to “-tegra”:
https://forums.developer.nvidia.com/t/kernel-customisation-jetson-orin-nx-bsp-install/262647/12

As a short answer, that’s how the modules were compiled in the original install. You can’t reuse the original modules if the configuration does not match and it causes the kernel to look for modules in the wrong place.

Hello Team
i have flashed my board using sdkmanager with kernel version 5.15.122-tegra
i have download the public source for same 5.15 and added module of qmi_wwan.ko and build the image ,dtbs and module by the steps mentioned in above post.

now i copied this qmi_wwan.ko file in jetson source (downloaded from sdkmanager) rootfs/lib/modules/drivers/net/usb/

and running modprobe to load the module,but it gives an error

could not install module qmi_wwan.ko : unknown symbol in module

it this the right way to do it or not?

dmesg log

267.238783] qmi_wwan: Unknown symbol usbnet_write_cmd (err -2)
[ 267.238843] qmi_wwan: Unknown symbol usbnet_change_mtu (err -2)
[ 267.238890] qmi_wwan: Unknown symbol usbnet_open (err -2)
[ 267.238912] qmi_wwan: Unknown symbol usbnet_get_ethernet_addr (err -2)
[ 267.238934] qmi_wwan: Unknown symbol usbnet_tx_timeout (err -2)
[ 267.238966] qmi_wwan: Unknown symbol usbnet_suspend (err -2)
[ 267.238987] qmi_wwan: Unknown symbol usbnet_start_xmit (err -2)
[ 267.239007] qmi_wwan: Unknown symbol usbnet_get_endpoints (err -2)
[ 267.239048] qmi_wwan: Unknown symbol usb_cdc_wdm_register (err -2)
[ 267.239073] qmi_wwan: Unknown symbol usbnet_stop (err -2)
[ 267.239092] qmi_wwan: Unknown symbol usbnet_disconnect (err -2)
[ 267.239116] qmi_wwan: Unknown symbol usbnet_probe (err -2)
[ 267.239132] qmi_wwan: Unknown symbol usbnet_resume (err -2)
[ 304.472726] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)
[ 425.396323] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)
[ 546.409678] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)
[ 578.322093] qmi_wwan: Unknown symbol usb_cdc_wdm_register (err -2)
[ 667.417514] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)
[ 676.813598] qmi_wwan: disagrees about version of symbol module_layout
[ 787.982981] qmi_wwan: Unknown symbol usb_cdc_wdm_register (err -2)
[ 788.410701] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)
[ 909.363911] start_addr=(0x20000), end_addr=(0x40000), buffer_size=(0x20000), smp_number_max=(16384)

from the dmesg i can see compiled the module against a different version of the kernel.
i have downloaded thiskenel version.
can you please guide me on this.

one more thing how to add menuconfig in latest nvbuild.sh script

BR.
nvbuild.zip (2.9 KB)

How did you add the qmi_wwan.ko module? Did you use a dependency aware editor, e.g., nconfig or menuconfig? If not, then that would be incorrect and other dependencies would have been left out.

If you did use nconfig or menuconfig, then it is quite possible that more than one new module was created, and that you’d just have to copy those in as well (e.g., some other module could provide the symbol usbnet_write_cmd; adding that module would make known the currently missing symbol).

Additionally, before using modprobe, tell the kernel to look for all changes via “sudo depmod -a” (lets pretend usbnet_write_cmd is in another module, and you must load it prior to loading your new module; then it would fail if the kernel does not know about the other module, so you would either load in order, or tell the kernel to update dependency lists with depmod so the kernel itself could resolve this).

1 Like

Thank you so much, Everyone.

I am able to resolve the issue and enable the Wwan driver.
I recompiled the latest kernel added copy of the generated modules, dtb, and image, and build the SD image.

For the driver, I copied the qmi_wwan driver in the /net/usb/ directory and used modprobe. this was giving me errors as I mentioned in my previous post, to resolve this I have to modprobe qmi_helpers first and then using modprobe qmi_wwan driver resolved the issue.

any lights on this why I have to modprobe qmi_helpers driver first even though I run sudo depmod -a before modprobing the qmi_wwan?

I couldn’t tell you what the cause is. There might be something in the module load related to previous changes or additions. I think if the original kernel just had items added without the extra steps it might work correctly.

1 Like

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