Hi, I stumbled on your GIST and trying to install LP 36.3 on my orin NX, also for Kubernetes.
I have the same issue:
[ 140]: l4t_flash_from_kernel: Error flashing qspi
Flash failure
I did ssh to the Orin (Like that script does), and I found out that /dev/mtd0 isnāt there. In fact, the QSPI driver module doesnāt load at all (Version mismatch?):
[ 11.769312] nvpps: disagrees about version of symbol module_layout
[ 11.775188] tegra_mce: disagrees about version of symbol module_layout
[ 11.777282] spi_tegra210_quad: disagrees about version of symbol module_layout
And trying to load it:
-bash-5.1# modprobe spi-tegra210-quad
modprobe: ERROR: could not insert 'spi_tegra210_quad': Exec format error
Something wrong about those modules. As a result, QSPI canāt be used to flash the internal memory. Now, I donāt know if its because they didnāt get cross compiled for arm, or, they werenāt built against the right kernel version?
My NVMe gets flashed however.
Edit 1:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/SD/Kernel/KernelCustomization.html
I am now following the Out of tree modules section. It does contain that qspi module that I had issues with, causing the QSPI flash to fail. I am now waiting for this build to complete.
Hereās the command I do just before putting the orin in recovery mode:
# From Linux_for_Tegra/source
export KERNEL_HEADERS=$PWD/kernel/kernel-jammy-src
make modules
# Your script already sets INSTALL_MOD_PATH, the next line depends on it
make modules_install
cd ..
./tools/l4t_update_initrd.sh
Edit 2:
Ok, the flash completes, and the Orin boots fine!!! Iāve been trying to flash it with SDKManager, but it wouldnāt go beyond that:
* Step 3: Start the flashing process *
* *
***************************************
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
Waiting for target to boot-up...
(Until timeout)
So I just assumed that SDKManager is not compatible with flashing an Orin in a Turing PI 2, using NVMe external storage.
Your script really help me out upgrade to LP 36, so I really hope this post will help you out as well!
FYI, hereās the result about those module (I missed them while menuconfig-ing the kernel):
francois@orin-nx-1:~$ for config in "${REQUIRED_CONFIGS[@]}"; do zcat /proc/config.gz | grep "${config}[ =]"; done
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_NET_CLS_BPF=m
CONFIG_BPF_JIT=y
CONFIG_NET_CLS_ACT=y
CONFIG_NET_SCH_INGRESS=m
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CGROUPS=y
CONFIG_CGROUP_BPF=y
CONFIG_PERF_EVENTS=y
CONFIG_SCHEDSTATS=y
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
# CONFIG_NETFILTER_XT_MATCH_MARK is not set
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_NET_CLS_CGROUP=y
# CONFIG_CGROUP_NET_PRIO is not set
CONFIG_IP_SET=y
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=m
CONFIG_CRYPTO_SEQIV=y
CONFIG_XFRM_USER=y
CONFIG_INET_ESP=y
Edit 3:
While SDKManager ALWAYS gets stuck waiting for target to boot up (I tried 5 times in a row), the manual flashing procedure stuck there sometimes (Like 40% of the time or so). When that happens, I can either repeat the last command, or, just do this to skip to that same part again quickly:
./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" --showlogs --network usb0 --erase-all --flash-only --keep jetson-orin-nano-devkit internal
So far, when I got the āWaiting for target to boot upā issue, re-trying always worked.
Finally, after the Orin reboots with the flashed kernel, donāt run:
apt update
apt -y upgrade
until you have put the kernel packages on hold:
apt-mark hold nvidia-l4t-kernel*
Otherwise, an updated version of the original kernel will overwrite all the changes required for cilium.