Hi there I am trying to follow the documentation to enable FDE on Jetson Orin Nano hosted on a ConnectTech Hadron GMSL. In particular I have been trying with this script
export LDK_DIR=/home/user/nvidia/nvidia_sdk/JetPack_6.2.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
cd $LDK_DIR
sudo $LDK_DIR/tools/l4t_create_default_user.sh
-u nvidia
-p nvidia
-n tegra-ubuntu
–accept-license
source cti/orin-nano/hadron-gmsl/base.conf
Generate the keys
cd optee/samples/hwkey-agent/host/tool/gen_ekb/
./example.sh
Copy the keys into Linux_for_tegra
cd -
cp ./optee/samples/hwkey-agent/host/tool/gen_ekb/sym2_t234.key ./sym2_t234.key
rm -f ./bootloader/eks_t234.img
cp ./optee/samples/hwkey-agent/host/tool/gen_ekb/eks_t234.img ./bootloader/eks_t234.img
Generate a new sign/encrypt file (eks_t234_sigheader.img.encrypt)
sudo ./flash.sh --no-flash -k A_eks -i “sym2_t234.key” cti/orin-nano/hadron-gmsl/base nvme0n1p1
Generate images for QSPI
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --showlogs -p “-c bootloader/generic/cfg/flash_t234_qspi.xml” --no-flash --network usb0 cti/orin-nano/hadron-gmsl/base internal
Generate images for external storage device
sudo cp ./bootloader/eks_t234_sigheader.img.encrypt ./tools/kernel_flash/images/internal/eks_t234_sigheader.img.encrypt
sudo ROOTFS_ENC=1 ./tools/kernel_flash/l4t_initrd_flash.sh
–showlogs
–no-flash
–external-device nvme0n1p1
-i ./sym2_t234.key
-c ./tools/kernel_flash/flash_l4t_t234_nvme_rootfs_enc.xml
–external-only
–append
–network usb0
cti/orin-nano/hadron-gmsl/base
external
Flash the encrypted EKS
sudo ./tools/kernel_flash/l4t_initrd_flash.sh -k A_eks --flash-only --showlogs
Flash all images into the both storage devices
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --network usb0 --showlogs --flash-only
Flashing process is ok but when booting the board i end up in a kernel panik because the system couldnt unlock the encrypted disk.
[ 18.071090] ERROR: fail to unlock the encrypted dev /dev/nvme0n1p2.
[ 18.073379] Kernel panic - not syncing
To debug further I have tried to flash a non encrypted disk image flashing the QSPI with the EKB and then trying to access.
To test oem_k2 values without reflashing the full rootfs, we wrote a script (eks_test.sh) that: 1. Regenerates the EKS with gen_ekb.py (no USB). 2. Signs the EKS image with flash.sh --no-flash -k A_eks. 3. Flashes only A_eks in QSPI with l4t_initrd_flash.sh -k A_eks --flash-only.
Step 3 consistently fails with:
[ 0.0274 ] BR_CID: 0x80012344705E00851400000009FE8240
[ 0.0411 ] Sending bct_br
[ 0.0537 ] ERROR: might be timeout in USB write.
Error: Return value 3
Root cause:
flash.sh, even with --no-flash, calls get_fuse_level() at startup because FUSELEVEL is not preset in the CTI BSP config (cti-orin-nx.conf.common). This function internally ru ns:
tegrarcm_v2 --new_session --chip 0x23 - -uid
On T234, --new_session initiates a secure RCM handshake. The process reads the BR_CID and exits, leaving the RCM session open and in an inconsistent state. When l4t_initrd_flash.sh --flash-only subsequently tries to open a new RCM session, the board is in a corrupted state and the mb1 transfer times out.
Attempted workaround — not effective:
We attempted to pre-set FUSELEVEL and FAB to prevent flash.sh --no-flash from opening an RCM s ession:
sudo FUSELEVEL=fuselevel_production FAB=A00 \
./flash.sh --no-flash -k A_eks -i “sym2_t234.key” \
cti/orin-nano/hadron-gmsl/base n vme0n1p1
This was expected to bypass get_fuse_level() and get_board_version(), leaving only a local signing step. However, the USB write timeout on the subsequent l4t_initrd_flash.sh -k A_eks --flash-only persisted. The EKS-only re-flash via --flash-only remains blocked.
Could you help to troubleshoot these two issue issues?