How to customize Jetson nano image

Hi
I am planning to customize the Jetson nano image based on the folder of Linux_for_Tegra in the folder of nvdia_sdk/JetPack_4.6.2_Linux_JETSON_NANO_TARGETS/

What I want to customize:

  1. Set the first boot configuration in image instead of configuring them during the first boot process as our device DO NOT have a keyboard, mouse, and network connection. It has no way for end user to configure the device. Therefore, following items in first boot will be removed:
    a) accept the terms of these licenses
    b) Select language
    c) Select country
    d) Connect to network
    e) Select time zone
    f) enter user name and password, set to automatically log in.
    g) Set partition size
    h) Set NV power mode

  2. Remove those unnecessary software as our application program, which needs about 9GB memory space to store the tempera videos files, will run at eMMC where the image located. Therefore, the image size is about 5GB or less. I think following software will be removed:
    a) libreOffice
    b) all the games.
    c) all the sample code
    d) our application is using gstreamer, hardware encoder and OpenCV for video capture and image processing. GPU does not be used at this moment. Any other software may be removed? Please give your suggestion.

  3. Remove GUI related program and modules. Our application program just needs a headless image.

  4. After flashed the image into eMMC on Jetson nano production module. It shall be able to automatically log in after boot up and run our application program without any user operation.

Would you please give your help.
Thanks

CX

hello changwen.xie,

here’re some approaches for your reference,

  1. you may check Skipping oem-config session, by running l4t_create_default_user.sh script file before you flash the target, this will create default user accounts and accept the EULA to skip 1st time boot process configurations.

  2. there’s configuration file to define NV power modes, you may check nvpmodel_t210.conf, please modify this file if you would like to change the configurations.

  3. there’s xml file to define partition size, for example, $OUT/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_spi_sd_p3448.xml.

  4. you may also check this session to Improving System Performance

  5. there’re services for running initial script after system boot-up, you may check /etc/systemd/system/, please revise the service files, or adding your own scripts for your use-case.

Thank you for your kind support.
Before doing your suggestion, I flashed the Jetson nano dev kit with SDK manager by un-checking Jetson SDK components to reduce the image size. But it resulted some required components missing such as: OpenCV.

Is the SDK manager able to select the individual SDK component such as OpenCV on target only?

When I test the flashed image on dev kit by using gstreamer to stream the video from camera, it produced errors. See the log file below:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, format=(string)UYVY, width=(int)2592, height=(int)1944, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)3/1, colorimetry=(string)bt709, interlace-mode=(string)progressive
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-linked (-1)
Execution ended after 0:00:02.678150655
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
./stream_H264-full-10m.sh: line 6: video/x-raw, format=(string)UYVY, width=(int)2592, height=(int)1944,framerate=24/1: No such file or directory
./stream_H264-full-10m.sh: line 7: nvvidconv: command not found
./stream_H264-full-10m.sh: line 8: video/x-raw(memory:NVMM),format=(string)I420: No such file or directory
./stream_H264-full-10m.sh: line 9: nvv4l2h264enc: command not found
./stream_H264-full-10m.sh: line 10: h264parse: command not found
./stream_H264-full-10m.sh: line 11: rtph264pay: command not found
./stream_H264-full-10m.sh: line 12: udpsink: command not found

How can install the missing components for above gstreamer issue?
How can I install missed OpenCV?

Thanks

CX

hello changwen.xie,

may I know which JetPack release you’re working with?
there’re DEB packages you’re able to fetch via APT server, please list packages for confirmation, then you’re able to have post installation.
for example, $ sudo apt install nvidia-l4t-jetson-multimedia-api

I am using JetPack 4.6.2
After installed nvidia-l4t-jetson-multimedia-api and reboot, the issue has NOT been sorted.
This is the log

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, format=(string)UYVY, width=(int)2592, height=(int)1944, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)3/1, colorimetry=(string)bt709, interlace-mode=(string)progressive
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-linked (-1)
Execution ended after 0:00:02.306895598
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
./stream_H264-full-10m.sh: line 6: video/x-raw, format=(string)UYVY, width=(int)2592, height=(int)1944,framerate=24/1: No such file or directory
./stream_H264-full-10m.sh: line 7: nvvidconv: command not found
./stream_H264-full-10m.sh: line 8: video/x-raw(memory:NVMM),format=(string)I420: No such file or directory
./stream_H264-full-10m.sh: line 9: nvv4l2h264enc: command not found
./stream_H264-full-10m.sh: line 10: h264parse: command not found
./stream_H264-full-10m.sh: line 11: rtph264pay: command not found
./stream_H264-full-10m.sh: line 12: udpsink: command not found

After using the command below processed the gstreamer script file

sed -i -e 's/\r$//' stream_H264-full-10m.sh

The log message is as below:

Setting pipeline to PAUSED ...
Opening in BLOCKING MODE 
gst_v4l2_video_enc_open: open trace file successfully
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.000182604
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Therefore, the issue is

ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.

I found the issue of

ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.

based on the output

ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'UYVY'
	Name        : UYVY 4:2:2
		Size: Discrete 640x480
			Interval: Discrete 0.017s (60.000 fps)
			Interval: Discrete 0.033s (30.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.062s (16.000 fps)
			Interval: Discrete 0.125s (8.000 fps)
		Size: Discrete 1280x960
			Interval: Discrete 0.083s (12.000 fps)
			Interval: Discrete 0.167s (6.000 fps)
		Size: Discrete 1920x1080
			Interval: Discrete 0.125s (8.000 fps)
			Interval: Discrete 0.250s (4.000 fps)
		Size: Discrete 2560x1440
			Interval: Discrete 0.250s (4.000 fps)
			Interval: Discrete 0.500s (2.000 fps)
		Size: Discrete 2592x1944
			Interval: Discrete 0.333s (3.000 fps)
			Interval: Discrete 0.667s (1.500 fps)

from the command:

v4l2-ctl -d0 --list-formats-ext

My gstreamer script is set to 24 fps at size 2592 x 1944. This is supported by the camera. I tested on on another dev kit with different image which has no internal data stream error. The command outputs for size 2592x1944 is 24 fps.
My test is using the same camera.
What is the cause to make the camera frame rate changed from 24 fps to 3 fps? How can I sort it out?
Thanks

CX

hello changwen.xie,

what exactly is your script file, stream_H264-full-10m.sh process?
are you able to simply launch the stream for testing,
i.e. $ gst-launch-1.0 v4l2src device="/dev/video0" ! "video/x-raw, width=640, height=480, format=(string)UYVY" ! xvimagesink -e

this might due to the stream configuration, please review your device tree settings, you may also probe the MIPI signaling to ensure data is output to CSI brick correctly.

Below is my gstreamer script. It works fine on other Jetson nano module with Nvidia Jetson nano SD card image. My camera is USB camera.

gst-launch-1.0 -v v4l2src device=/dev/video0 \
! "video/x-raw, format=(string)UYVY, width=(int)2592, height=(int)1944,framerate=24/1" \
! nvvidconv \
! "video/x-raw(memory:NVMM),format=(string)I420" \
! nvv4l2h264enc preset-level=1 MeasureEncoderLatency=1 maxperf-enable=true insert-vui=true insert-sps-pps=1 bitrate=10000000 control-rate=1 vbv-size=734000 \
! h264parse \
! rtph264pay \
! udpsink clients=192.168.18.18:38298 sync=false

I have found why the frame rate dropped from 24 fps to 3 fps at full frame size (2592x1944). It the USB cable issue. It is NOT all the USB type C to USB type A cable able to work at USB 3.0 speed.

okay, so this issue resolved as hardware issue, i.e. USB cable

Yes. The internal data stream error is the USB cable issue in my case. I can stream the video at 24 fps full frame size.

Based on above info, I created an image and boot up successfully without setting the first boot configuration. But the l4t_create_default_user.sh has no way to set default country, language, time zone. How can I setup them before flashing the image?

The step 1 created image has following issues after boots up:

  1. can’t use sudo command in terminal
    my command:
sudo apt update

Output:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
  1. Can’t change the Language Support. When I open the Language Support window, see the screen below:

After clicked Update, this is the error message:

image

I can’t do anything on it.

How can I sort them out?
Thanks

CX

“Probably” there was in invalid filesystem type used when creating the original image. On your host PC, cd to the “Linux_for_Tegra/rootfs/” directory. What do you see from “df -H -T .” (the “.” is important)? I am guessing it is not ext4, which implies it probably has no capability of understanding Linux filesystem permissions; this in turn means the SUID bit cannot be preserved when creating the final image. Can I also ask if this is an eMMC Nano or an SD card dev kit?

This is the output

$ df -H -T .
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb5      ext4  491G  380G   87G  82% /

I have both dev kits.
I flashed the image into the SD card by using the command below:

sudo ./flash.sh -R rootfs/ jetson-nano-qspi-sd mmcblk0p1

When flash the image into the eMMC module, I use the command below:

sudo ./flash.sh -R rootfs/ jetson-nano-emmc mmcblk0p1

ext4 is correct, so I’m not positive how you ended up losing SUID bits. However, you are using “-R”, and this implies reusing an existing system.img instead of creating a new one. This image might not contain ext4.

On any Jetson which is complaining about sudo, what do you see from:

ls -l `which sudo`
df -H -T

On your host PC, do you still have “Linux_for_Tegra/bootloader/system.img.raw”? It would be possible to mount this loopback and see if this was the source of the error, but first we should check the above questions. I am surprised that suid bit failed when it is ext4, but perhaps the host is ext4 while some other step is not.

The above applies to any system which fails sudo and complains about not being SUID.

This is the output

-rwxr-xr-x 1 root root 136616 Sep  7 11:13 /usr/bin/sudo

for

ls -l `which sudo`

This is the output

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1 ext4       15G  5.7G  8.4G  41% /
none           devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     2.1G   41k  2.1G   1% /dev/shm
tmpfs          tmpfs     2.1G   30M  2.1G   2% /run
tmpfs          tmpfs     5.3M  4.1k  5.3M   1% /run/lock
tmpfs          tmpfs     2.1G     0  2.1G   0% /sys/fs/cgroup
tmpfs          tmpfs     415M  136k  415M   1% /run/user/1000

for

df -H -T

The “Linux_for_Tegra/bootloader/system.img.raw” is still available on my host PC. Would you please let me know how can mount it back?
Thanks

For your reference, I put the flash command output below:

nvidia@nvidia-OptiPlex-3050:~/projects/njn-rootfs/build_rootfs/Linux_for_Tegra$ sudo ./flash.sh -R rootfs/ jetson-nano-qspi-sd mmcblk0p1
[sudo] password for nvidia: 
###############################################################################
# L4T BSP Information:
# R32 , REVISION: 7.2
###############################################################################
# Target Board Information:
# Name: jetson-nano-qspi-sd, Board Family: t210ref, SoC: Tegra 210, 
# OpMode: production, Boot Authentication: , 
# Disk encryption: disabled ,
###############################################################################
./tegraflash.py --chip 0x21 --applet "/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/nvtboot_recovery.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin" 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0140 ] Generating RCM messages
[   0.0162 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/nvtboot_recovery.bin 0 0
[   0.0170 ] RCM 0 is saved as rcm_0.rcm
[   0.0237 ] RCM 1 is saved as rcm_1.rcm
[   0.0237 ] List of rcm files are saved in rcm_list.xml
[   0.0237 ] 
[   0.0238 ] Signing RCM messages
[   0.0397 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0415 ] Assuming zero filled SBK key
[   0.0867 ] 
[   0.0868 ] Copying signature to RCM mesages
[   0.0902 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.0931 ] 
[   0.0932 ] Boot Rom communication
[   0.0967 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml --skipuid
[   0.0986 ] RCM version 0X210001
[   0.1435 ] Boot Rom communication completed
[   1.1511 ] 
[   1.1512 ] dump EEPROM info
[   1.1553 ] tegrarcm --oem platformdetails eeprom /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/cvm.bin
[   1.1574 ] Applet version 00.01.0000
[   1.1597 ] Saved platform info in /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/cvm.bin
[   1.2363 ] 
[   1.2398 ] tegrarcm --reboot recovery
[   1.2416 ] Applet version 00.01.0000
[   1.2441 ] 
Board ID(3448) version(402) 
copying bctfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/BCT/P3448_A00_lpddr4_204Mhz_P987.cfg)... done.
copying bootloader(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying initrd(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/l4t_initrd.img)... done.
Making Boot image... done.
Existing sosfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
copying tegraboot(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/nvtboot.bin)... done.
copying cpu_bootloader(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
copying bpffile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/sc7entry-firmware.bin)... done.
copying wb0boot(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/warmboot.bin)... done.
Existing tosfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/tos-mon-only.img) reused.
Existing eksfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
Copying nv_boot_control.conf to rootfs
	populating kernel to rootfs... done.
	populating initrd to rootfs... done.
	populating kernel_tegra210-p3448-0000-p3449-0000-b00.dtb to rootfs... done.
Making system.img... 
	populating rootfs from /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/rootfs ... 	populating /boot/extlinux/extlinux.conf ... done.
	Sync'ing system.img ... done.
	Converting RAW image to Sparse image... done.
system.img built successfully. 
Existing tbcfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying tbcdtbfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/kernel/dtb/tegra210-p3448-0000-p3449-0000-b00.dtb)... done.
copying cfgfile(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/cfg/flash_l4t_t210_max-spi_sd_p3448.xml) to flash.xml... done.
copying flasher(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/t210ref/cboot.bin)... done.
Existing flashapp(/home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl cboot.bin --bct  P3448_A00_lpddr4_204Mhz_P987.cfg --odmdata 0xa4000 --bldtb kernel_tegra210-p3448-0000-p3449-0000-b00.dtb --applet nvtboot_recovery.bin  --cmd "flash; reboot"  --cfg flash.xml --chip 0x21    --bins "EBT cboot.bin; DTB tegra210-p3448-0000-p3449-0000-b00.dtb" 
saving flash command in /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/nvidia/projects/njn-rootfs/build_rootfs/Linux_for_Tegra/bootloader/flash_win.bat
assign_value: crc-flash.xml.bin 1 65520 1
printf '\x1' | dd of=crc-flash.xml.bin bs=1 seek=65520 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 0.000108134 s, 9.2 kB/s
assign_value: crc-flash.xml.bin 0 65521 1
printf '\x0' | dd of=crc-flash.xml.bin bs=1 seek=65521 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 8.0155e-05 s, 12.5 kB/s
assign_string: crc-flash.xml.bin PTHD 65528 4
echo PTHD | dd of=crc-flash.xml.bin bs=1 seek=65528 count=4 conv=notrunc
4+0 records in
4+0 records out
4 bytes copied, 8.4782e-05 s, 47.2 kB/s
*** Flashing target device started. ***
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0691 ] tegrasign --getmode mode.txt --key None
[   0.0714 ] Assuming zero filled SBK key
[   0.0935 ] 
[   0.0938 ] Generating RCM messages
[   0.1070 ] tegrarcm --listrcm rcm_list.xml --chip 0x21 0 --download rcm nvtboot_recovery.bin 0 0
[   0.1092 ] RCM 0 is saved as rcm_0.rcm
[   0.1264 ] RCM 1 is saved as rcm_1.rcm
[   0.1266 ] List of rcm files are saved in rcm_list.xml
[   0.1266 ] 
[   0.1267 ] Signing RCM messages
[   0.1302 ] tegrasign --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.1323 ] Assuming zero filled SBK key
[   0.1452 ] 
[   0.1453 ] Copying signature to RCM mesages
[   0.1487 ] tegrarcm --chip 0x21 0 --updatesig rcm_list_signed.xml
[   0.1518 ] 
[   0.1519 ] Parsing partition layout
[   0.1552 ] tegraparser --pt flash.xml.tmp
[   0.1577 ] 
[   0.1581 ] Using default ramcode: 0
[   0.1581 ] Disable BPMP dtb trim, using default dtb
[   0.1581 ] 
[   0.1581 ] Creating list of images to be signed
[   0.1613 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --list images_list.xml
[   0.2148 ] 
[   0.2149 ] Generating signatures
[   0.2185 ] tegrasign --key None --list images_list.xml --pubkeyhash pub_key.key
[   0.2202 ] Assuming zero filled SBK key
[   0.2936 ] 
[   0.2937 ] Generating br-bct
[   0.3162 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.cfg --chip 0x21 0
[   0.3785 ] 
[   0.3786 ] Updating boot device parameters
[   0.3823 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatedevparam flash.xml.bin
[   0.3840 ] Warning: No sdram params
[   0.3844 ] 
[   0.3845 ] Updating bl info
[   0.3878 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updateblinfo flash.xml.bin --updatesig images_list_signed.xml
[   0.3910 ] 
[   0.3911 ] Updating secondary storage information into bct
[   0.3946 ] tegraparser --pt flash.xml.bin --chip 0x21 0 --updatecustinfo P3448_A00_lpddr4_204Mhz_P987.bct
[   0.3968 ] 
[   0.3969 ] Updating Odmdata
[   0.4001 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatefields Odmdata =0xa4000
[   0.4019 ] Warning: No sdram params
[   0.4022 ] 
[   0.4022 ] Get Signed section of bct
[   0.4053 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --listbct bct_list.xml
[   0.4076 ] 
[   0.4077 ] Signing BCT
[   0.4144 ] tegrasign --key None --list bct_list.xml --pubkeyhash pub_key.key
[   0.4162 ] Assuming zero filled SBK key
[   0.4174 ] 
[   0.4174 ] Updating BCT with signature
[   0.4207 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatesig bct_list_signed.xml
[   0.4228 ] 
[   0.4229 ] Copying signatures
[   0.4265 ] tegrahost --chip 0x21 0 --partitionlayout flash.xml.bin --updatesig images_list_signed.xml
[   0.4423 ] 
[   0.4424 ] Updating BFS information on BCT
[   0.4457 ] tegrabct --bct P3448_A00_lpddr4_204Mhz_P987.bct --chip 0x21 0 --updatebfsinfo flash.xml.bin
[   0.4478 ] 
[   0.4479 ] Boot Rom communication
[   0.4509 ] tegrarcm --chip 0x21 0 --rcm rcm_list_signed.xml
[   0.4525 ] BR_CID: 0x32101001643174410400000004fd8540
[   0.4538 ] RCM version 0X210001
[   0.4541 ] Boot Rom communication completed
[   1.4613 ] 
[   1.4614 ] Sending BCTs
[   1.4657 ] tegrarcm --download bct P3448_A00_lpddr4_204Mhz_P987.bct
[   1.4678 ] Applet version 00.01.0000
[   1.4701 ] Sending bct
[   1.4703 ] [................................................] 100%
[   1.6947 ] 
[   1.6988 ] tegrahost --chip 0x21 --align cboot.bin
[   1.7010 ] 
[   1.7045 ] tegrahost --magicid EBT --appendsigheader cboot.bin cboot.bin_blheader
[   1.7100 ] 
[   1.7145 ] tegrasign --key None --list cboot.bin_list.xml
[   1.7164 ] Assuming zero filled SBK key
[   1.7304 ] 
[   1.7326 ] tegrahost --updatesigheader cboot.bin_blheader.encrypt cboot.bin_blheader.hash zerosbk
[   1.7339 ] 
[   1.7363 ] tegrahost --chip 0x21 --align tegra210-p3448-0000-p3449-0000-b00.dtb
[   1.7370 ] 
[   1.7389 ] tegrahost --magicid DTB --appendsigheader tegra210-p3448-0000-p3449-0000-b00.dtb tegra210-p3448-0000-p3449-0000-b00.dtb_blheader
[   1.7401 ] 
[   1.7422 ] tegrasign --key None --list tegra210-p3448-0000-p3449-0000-b00.dtb_list.xml
[   1.7428 ] Assuming zero filled SBK key
[   1.7481 ] 
[   1.7501 ] tegrahost --updatesigheader tegra210-p3448-0000-p3449-0000-b00.dtb_blheader.encrypt tegra210-p3448-0000-p3449-0000-b00.dtb_blheader.hash zerosbk
[   1.7511 ] 
[   1.7513 ] Sending bootloader and pre-requisite binaries
[   1.7533 ] tegrarcm --download ebt cboot.bin.encrypt 0 0 --download rp1 tegra210-p3448-0000-p3449-0000-b00.dtb.encrypt 0
[   1.7541 ] Applet version 00.01.0000
[   1.7558 ] Sending ebt
[   1.7561 ] [................................................] 100%
[   1.8611 ] Sending rp1
[   1.8655 ] [................................................] 100%
[   1.9211 ] 
[   1.9244 ] tegrarcm --boot recovery
[   1.9261 ] Applet version 00.01.0000
[   1.9294 ] 
[   1.9295 ] Retrieving storage infomation
[   1.9328 ] tegrarcm --oem platformdetails storage storage_info.bin
[   1.9346 ] Applet is not running on device. Continue with Bootloader
[   2.6825 ] 
[   2.7138 ] tegradevflash --oem platformdetails storage storage_info.bin
[   2.7160 ] Cboot version 00.01.0000
[   2.7302 ] Saved platform info in storage_info.bin
[   2.7318 ] 
[   2.7319 ] Flashing the device
[   2.7356 ] tegradevflash --pt flash.xml.bin --storageinfo storage_info.bin --create
[   2.7375 ] Cboot version 00.01.0000
[   2.7396 ] Writing partition GPT with gpt.bin
[   2.7401 ] [................................................] 100%
[   2.7462 ] Writing partition PT with crc-flash.xml.bin
[  12.6514 ] [................................................] 100%
[  12.6580 ] Writing partition NVC with nvtboot.bin.encrypt
[  16.5674 ] [................................................] 100%
[  16.5801 ] Writing partition NVC_R with nvtboot.bin.encrypt
[  26.5947 ] [................................................] 100%
[  26.6106 ] Writing partition TBC with nvtboot_cpu.bin.encrypt
[  36.6343 ] [................................................] 100%
[  36.6465 ] Writing partition RP1 with kernel_tegra210-p3448-0000-p3449-0000-b00.dtb.encrypt
[  40.8134 ] [................................................] 100%
[  40.8305 ] Writing partition EBT with cboot.bin.encrypt
[  55.2457 ] [................................................] 100%
[  55.2726 ] Writing partition WB0 with warmboot.bin.encrypt
[  84.3286 ] [................................................] 100%
[  84.3386 ] Writing partition BPF with sc7entry-firmware.bin.encrypt
[  84.6011 ] [................................................] 100%
[  84.6112 ] Writing partition TOS with tos-mon-only.img.encrypt
[  84.8741 ] [................................................] 100%
[  84.8856 ] Writing partition DTB with kernel_tegra210-p3448-0000-p3449-0000-b00.dtb.encrypt
[  88.3208 ] [................................................] 100%
[  88.3381 ] Writing partition LNX with boot.img.encrypt
[ 102.7539 ] [................................................] 100%
[ 102.7875 ] Warning: EKS partition magic header mismatch!
[ 142.5935 ] Writing partition EKS with eks.img
[ 142.5941 ] [................................................] 100%
[ 142.6038 ] Writing partition BMP with bmp.blob
[ 142.8668 ] [................................................] 100%
[ 142.9016 ] Writing partition RP4 with rp4.blob
[ 151.9490 ] [................................................] 100%
[ 151.9900 ] Writing partition VER_b with qspi_bootblob_ver.txt
[ 159.8176 ] [................................................] 100%
[ 159.8447 ] Writing partition VER with qspi_bootblob_ver.txt
[ 160.1080 ] [................................................] 100%
[ 160.1178 ] Writing partition APP with system.img
[ 160.3810 ] [................................................] 100%
[ 768.0722 ] 
[ 768.0931 ] tegradevflash --write BCT P3448_A00_lpddr4_204Mhz_P987.bct
[ 768.0952 ] Cboot version 00.01.0000
[ 768.0975 ] Writing partition BCT with P3448_A00_lpddr4_204Mhz_P987.bct
[ 768.0984 ] [................................................] 100%
[ 774.7600 ] 
[ 774.7601 ] Flashing completed

[ 774.7602 ] Coldbooting the device
[ 774.7637 ] tegradevflash --reboot coldboot
[ 774.7656 ] Cboot version 00.01.0000
[ 774.7681 ] 
*** The target t210ref has been flashed successfully. ***
Reset the board to boot from internal eMMC.

I have noticed that there is a warning message:

Warning: EKS partition magic header mismatch!

I don’t know if help.