AGX Xavier use flash.sh update dts failed

flash error

[   5.4829 ] Retrieving EEPROM data
[   5.4829 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/zhou/lab/nvdia_sdk/sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/cvm.bin
[   5.4838 ] MB2 Applet version 01.00.0000
[   5.8208 ] 0000000036360018: 
[   5.9344 ] 
[   5.9354 ] tegradevflash_v2 --oem platformdetails eeprom cvm /home/zhou/lab/nvdia_sdk/sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/cvm.bin
[   5.9360 ] CPU Bootloader is not running on device.
[   6.1000 ] 
Error: Return value 4
Command tegradevflash_v2 --oem platformdetails eeprom cvm /home/zhou/lab/nvdia_sdk/sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/cvm.bin
Reading board information failed.

I dont know why it always report error 4.
i have get this situation after update 2 xavier boards.
And after i flash error, my board ip changes every time.

hello zp11,

it’s back to your USB communication issue by using VM.
please use the native ubuntu-OS with x86 desktop. thanks

hello JerryChang
now i have no resource to use the native ubuntu-OS with x86 desktop to test if it is the reason about this porblem.
1 - Why in the past, i can flash ok in my VM?
2 - Is there any other ways to update my dts setting in my xavier board. For ex: like push my dtb into xavier board or other.

hello zp11,

please check the documentation,
you may use -k commands to flash a specific partition, and using --no-flash to create the binary file locally.
for example. $ sudo ./flash.sh --no-flash -r -k kernel-dtb jetson-xavier mmcblk0p1

after that, you may copy this binary file to the target and enable dd commands to overwrite the device tree partition.
you should also check the $ ls -al /dev/disk/by-partlabel/ for the kernel-dtb partition.
thanks

hello JerryChang
Have any post or guide document give me a sample to use it?
I’m afraid of making my xavier board be a brick.

hello zp11,

please also check Topic 181048 to create sign/encrypt binary file.
please also check Topic 67559 for using dd commands, although you’re actually need to write kernel-dtb partition.
thanks

Thanks jerryChang

it’s my steps as below.

1 - ./flash.sh --no-flash -r -k kernel-dtb jetson-xavier mmcblk0p1
generate file  - kernel_tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt
2 - push it into board from my /bootloader/
3 - ls -al /dev/disk/by-partlabel/                  the kernel-dtb is mmcblk0p36
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel -> ../../mmcblk0p34
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel_b -> ../../mmcblk0p35
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel-bootctrl -> ../../mmcblk0p32
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel-bootctrl_b -> ../../mmcblk0p33
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel-dtb -> ../../mmcblk0p36
lrwxrwxrwx 1 root root  16 8月  20 15:22 kernel-dtb_b -> ../../mmcblk0p37
4 - get the paritation size
cat /proc/paritations
 259        4        512 mmcblk0p36
 259        5        512 mmcblk0p37
5 - sudo dd if=kernel_tegra194-p2888-0001-p2822-0000_sigheader.dtb.encrypt of=/dev/mmcblk0p36 bs=512k

Is it ok? or have i any error?

hello zp11,

looks correct, you should reboot the system to make it works.
note, it’s CBoot functionality includes a default booting scan sequence, it’ll have higher priority to load device tree blob via file system if you had FDT entry specified in /boot/extlinux/extlinux.conf.

hello JerryChang
ok, i will confirm it.
Thank you so much for your patient answers.
Best wishes with you