Command to reboot to recovery mode

Hi all,
I would like to know is there any command could let Xavier NX reboot and load recovery image?
So that Xaveir NX can boot in recovery mode.

$ sudo reboot forced-recovery

Hi JerryChang,
I don’t mean let Xavier NX enter RCM mode. I mean that let Xavier NX load recovery.img and boot in recovery mode. So that it will find the /ota_work and start ota process.

hello FrankPCP,

please access developer guide, Over-the-Air Update.
please install JetPack release to your local host, there’re script files for OTA tools,
for example, ~/nvidia/nvidia_sdk/JetPack_<version>_Linux_<platform>/Linux_for_Tegra/tools/ota_tools/version_upgrade/

you may see-also the workflow for the steps performed on the host/target to trigger the OTA process.
thanks

Hi JerryChang,
I read the tools/ota_tools/version_upgrade/nv_ota_common.func and see the function write_kernel_bootctrl(). It write kernel_bootctrl.bin into kernel-bootctrl partition for rebooting the Xavier NX to recovery mode. The question is I cannot find the kernel-bootctrl partition on Xavier NX with L4T r35.1.0.
What partition should I write the kernel_bootctrl.bin to on L4T r35.1.0?

pcp@pcp-desktop:/dev/disk$ ls
by-id  by-partlabel  by-partuuid  by-path  by-uuid
pcp@pcp-desktop:/dev/disk$ cd by-part
by-partlabel/ by-partuuid/
pcp@pcp-desktop:/dev/disk$ cd by-part
by-partlabel/ by-partuuid/
pcp@pcp-desktop:/dev/disk$ cd by-partlabel/
pcp@pcp-desktop:/dev/disk/by-partlabel$ ls
adsp-fw_b      eks_b     kernel-dtb    recovery-dtb               sce-fw_b
APP            esp       kernel-dtb_b  RECROOTFS                  secure-os_b
bpmp-fw_b      kernel    rce-fw_b      reserved_for_chain_A_user  UDA
bpmp-fw-dtb_b  kernel_b  recovery      reserved_for_chain_B_user
pcp@pcp-desktop:/dev/disk/by-partlabel$ sudo gdisk /dev/mmcblk0
[sudo] password for pcp:
GPT fdisk (gdisk) version 1.0.5

The protective MBR's 0xEE partition is oversized! Auto-repairing.

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/mmcblk0: 30777344 sectors, 14.7 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 140DA1AB-7DD5-4F92-A4A7-9B4FFF274B3D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 40, last usable sector is 30777311
Partitions will be aligned on 8-sector boundaries
Total free space is 1 sectors (512 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40        29360167   14.0 GiB    0700  APP
   2        29360168        29491239   64.0 MiB    0700  kernel
   3        29491240        29492135   448.0 KiB   0700  kernel-dtb
   4        29492136        29558783   32.5 MiB    0700  reserved_for_chain_...
   5        29558784        29563903   2.5 MiB     0700  secure-os_b
   6        29563904        29564031   64.0 KiB    0700  eks_b
   7        29564032        29566079   1024.0 KiB  0700  adsp-fw_b
   8        29566080        29568127   1024.0 KiB  0700  rce-fw_b
   9        29568128        29570175   1024.0 KiB  0700  sce-fw_b
  10        29570176        29573247   1.5 MiB     0700  bpmp-fw_b
  11        29573248        29575295   1024.0 KiB  0700  bpmp-fw-dtb_b
  12        29575296        29706367   64.0 MiB    0700  kernel_b
  13        29706368        29707263   448.0 KiB   0700  kernel-dtb_b
  14        29707264        29773823   32.5 MiB    0700  reserved_for_chain_...
  15        29773824        29937663   80.0 MiB    0700  recovery
  16        29937664        29938687   512.0 KiB   0700  recovery-dtb
  17        29938688        30143487   100.0 MiB   0700  RECROOTFS
  18        30143488        30274559   64.0 MiB    EF00  esp
  19        30274560        30777310   245.5 MiB   0700  UDA

Command (? for help):

hello FrankPCP,

may I know what’s the actual use-case?
please also see the footnote in r35.1 developer guide, Preparing the OTA Payload Package

The ability to only update Bootloader or only update the rootfs is not supported in this release.

Hi JerryChang,

The ability to only update Bootloader or only update the rootfs is not supported in this release.

I think this is for OTA from R32.7.2 to R35.1.0. I would like to implement OTA by myself and want to know how to reboot Xavier NX to recovery mode on R35.1.0. Is it possible to do that?

hello FrankPCP,

you may enable AB Redundancy, and using nvbootctrl to set the active SLOTs.
please see-also Topic 224162, which also show the commands to update the RootFS info variable.

@JerryChang

I think his issue is another one. He does not want to use a second rootFS, instead he’d like to tell the system to use a certain image for an update on the existing rootFS from the recoveryFS.

hello FrankPCP,

usually, we have A/B partitions for binary updates. I don’t know the ways for Xavier NX load recovery.img and boot in recovery mode.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.