Jetson EEPROM Layout

This topic describes the layout of EEPROM for NVIDIA® Jetson™ devices supported by this release of NVIDIA® Jetson™ Linux.

All numeric values are little-endian, i.e. the low-addressed byte contains the least significant digit and the high-addressed byte contains the most significant digit.

MAC addresses are also little-endian. For example, for the MAC address 00:04:4b:01:02:03, the low-addressed byte contains 0x03 and high-addressed byte contains 0x00.

A Jetson system has two EEPROMs, one on the module and one on the carrier board. Both EEPROMs are 256 bytes long, and they have similar formats. The following table describes the layout of both EEPROMs. The Notes column identifies the fields in which they differ.

Bytes Value Notes
0 Major version number

The EEPROM's major and minor version number. The version numbers are incremented for backward-incompatible changes. Software may parse EEPROM data only if both version numbers match between the software and the module. As of this writing, the values are:

  • 0x02, 0x00 for Orin
1 0x00 Minor version number
2–3 254 Length of module ID data starting from this field to the end of EEPROM data.
4-18 Reserved for future use or for NVIDIA internal use. Do not read or modify these bytes.
19 Number of Ethernet MAC addresses

Orin only: Number of MAC addresses used by the platform for Ethernet interfaces. The boot software creates device tree nodes for this number of Ethernet interfaces and assigns them successive MAC addresses beginning with the default Gigabit Ethernet MAC address.

For example, if the Gigabit Ethernet MAC address is specified as 00:04:4b:00:00:00 and the number of additional Ethernet MAC addresses is 3, the software creates nodes for three Ethernet interfaces with addresses 00:04:4b:00:00:00, 00:04:4b:00:00:01, and 00:04:4b:00:00:02.

For customer-overwriteable Ethernet MAC addresses, the customer-overwriteable number of Ethernet MAC addresses is used instead.

20–49

Product part number, used for asset tracking.

In a module's EEPROM this field contains the module's part number; in a carrier board's EEPROM it contains the carrier board's part number. If you develop a custom carrier board, coordinate with NVIDIA to assign an appropriate value to this field.

The field contains 22 bytes of data, right-padded with 0x00 or 0xFF. Its format is -cnnnn-pppp-vvv r.0, where:

  • 699 is a fixed string.
  • c is the board class, an NVIDIA internal field.
  • nnnn is the numeric part of the part number.

    In a module's EEPROM it is the module ID:

    • 3767 for NVIDIA® Jetson Orin™ NX and Nano module
    • 3701 for NVIDIA® Jetson AGX Orin™ module

    In a reference carrier board's EEPROM it is the board ID:

    • 3768 for Jetson Orin Nano carrier board
    • 3737 for Jetson AGX Orin carrier board
  • pppp is the module's or board's SKU.

    For a Jetson AGX Orin module:

    • 0000 for Jetson AGX Orin
    • 0004 for Jetson AGX Orin 32GB (32 GB RAM)
    • 0005 for Jetson AGX Orin 64GB (64 GB RAM)

    For a Jetson Orin NX and Nano module:

    • 0000 for Jetson Orin NX 16GB (16 GB RAM)
    • 0001 for Jetson Orin NX 8GB (8 GB RAM)
    • 0003 and 0005 for Jetson Orin Nano 8GB (8 GB RAM)
    • 0004 for Jetson Orin Nano 4GB (4 GB RAM)

    For a reference carrier board the SKU is currently 0000 for all supported boards.

  • vvv is an alphanumeric version number. It is used with the block signature to verify that the EEPROM contains the correct version of valid data. This is a numeric code, not a sequential number; that is, there is no sense in which 600 is followed by 601.
  • r is the manufacturing major revision, an upper case letter.
  • The last digit is the manufacturing minor revision, which is always 0.

An example of a module part number is 699-12888-0008-600 A.0. The module ID is 2888, the SKU is 0008, the version number is 600, and the manufacturing major revision is A. The last digit is the manufacturing minor revision, which is always 0.

The part number is subject to change without notice. However, in the event of a major change with customer impact, a PCN (Product Change Notification) will be issued.

50-55 WiFi

NVIDIA default MAC addresses. The boot software builds device tree nodes for the WiFi, Bluetooth®, and gigabit Ethernet MAC addresses only if the customer-overwriteable MAC addresses are not valid. See the description of those addresses for more information. The secondary WiFi MAC address has no customer-overwriteable equivalent, so the boot software always builds a node for it if it is valid.

56–61 Bluetooth
62–67 Secondary WiFi
68–73 Gigabit Ethernet
74–88 Product serial number, padded with 0x00. In the module EEPROM, this field contains the module's serial number. In the the carrier board EEPROM, it contains the carrier board's serial number.
89-149 Reserved for future use or for NVIDIA internal use. Do not read or modify these bytes.
Customer-overwritable section. You may modify or erase the fields in this section.
150–153 ”NVCB"

Block signature; NVCB stands for “NVIDIA Configuration Block.”

If the value is NVCB and the version number in the system-level part number, the software builds device tree nodes for the customer-overwriteable MAC addresses. Otherwise it builds nodes for the corresponding NVIDIA default MAC addresses. If a given type of interface is not being used, the corresponding MAC address must be all-00 or all-FF, and consequently the software does not populate the corresponding device tree node.

154–155 28 Length of this structure from block signature to end (currently byte 177). Value is subject to change.
156–157 "M1"

Customer-overwriteable section's type signature; specifies the format of the following customer-overwriteable MAC addresses. M1 stands for “MAC address, field format version 1.”

158–159 0x0000

Customer-overwriteable section's version.

160–165 Wi-Fi MAC address

Customer-overwriteable MAC addresses.

If the type signature and version are valid, the boot software builds device tree nodes for these MAC addresses. A MAC address that is all-00 or all-FF indicates that the corresponding type of interface is not being used, and the boot software does not populate a node for it.

On Orin modules, the boot software may build nodes for more than one Ethernet MAC address, depending on the customer-overwriteable section's number of Ethernet MAC addresses.

If the customer-overwriteable section's type signature and version are not valid, the boot software uses the corresponding NVIDIA default MAC addresses and number of default Ethernet MAC addresses, with the same results.

166–171 Bluetooth MAC address
172–177

Gigabit Ethernet MAC address

(Starting MAC address of Ethernet interfaces on the system)

178 Number of Ethernet MAC addresses

Orin only: Specifies the number of customer-overwriteable Ethernet MAC addresses used. This field corresponds to the number of default Ethernet MAC addresses used. See that field for more information.

179–199 Reserved for future use.
System-level information.
200-220

Orin only: System-level part number.

In a carrier board that is sold as a component of a Jetson developer kit, this field contains the asset tracking number from the Jetson developer kit's system sticker.

In a module EEPROM or a custom board, this field is unused.

The field's value is a string in the format ppp-cnnnn-ssss-bbb, padded with 0x00, where:

  • ppp is either 940 or 945.
  • c is the board class, an NVIDIA internal field.
  • nnnn is the numeric part of the developer kit's part number:
    • 3766 for Jetson Orin Nano Developer Kit
    • 3730 for Jetson AGX Orin Developer Kit
  • ssss is the system SKU, indicating the developer kit's country of intended use. Different developer kits may have different sets of SKUs representing different sets of countries.
  • bbb is the system build code, either TS1, TS2, or EVT.
221-235 Orin only: System serial number, padded with 0x00. For a developer kit, this number is the 13-character serial number from the system sticker. For a customer-designed system it is an optional, unique, customer-defined string in any format.
236-254 Reserved.
255 CRC-8 computed for bytes 0–254.

Configuration of Vendor-Specified MAC Addresses

To configure the vendor-specified MAC addresses, use the following procedure.

If either of the “Verify” steps does not produce the expected result, the EEPROM has been corrupted or the device is malfunctioning. Identify and correct the problem before you proceed.

  1. Read the EEPROM data from the 256-byte block at I2C bus 2, address 0x50.

  2. Verify the EEPROM’s CRC-8 checksum. Compute the checksum for bytes 0-254, using the procedure in Value of the CRC-8 Byte. The computed checksum should match the value in byte 255.

  3. Verify that bytes 150-153 and 156-157 contain the signature values shown in the table above.

  4. Update the MAC addresses in bytes 160-177 (see table). Remember that the MAC addresses are stored in little-endian order, the reverse of normal reading order.

  5. Recompute the checksum, using the updated MAC addresses. Store the new checksum in byte 255.

Value of the CRC-8 Byte

The CRC is a single byte stored in byte 255, the byte of EEPROM. It is computed using the CRC-8 algorithm in the following sample.

def AddToCRC(b, crc):
    b2 = b
    if (b < 0):
        b2 = b + 256
    for i in range(8):
        odd = ((b2^crc) & 1) == 1
        crc >>= 1
        b2 >>= 1
        if (odd):
            crc ^= 0x8C # This means crc ^= 140.
    return crc

For each byte B of EEPROM content:

crc = AddToCRC(B, crc)