Issue getting display running using 5.1.5 Jetpack with custom kernel

Hello,

To solve the issues I am having with some cameras on Jetpack 5.1.3, I am trying Jetpack 5.1.5, as recommended in some posts here. I will probably make another post about this as 5.1.5 did not seem to fix these issues, but while deploying 5.1.5, I am having issues getting the display to work, which I did not have with 5.1.3 (my entire build process is identical, except for using the appropriate sources of course).

To guarantee the best configuration for the display, I have been flashing the default 5.1.5 tegra system with the precompile kernel images from the BSP sources and pulling the kernel config from /proc, ie. using nvidia-l4t-kernel’s config, adding my couple of config requirements (custom drivers for the cameras, multi-path TCP, etc… nothing display related). Then, I compile the kernel and the display drivers from the BSP against my kernel source and deploy these to my device. I can confirm that my display drivers (Nvidia.ko, Nvidia-modest.ko and Nvidia-drm.ko) are packaged with my kernel and Nvidia and Nvidia-modest do load upon boot, similar to the Tegra system. A difference that jumped out at me straight away is that Nvidia-modest is not being used by anything when running my kernel. To eliminate my device tree as the cause, I booted the Tegra kernel with my device tree, and I did get the display running with my dtb.

After compiling my kernel with the config extracted from /proc, I noticed that CONFIG_TEGRA_NVLINK=y disappeared from my .config. After searching for this, I only found it in the nvgpu overlay that ships with both the 5.1.3 and 5.1.5 kernel, so I assume this isn’t the cause, as I am not building this any differently between my 5.1.3 and 5.1.5 builds. I don’t explicitly build this overlay, I only call make twice, once for my kernel in the kernel root and once for the nvdisplay drivers as an out of tree modules build.

I am just a little stumped about what is missing to make the display work with my kernel. I have attached a tar with logs from the working (tegra default) and not working (my system) of the kernel config, dmesg during boot, device tree decompiled, and lsmod after boot. To remove rootfs issues, I can confirm that I can switch between a working and not-working display by switching between my kernel (+ modules) and the two packages nvidia-l4t-kernel and nvidia-l4t-display-kernel without changing the rootfs, ie. without reflashing.

Hopefully, there is enough information to go off of.

Cheers

debug_display.tar.gz (288.8 KB)

please also share the /var/log/Xorg.0.log when error happened.

thanks for the reply! here’s the log

xorg.log (7.2 KB)

I can confirm also that a screen is connected via displayport, text shows during kernel boot and this is the exact same configuration that works with 5.1.3. I am not sure if it’s important but the screen is not 1920x1080 but 1920x1200.

Looks like the Xorg is dead so that monitor won’t work.

  23.814] 	Module class: X.Org Server Extension
[    23.814] (II) NVIDIA GLX Module  35.6.1  Release Build  (bugfix_main)  (buildbrain@mobile-u64-6291-d8000)  Tue Mar  4 01:42:38 PST 2025
[    23.814] (II) NVIDIA: The X server supports PRIME Render Offload.
[    23.818] (EE) NVIDIA(GPU-0): Failed to select a display subsystem.
[    23.818] (EE) NVIDIA(0): Failing initialization of X screen
[    23.818] (II) UnloadModule: "nvidia"
[    23.818] (II) UnloadSubModule: "glxserver_nvidia"
[    23.818] (II) Unloading glxserver_nvidia
[    23.818] (II) UnloadSubModule: "wfb"
[    23.818] (II) UnloadSubModule: "fb"
[    23.818] (EE) Screen(s) found, but none have a usable configuration.

But we won’t know why Xorg is dead here. Please list out what is your step to update kernel and modules. We may see what is wrong there.

So my entire process for this specific build is

  • Download BSP sources and sample rootfs
  • Apply binaries
  • Flash jetson and pull kernel config from /proc to my defconfig in kernel source
  • Make defconfig with my localversion
  • Extract display driver source and build them like I wrote here
  • Package dtb, Image and modules (including nvidia, nvidia-modeset and nvidia-drm) into debian, debian postinst sets extlinux.conf to use these new files as well as regen initramfs
  • Install debian and reboot.

I don’t do anything on the system except install a new dtb, Image and modules folder. I do need to remove the nvidia-l4t-kernel and display driver packages though before installing my debian. But I inspected the display driver package and I don’t think this should be an issue as it also only really installs those three modules.

this script outlines the process, but I do the exact same thing for 5.1.3 which works

Hi,

I think you could try this first.

  1. Please don’t update dtb and kernel/modules together. Update them separately.

  2. Please do not use debian to install this first. Just put new nvidia/nvidia-modeset/nvidia-drm to /lib/moduels first to make sure they are fine or not.

I have set the original device tree. My kernel and modules are running but still no display.

lsmod does show that the display modules are loaded.

cartken@cart999jetson:~ $ modinfo nvidia
filename:       /lib/modules/5.10.216-cartken5.1.5/extra/opensrc-disp/nvidia.ko
firmware:       nvidia/35.5.0/gsp.bin
import_ns:      DMA_BUF
alias:          char-major-195-*
version:        35.5.0
supported:      external
license:        Dual MIT/GPL
srcversion:     8BBA78784B9642CDBD0225C
alias:          pci:v000010DEd*sv*sd*bc06sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
alias:          of:N*T*Cnvidia,tegra234-displayC*
alias:          of:N*T*Cnvidia,tegra234-display
depends:        
name:           nvidia
vermagic:       5.10.216-cartken5.1.5 SMP preempt mod_unload modversions aarch64

Is this version here related to JP version? as 35.0 would be 5.1.3 not 5.1.5

Yes, that looks like a problem. I just checked the original binary of nvidia.ko and the version should have 35.6.1. Looks like awrong version of source code is in use?

I think this could be it. If so sorry for the basic error, have been writing a lot of build scripts lately and something must of got muddled >.<. Am checking and testing now.

Yep this was the issue, working now :)

Thanks and sorry for the silly mistake >.<

1 Like

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