a/b slots in TX2 Bootloader Update and Redundancy.

I want to realize more about a/b slots in TX2 Bootloader Update and Redundancy.

A/b slots will be functioning in what circumstances. Can I consider it as a solution when I fail to run bootloader or kernel?

Please check with out L4T document → Boot redundancy for some introduction.

Sorry, I cannot find what I want

You mean this?
file:///Users/jack_lin/Downloads/NVIDIA_Tegra_Linux_Driver_Package%202/nvl4t_docs/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fbootloader_update_tx2.html

thanks very much.

I cannot see a file in your path. That path is on your local machine, but I guess the file is correct.

I follow the instructions in the document, generating BUP, and running nv_update_engine -i.
But it failed, could you give me some guidance?

nvidia@tegra-ubuntu:~$ sudo nv_update_engine -i
Nvidia A/B-Redundancy Update tool Version 1.1
current slot 0
Start updating slot 1
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mmcblk0boot0
HEADER: MAGIC NVIDIA__BLOB__V2
HEX_VALUE 131072
BLOB_SIZE 4964656
HEADER_SIZE 48
NUMBER_OF_ELEMENTS 16
HEADER_TYPE 0
UNCOMP_SIZE 4964656
MB1_RATCHET_LV 0
MTS_RATCHET_LV 0
ROLLBACK_FUSE_LV 0
Device TN Spec: 3310-B02-fuselevel_production
Device is fused board.
ENTRY_TABLE:
PART  POS  LEN  VER TNSPEC TYPE UPDATABLE
bpmp-fw  1968  529440  2    1  1
sce-fw  531408  76992  2    1  1
cpu-bootloader  608400  283136  2    1  1
mb2  891536  101136  2    0  1
spe-fw  992672  81936  2    0  1
secure-os  1074608  62976  2    1  1
kernel  1137584  491920  2    1  1
mb1  1629504  94736  2    2  1
mts-bootpack  1724240  2076832  2    1  1
mts-preboot  3801072  63024  2    0  1
sc7  3864096  21552  2    1  1
BCT  3885648  3584  2  3310-B00-fuselevel_production  2  0
MB1_BCT  3889232  50064  2  3310-B00-fuselevel_production  0  0
bpmp-fw-dtb  3939296  466160  2  3310-B00-fuselevel_production  1  0
bootloader-dtb  4405456  279600  2  3310-B00-fuselevel_production  1  0
kernel-dtb  4685056  279600  2  3310-B00-fuselevel_production  1  0
Writing 529440 bytes to /dev/disk/by-partlabel/bpmp-fw_b for bpmp-fw
Writing 76992 bytes to /dev/disk/by-partlabel/sce-fw_b for sce-fw
Writing 283136 bytes to /dev/disk/by-partlabel/cpu-bootloader_b for cpu-bootloader
mb2 write: slot = 1 offset = 1212416 bytes = 101136
spe-fw write: slot = 1 offset = 819200 bytes = 81936
Writing 62976 bytes to /dev/disk/by-partlabel/secure-os_b for secure-os
Writing 491920 bytes to /dev/disk/by-partlabel/kernel_b for kernel
Writing 2076832 bytes to /dev/disk/by-partlabel/mts-bootpack_b for mts-bootpack
mts-preboot write: slot = 1 offset = 1736704 bytes = 63024
Writing 21552 bytes to /dev/disk/by-partlabel/sc7_b for sc7
GetEntryTable failed 
Fail to write Dependence partitions 
Writing to partitions failed.
OTA Blob update failed. Status: 3
Slot 1 update failed
nvidia@tegra-ubuntu:~$ sudo nvbootctrl dump-slots-info
[sudo] password for nvidia: 
magic:0x43424e00,             version: 3             features: 3             num_slots: 2
slot: 0,             priority: 15,             suffix: _a,             retry_count: 7,             boot_successful: 1
slot: 1,             priority: 0,             suffix: _b,             retry_count: 0,             boot_successful: 0

Steps:

  1. Generate BUP package on JetPack3.2 folder:
    $ sudo ./build_l4t_bup.sh jetson-tx2 mmcblk0p1
  2. Run nvbootctrl utility:
    $ sudo nvbootctrl dump-slots-info
  3. Copy bl_update_payload to /opt/ota_package
  4. Enable A/B redundancy
    $ sudo nv_update_engine --enable-ab
  5. Update BUP & reboot
    $ sudo nv_update_engine --install
  6. After reboot, run nvbootctrl utility again to check:
    $ sudo nvbootctrl dump-slots-info

Hi WayneWWW,

I had exactly same problem . I’m using TX2 R28.3.
My purpose using BUP is that I want to update device tree without flashing tx2.
And I found that BUP can update dtb partition.

When I followed the step you provide, it failed at Step 5.
Here’s error log:

Nvidia A/B-Redundancy Update tool Version 1.1
current slot 0
Start updating slot 1
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mmcblk0boot0
HEADER: MAGIC NVIDIA__BLOB__V2
HEX_VALUE 131072
BLOB_SIZE 4626560
HEADER_SIZE 48
NUMBER_OF_ELEMENTS 16
HEADER_TYPE 0
UNCOMP_SIZE 4626560
MB1_RATCHET_LV 0
MTS_RATCHET_LV 0
ROLLBACK_FUSE_LV 0
Device TN Spec: 3310-B02-1-0-jetson-tx2-mmcblk0p1
Device is fused board.
ENTRY_TABLE:
PART POS LEN VER TNSPEC TYPE UPDATABLE
bpmp-fw 1968 533056 2 1 1
sce-fw 535024 76992 2 1 1
cpu-bootloader 612016 294832 2 1 1
mb2 906848 104256 2 0 1
spe-fw 1011104 81936 2 0 1
secure-os 1093040 63088 2 1 1
kernel 1156128 428432 2 1 1
mb1 1584560 99504 2 2 1
mts-bootpack 1684064 2082144 2 1 1
mts-preboot 3766208 63104 2 0 1
sc7 3829312 22576 2 1 1
BCT 3851888 3584 2 3310-D00-1-0-jetson-tx2-mmcblk0p1 2 0
MB1_BCT 3855472 50080 2 3310-D00-1-0-jetson-tx2-mmcblk0p1 0 0
bpmp-fw-dtb 3905552 466160 2 3310-D00-1-0-jetson-tx2-mmcblk0p1 1 0
bootloader-dtb 4371712 127424 2 3310-D00-1-0-jetson-tx2-mmcblk0p1 1 0
kernel-dtb 4499136 127424 2 3310-D00-1-0-jetson-tx2-mmcblk0p1 1 0
Writing 533056 bytes to /dev/disk/by-partlabel/bpmp-fw_b for bpmp-fw
Writing 76992 bytes to /dev/disk/by-partlabel/sce-fw_b for sce-fw
Writing 294832 bytes to /dev/disk/by-partlabel/cpu-bootloader_b for cpu-bootloader
mb2 write: slot = 1 offset = 1253888 bytes = 104256
spe-fw write: slot = 1 offset = 860672 bytes = 81936
Writing 63088 bytes to /dev/disk/by-partlabel/secure-os_b for secure-os
Writing 428432 bytes to /dev/disk/by-partlabel/kernel_b for kernel
Writing 2082144 bytes to /dev/disk/by-partlabel/mts-bootpack_b for mts-bootpack
mts-preboot write: slot = 1 offset = 1778176 bytes = 63104
Writing 22576 bytes to /dev/disk/by-partlabel/sc7_b for sc7
GetEntryTable failed
Fail to write Dependence partitions
Writing to partitions failed.
OTA Blob update failed. Status: 3
Slot 1 update failed

I wonder if there is something to do with FAB ID(B02 & D00)?