Brand new Jetson Orin Nano Super Devkit, flashed with JP 36.4.4.
nvidia,p3768-0000+p3767-0005-super\0nvidia,p3767-0005nvidia,tegra234
Ran jetson-io to enable spi1 which created /boot/jetson-io-hdr40-user-custom.dtbo and updated /boot/extlinux/extlinux.conf with a new entry…
LABEL JetsonIO
MENU LABEL Custom Header Config: <HDR40 User Custom [2025-09-02-171254]>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0005-nv-super.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=PARTUUID=152b0b6d-d542-43ea-a9af-52511d7b627b rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 video=efifb:off console=tty0 systemd.zram=0
OVERLAYS /boot/jetson-io-hdr40-user-custom.dtbo
Rebooted but can’t find any evidence that the overlay was actually applied. I know the JetsonIO section in extlinux.conf was used because I added the systemd.zram=0 kernel commandline parameter and that DID take effect. I would have expected that /sys/firmware/devicetree/base/bus@0/pinmux@c300000/exp-header-pinmux would have entries in it since that’s what the overly actually does…
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0xaa9 (2729)
// off_dt_struct: 0x38
// off_dt_strings: 0x9a0
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0x109
// size_dt_struct: 0x968
/ {
jetson-header-name = "Jetson 40pin Header";
overlay-name = "User Custom [2025-09-02-171254]";
compatible = "nvidia,p3768-0000+p3767-0000", "nvidia,p3768-0000+p3767-0001", "nvidia,p3768-0000+p3767-0003", "nvidia,p3768-0000+p3767-0004", "nvidia,p3768-0000+p3767-0005", "nvidia,p3768-0000+p3767-0000-super", "nvidia,p3768-0000+p3767-0001-super", "nvidia,p3768-0000+p3767-0003-super", "nvidia,p3768-0000+p3767-0004-super", "nvidia,p3768-0000+p3767-0005-super", "nvidia,p3509-0000+p3767-0000", "nvidia,p3509-0000+p3767-0001", "nvidia,p3509-0000+p3767-0003", "nvidia,p3509-0000+p3767-0004", "nvidia,p3509-0000+p3767-0005";
fragment@0 {
target = <0xffffffff>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <0x00000001>;
exp-header-pinmux {
phandle = <0x00000001>;
hdr40-pin19 {
nvidia,pins = "spi1_mosi_pz5";
nvidia,function = "spi1";
nvidia,tristate = <0x00000000>;
nvidia,enable-input = <0x00000001>;
};
hdr40-pin21 {
nvidia,pins = "spi1_miso_pz4";
nvidia,function = "spi1";
nvidia,tristate = <0x00000000>;
nvidia,enable-input = <0x00000001>;
};
hdr40-pin23 {
nvidia,pins = "spi1_sck_pz3";
nvidia,function = "spi1";
nvidia,tristate = <0x00000000>;
nvidia,enable-input = <0x00000001>;
};
hdr40-pin24 {
nvidia,pins = "spi1_cs0_pz6";
nvidia,function = "spi1";
nvidia,tristate = <0x00000000>;
nvidia,enable-input = <0x00000001>;
};
hdr40-pin26 {
nvidia,pins = "spi1_cs1_pz7";
nvidia,function = "spi1";
nvidia,tristate = <0x00000000>;
nvidia,enable-input = <0x00000001>;
};
};
};
};
fragment@1 {
target = <0xffffffff>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <0x00000002>;
exp-header-pinmux {
phandle = <0x00000002>;
};
};
};
__symbols__ {
jetson_io_pinmux = "/fragment@0/__overlay__/exp-header-pinmux";
jetson_io_pinmux_aon = "/fragment@1/__overlay__/exp-header-pinmux";
};
__fixups__ {
pinmux = "/fragment@0:target:0";
pinmux_aon = "/fragment@1:target:0";
};
__local_fixups__ {
fragment@0 {
__overlay__ {
pinctrl-0 = <0x00000000>;
};
};
fragment@1 {
__overlay__ {
pinctrl-0 = <0x00000000>;
};
};
};
};
…but it just has its name and phandle…
$ ls -al /sys/firmware/devicetree/base/bus@0/pinmux@c300000/exp-header-pinmux
total 0
drwxr-xr-x 2 root root 0 Sep 2 17:19 .
drwxr-xr-x 3 root root 0 Sep 2 17:19 ..
-r--r--r-- 1 root root 18 Sep 2 17:19 name
-r--r--r-- 1 root root 4 Sep 2 17:19 phandle
What am I missing?