Need helpt with /dev/mtd0 in custom rootfs


I have created a custom rootfs based on Ubuntu 20.04.4 and Jetpack 34.1.1.
Everything seems to be working except the access to the QSPI. The initrd created from the rootfs can see the QSPI and flash it, but the booted OS is not able to interact with it.

An excerpt of the bootlog:

[   11.968028] qspi_mtd spi6.0: s25fs256s SSG 8 0 1000 2000000
[   11.968038] qspi_mtd spi6.0: s25fs256s (32768 Kbytes)
[   11.968046] qspi_mtd spi6.0: mtd .name = spi6.0, .size = 0x2000000 (32MiB) .erasesize = 0x00010000 (64KiB) .numeraseregions = 0
[   12.110866] 1 fixed-partitions partitions found on MTD device spi6.0
[   12.110931] Creating 1 MTD partitions on "spi6.0":
[   12.110940] 0x000000000000-0x000002000000 : "Whole_flash0"

Changed /opt/nvidia/l4t-bootloader-config/ to output the “info” line:

Got update payload: /opt/ota_package/bl_update_payload
Fail to open metadata file
Init SMD partition failed!
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mtdblock0
Get SPI boot device size failed
Publish Block Device Failed
/usr/sbin/nv_bootloader_payload_updater --print-ver failed.
Error. Cannot get valid version information
Exiting ...
nv_update_engine --disable-ab
Nvidia A/B-Redundancy Update tool Version 2.0
Fail to open metadata file
Init SMD partition failed!
Fail to open metadata file
Init SMD partition failed!
disabling A/B redundancy
Unable to find kernel cmdline paramater boot.slot_suffix=
Error: Disable A/B redundancy failed!
TNSPEC 3668-200-0000-H.0-1-2-jetson-xavier-nx-devkit-external
COMPATIBLE_SPEC 3668-100---1--jetson-xavier-nx-devkit-
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

On a system where it works the kernel commandline is:

console=ttyTCU0,115200 video=tegrafb earlycon=tegra_comb_uart,mmio32,0x0c168000 gpt rootfs.slot_suffix= usbcore.old_scheme_first=1 tegraid= maxcpus=6 boot.slot_suffix=_b boot.ratchetvalues=0.4.2 vpr_resize sdhci_tegra.en_boot_part_access=1    quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

While it is like this on my system:

root=PARTUUID=496176e5-1f8b-43e6-bd37-2271bda3979f rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

That looks a bit wrong to me?

/dev/mtdblock0 is missing, while /dev/mtd0 exists
I have also tried using the Sample Rootfs, applying binaries. But the result is the same. No /dev/mtdblock0

What could be the issue?

Okay so I have checked the release notes of the Developer Preview 5.0.1 again.
Before I only looked for known issues. But there is a section listing “What’s not supported”:

34.1 Developer Preview Release Notes
 Image-based over-the-air updates tools
 Rootfs A/B

If these features are not supported, why are they included in the documentation? That is a bit misleading.

Does that mean I did nothing wrong and it is completely normal in this version that the /dev/mtdblock0 device and the bootloader script fail?


Confirmed those are not support in rel-34 DP now. Please test them after rel-35 is released.

Thanks Wayne,

is there any timeline for release 35?

Around the late July. Which means next month.