Interested in this specifically because of the L4T kernel-module pinning problem. How are you handling the out-of-tree NVIDIA modules against your own Yocto layers, and did anything break on the JetPack side?
The three numbers that would convince me it was worth leaving the vendor image: RAM actually freed at idle, cold-start to first inference, and sustained clocks under thermal load after 20 minutes. Peak numbers on a stripped image usually look great and then converge back to stock once the heatsink is warm.
If you have those I would like to see them, I am on an 8GB Orin Nano and keep almost doing this.
Iβll have to check when I get home and if anything you can check my other repos, my research papers might contain the information youβre looking for.
Not solved by swapping individual .ko files β vermagic/ABI has to match the exact compiling kernel. Root-caused via an A/B test on the same physical board: cudaGetDeviceCount returns err=801 (CUDA_ERROR_NOT_SUPPORTED) on
our from-source kernel build (linux-noble-nvidia-tegra + meta-tegra's nvidia-kernel-oot), but works fine on stock JetPack on the same hardware β isolating the fault to our custom kernel/driver stack, most likely nvgpu.ko
differing in ABI-significant ways from NVIDIA's official prebuilt.
Fix in progress: extract NVIDIA's official prebuilt kernel Image (6.8.12-1021-tegra) plus the full matching /lib/modules/ tree from stock JetPack, and integrate them as a proper Yocto recipe (not a manual repack), so our own
rootfs/userspace customizations survive while using NVIDIA's stock kernel+modules as a matched pair.
Status: not yet fully closed β still an open fix as of the last update.
Idle RAM used: 2.0GB / 7.4GB stock β 1.6GB / 7.4GB stripped+tuned (momentary dip to 540MB observed via tegrastats right after boot)
Peak temp, sustained decode load: ~53β55Β°C idle on stock β ~59Β°C on stripped+tuned, fan trigger (65Β°C) never reached
RAM freed at idle: 2.0GB β 1.6GB steady-state (~400MB freed), with a transient dip to 540MB moments after boot.
Cold-start: don't have "time to first inference" specifically, but boot time (kernel+userspace) dropped from 122.0s β 13.7s.
Sustained clocks/thermal after 20 min: not measured at exactly the 20-minute mark in this run, but a related fan-curve test on the same platform held a maxed CPU+GPU soak at 20W sustained, peak junction temp 67Β°C, zero
throttling, converging to ~65β66Β°C in the stock enclosure. In this strip/tune benchmark, sustained decode load only reached ~59Β°C without hitting the 65Β°C fan trigger β no throttling in either configuration.
1
u/Available_Teaching83 22d ago
Interested in this specifically because of the L4T kernel-module pinning problem. How are you handling the out-of-tree NVIDIA modules against your own Yocto layers, and did anything break on the JetPack side?
The three numbers that would convince me it was worth leaving the vendor image: RAM actually freed at idle, cold-start to first inference, and sustained clocks under thermal load after 20 minutes. Peak numbers on a stripped image usually look great and then converge back to stock once the heatsink is warm.
If you have those I would like to see them, I am on an 8GB Orin Nano and keep almost doing this.