.. _HR.JetsonEepromLayout: .. include:: /content/swdocs.rsts .. spelling:: !!!!!!!!!!!!!!!!!!!! Jetson EEPROM Layout !!!!!!!!!!!!!!!!!!!! This topic describes the layout of EEPROM for |NVIDIA(r)| |Jetson(tm)| devices supported by this release of |NVIDIA(r)| |Jetson(tm)| 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\ |nbsp|\ 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. .. raw:: html :file: JetsonEepromLayout/EepromLayout.htm 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. .. _ValueOfTheCrc8Byte: 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)