Jetson Module EEPROM Layout

This topic describes the layout of EEPROM for the NVIDIA® Jetson™ modules.
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.
The following table describes the layout of the EEPROM.
Major version number
Version number, incremented for backward-incompatible changes. Software may parse EEPROM data only if both parts match between the software and the module.
Minor version number
Length of board ID data starting from next field.
Product Part Number, used for asset tracking. A character string in the format 699-cnnnn-pppp-vvv r.0, where:
699 is a fixed string.
c is the board class; 8 for a mobile device, or 1 for other.
nnnn is the numeric part of the module’s part number, known as “board ID”:
3668 for NVIDIA® Jetson Xavier™ NX series
3448 for NVIDIA® Jetson Nano™ and Jetson Nano 2GB
2888 for NVIDIA® Jetson AGX Xavier™ series
3310 for original NVIDIA® Jetson™ TX2
3489 for Jetson TX2i and Jetson TX2 4GB
3636 for Jetson TX2 NX
2180 for Jetson TX1
pppp is the SKU:
0000 for Jetson Nano (developer kit module)
0001 for original Jetson Xavier NX (production module)

0003 for Jetson Xavier NX 16GB0002 for Jetson Nano (production module)
0003 for Jetson Nano 2GB (developer kit module)
0001 for Jetson AGX Xavier (16 GB)
0004 for Jetson AGX Xavier (32 GB)
0005 for Jetson AGX Xavier 64GB
0008 for Jetson AGX Xavier Industrial
1000 for Jetson TX2
0000 for Jetson TX2i
0080 for Jetson TX2 4GB
1000 for Jetson TX1
vvv is an alphanumeric number in hexadecimal format.
r is the manufacturing major revision, a capital letter.
The part number is 22 bytes long. The field is right-padded with 0x00 or 0xFF.
An example value is 699-83448-0002-000 C.0. The board ID is 3448, SKU is 0002, version number is 000, manufacturing major revision is C, and minor revision number is 0.
Note: 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.
NVIDIA default MAC addresses. Stored least significant byte first, e.g. if the address is 00:04:4b:01:02:03, byte 50 is 03 and byte 55 is 00.
If module does not have a WiFi/Bluetooth chip, values are all 0 bits or all 1 bits.
Secondary WiFi
Gigabit Ethernet
Asset tracking number, a unique string corresponding to the number on the device’s identifying sticker. A character string padded with 0x00 or 0xFF characters.
Customer Overwritable Section
Block signature; stands for “NVIDIA Configuration Block.”
If the value is different than "NVCB", the software uses the appropriate NVIDIA default (above) for each MAC address.
Length of this struct from block signature (byte 150) to end. Value is subject to change.
Type signature; specifies the format of the following customer-specified MAC addresses. “M1” stands for “MAC address, field format version 1.” If the value is different than "M1", the software uses the appropriate NVIDIA default for each MAC address.
Customer-specified MAC addresses. On modules that do not have a WiFi/Bluetooth chip, values are all 0 bits or all 1 bits, and the software does not populate the device tree nodes.
Note: This is the last field in the struct whose length is in bytes 154-155.
Gigabit Ethernet
Reserved for future use.
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 last byte of EEPROM. It is computed using the CRC-8 algorithm in the following sample code.
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)