Questions about Chipsku Consistency and Runtime Retrieval

I have two questions regarding chipsku.

### Background

We are developing and manufacturing products based on JetPack 6.x, using Orin NX 8GB and Orin Nano 4GB modules.

The only differences between the two products are in the firmware and Device Tree; the Rootfs is shared.

For operational purposes, we distinguish the two products by their boardsku and Device Tree.

However, we recently encountered an issue where we mistakenly set the wrong chipsku value during TEGRA_BL.Cap generation. As a result, we applied the Orin NX TEGRA_BL.Cap to an Orin Nano device, which made the device unbootable.

To prevent this issue, we would like to verify the chipsku value before performing bootloader updates, to ensure that the correct TEGRA_BL.Cap file is applied.

### Questions

1. **Regarding chipsku consistency**

- Is the chipsku parameter in `jetson_board_spec.cfg` a fixed unique value for each variant (Orin NX 16GB, Orin NX 8GB, Orin Nano 8GB, Orin Nano 4GB)?

- Or could it potentially change due to PCN (Product Change Notice)?

2. **Regarding runtime chipsku retrieval**

- Is there a way to retrieve the chipsku value from a running Orin NX or Orin Nano system?

- We want to verify the chipsku during bootloader updates to prevent applying incorrect TEGRA_BL.Cap files.

*** Please note that this reply is generated by LLM automatically ***

I’ll address your questions regarding the chipsku value for Jetson Orin NX and Orin Nano modules.

  1. Is the chipsku parameter in jetsonboardspec.cfg a fixed unique value for each variant?

The chipsku value is a unique identifier for each module variant, including Orin NX and Orin Nano modules. According to the provided documentation, the chipsku values for Orin NX and Orin Nano modules are:

  • Orin NX 16GB: 0000
  • Orin NX 8GB: 0001
  • Orin Nano 8GB: 0003 and 0005
  • Orin Nano 4GB: 0004

These values are specific to each module variant and are used to identify the correct TEGRABLCap file during bootloader updates.

However, it’s essential to note that the chipsku value can potentially change due to a Product Change Notice (PCN). A PCN is a notification sent by the manufacturer (in this case, NVIDIA) to inform customers of changes to a product’s design, manufacturing process, or other relevant details. If a PCN is issued for a specific module variant, the chipsku value might be updated to reflect the changes.

  1. Is there a way to retrieve the chipsku value from a running Orin NX or Orin Nano system?

Unfortunately, the provided documentation does not explicitly mention a method to retrieve the chipsku value from a running Orin NX or Orin Nano system. However, you can try the following approaches:

  • Check the jetsonboardspec.cfg file: If you have access to the file system of the running device, you can check the jetsonboardspec.cfg file to see if it contains the chipsku value.
  • Use the nvbootctrl command: The nvbootctrl command is used to control and configure the bootloader on NVIDIA Jetson devices. You can try running the nvbootctrl command with the --get-chipsku option to see if it returns the chipsku value.
  • Check the device tree: The device tree is a data structure that describes the hardware components of a system. You can try checking the device tree to see if it contains information about the chipsku value.

Keep in mind that these approaches might not work, and the chipsku value might not be accessible from a running system. If you need to verify the chipsku value during bootloader updates, it’s recommended to use a more robust method, such as storing the chipsku value in a secure location or using a secure boot mechanism.

To prevent applying incorrect TEGRABLCap files, you can implement a verification mechanism that checks the chipsku value before performing bootloader updates. This can be done by:

  • Storing the chipsku value in a secure location, such as a secure storage device or a trusted platform module (TPM).
  • Using a secure boot mechanism that verifies the chipsku value before loading the bootloader.
  • Implementing a verification algorithm that checks the chipsku value against a known good value before applying the TEGRABLCap file.

By implementing one of these methods, you can ensure that the correct TEGRABLCap file is applied to the device, preventing issues like the one you encountered.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

LLM-generated reply is not accurate. It confuses chipsku and boardsku in its explanation. The description of the nvbootctrl command is also incorrect; there is no --get-chipsku option.

Please provide a correct answer

Does anyone know if the chipsku is fixed, and whether it can be retrieved from a running Orin NX or Orin Nano device?

all the module info is inside of the SOM EEPROM.

sudo i2cdump -f -y 0 0x50 could get that info.

Thank you for your answer, WayneWWW.

I’m sharing the results of testing that command on my OrinNX 8GB board.

sudo i2cdump -y 0 0x50
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 02 00 fe 00 00 00 00 00 00 00 00 ff 00 00 00 00    ?.?.............
10: 00 01 00 01 36 39 39 2d 31 33 37 36 37 2d 30 30    .?.?699-13767-00
20: 30 31 2d 33 30 30 20 52 2e 31 00 00 00 00 00 00    01-300 R.1......
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: b0 48 00 00 5f 1b ea 2d b0 48 31 34 32 34 36 32    ?H.._??-?H142462
50: 33 30 35 31 37 33 31 00 00 00 00 00 00 00 00 00    3051731.........
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 4e 56 43 42 00 ff 4d 31 00 00    ......NVCB..M1..
a0: 00 00 00 00 00 00 00 00 00 00 00 00 5f 1b ea 2d    ............_??-
b0: b0 48 01 00 00 00 00 00 00 00 00 00 00 00 00 00    ?H?.............
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01    ...............?

Where should I look in this output to find the “chip sku” value?

From the flash log, I can see “Chip sku: 0xd4”, but I cannot find “0xd4” anywhere in the EEPROM output.

[   1.0955 ] tegraparser_v2 --chip 0x23 0 --read_fusetype Sku read_fuse.bin
[   1.0966 ] tegrarcm_v2 --oem readfuses __fuse_read_scatter.bin read_fuse.bin
[   1.0969 ] MB2 Applet version 01.00.0000
[   1.1216 ] Saved read fuses in file __fuse_read_scatter.bin
[   1.1272 ] Fuse read successful
[   1.1285 ] tegraparser_v2 --chip 0x23 0 --read_fusetype Uid read_fuse.bin
[   1.1295 ] tegrarcm_v2 --oem readfuses __fuse_read_scatter.bin read_fuse.bin
[   1.1298 ] MB2 Applet version 01.00.0000
[   1.1536 ] Saved read fuses in file __fuse_read_scatter.bin
[   1.1592 ] Fuse read successful
[   1.1604 ] tegraparser_v2 --chip 0x23 0 --read_fusetype OptEmcDisable read_fuse.bin
[   1.1615 ] tegrarcm_v2 --oem readfuses __fuse_read_scatter.bin read_fuse.bin
[   1.1618 ] MB2 Applet version 01.00.0000
[   1.1857 ] Saved read fuses in file __fuse_read_scatter.bin
[   1.1912 ] Fuse read successful
[   1.2241 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[   1.2245 ] MB2 Applet version 01.00.0000
[   1.2570 ] Retrieving board information
[   1.2573 ] tegrarcm_v2 --chip 0x23 0 --oem platformdetails chip chip_info.bin
[   1.2577 ] MB2 Applet version 01.00.0000
[   1.2905 ] Saved platform info in chip_info.bin
[   1.2958 ] Chip minor revision: 1
[   1.2959 ] Bootrom revision: 0x7
[   1.2960 ] Ram code: 0x2
[   1.2961 ] Chip sku: 0xd4
[   1.2961 ] Chip Sample: prod
[   1.2967 ] Retrieving EEPROM data
[   1.2967 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/worker1/L4T/bootloader/cvm.bin --chip 0x23 0
[   1.2970 ] MB2 Applet version 01.00.0000
[   1.3275 ] Saved platform info in /home/worker1/L4T/bootloader/cvm.bin
[   1.3851 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[   1.3855 ] MB2 Applet version 01.00.0000
[   1.4175 ] Dumping customer Info
[   1.4180 ] tegrarcm_v2 --chip 0x23 0 --oem dump bct tmp.bct
[   1.4183 ] MB2 Applet version 01.00.0000
[   1.4496 ] Saved bct in tmp.bct
[   1.4698 ] tegrabct_v2 --brbct tmp.bct --chip 0x23 0 --custinfo /home/worker1/L4T/bootloader/custinfo_out.bin
[   1.4702 ] Customer data s[   1.4707 ] aved in /home/worker1/L4T/bootloader/custinfo_out.bin successfully
[   1.4707 ] Rebooting to recovery mode
[   1.4711 ] tegrarcm_v2 --chip 0x23 0 --ismb2
[   1.4960 ] tegrarcm_v2 --chip 0x23 0 --ismb2applet
[   1.4963 ] MB2 Applet version 01.00.0000
[   1.5286 ] Booting to recovery mode
[   1.5290 ] tegrarcm_v2 --chip 0x23 0 --reboot recovery
[   1.5294 ] MB2 Applet version 01.00.0000

You are pasting as incomplete log. The module info would be shown in the first few lines of the flash log.

Chipsku does not really matter to any PCN and won’t get changed. Only module sku may vary.

Thanks for the reply.

I understand that the chipsku differs by module (OrinNX 16GB / 8GB and Orin Nano 8GB / 4GB) and that it is fixed in the PCN. It seems that the only PCN value to watch out for when creating the Tegra_BL.Cap is the boardsku.