This is not an answer, but this might be useful for your situation.
A module is generally a kernel module, and the device tree is different. Typically device tree sets up optional functions for various pins (they can have more than one function), and using a third party carrier board would tend to require this (we don’t know if your Xavier NX is on a custom carrier or on a dev kit). You can think of the module as part of the kernel, and the device tree as arguments passed to drivers (such as what a module might consult upon loading if the device it works with is not plug-n-play).
If you get a serial console log, then you can post that and find out exactly which device tree is being loaded.
You could configure kernel source and build the device tree source to get that same module (assuming it is an NVIDIA configuration; YMMV for third party configurations), although you’d probably need to know which module it is ahead of time.
During a kernel build the device tree is not really part of the kernel. However, which fragments of a device tree are needed depends upon which drivers (kernel CONFIG items) are built, so it makes sense to package them together. One would have to take steps to propagate that config (assuming it is correct to start with) prior to building the dtbs
target.
However, if you know which device tree file it is which is used during boot, then it is often easier to decompile that to source, make the edit, and then recompile. I just posted this which explains using extlinux.conf
to add a second boot entry and name an alternate device tree:
https://forums.developer.nvidia.com/t/select-a-device-tree-on-boot/255583/4
By adding decompile and recompile information this should also work for you. This uses the “dtc
” (device tree compiler) program. If you don’t have this, then you can simply “sudo apt-get install device-tree-compiler
”.
This decompiles “example.dtb
” into “example.dts
”:
dtc -I dtb -O dts -o example.dts example.dtb
You could edit “example.dts
”, and then recompile it with an alternate name:
dtc -I dts -O dtb -o example-edited.dtb example.dts
Note that on a running system you can also extract the tree into source format (or with minor changes, binary format):
dtc -I fs -O dts -o from_system.dts /proc/device-tree
If you stick to the kernel build method, at least find out which device tree you are building, and make sure that your configuration is correct before you start. I’d recommend building the “Image
” target to propagate configuration and to also act as an “acid test” since if anything is wrong, then it is likely to show up there.