Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Builds TLV-formatted payloads.

  • Writes the data into an EEPROM via I2C.

  • Supports custom-defined keys.

  • Calculates and appends a CRC checksum to ensure data integrity.

...

Anchor
TLV_DEPENDENCIES_ANCH
TLV_DEPENDENCIES_ANCH
Dependencies

To ensure all required dependencies are installed, run:

Code Block
sudo apt update
sudo apt install python3 python3-smbus

this will:

  • Install Python 3 if it is not already installed.

  • Install smbus for I2C communication.

...

Anchor
TLV_USAGE_ANCH
TLV_USAGE_ANCH
Usage

...

We want to run the following command (Note that bus 3 address 0X50 is used in this example):

Code Block
python3 TLV_writeTLVwriter.py 3 0x50 TLV_CODE_SYS_NAME "MySystem" TLV_CODE_SYS_VERSION "1.0"
Panel
bgColor#FFFFFF

eeprom example for this :

Code Block
python3 TLVwriter.py 3 0x50 TLV_CODE_SYS_NAME "EmbeddedDevice" \
      TLV_CODE_SYS_SKU "ED-2024" \
      TLV_CODE_SYS_SERIAL_NUMBER "SN123456789" \
      TLV_CODE_SYS_VERSION "01.02" \
      TLV_CODE_FAMILY "Industrial" \
      TLV_CODE_MANUF_NAME "Solid-Run" \
      TLV_CODE_MANUF_DATE "2024-03-11" \
      TLV_CODE_PLATFORM_NAME "Bedrock-IPC"

00: 54 6c 76 49 6e 66 6f 00 01 65 0030 0e 45 6d 62 TlvInfo.?e.0?Emb
10: 65 64 64 65 64 44 65 76 69 63 65 3107 45 44 2d eddedDevice1?ED-
20: 32 30 32 34 32 0b 53 4e 31 32 33 34 35 36 37 38 20242?SN12345678
30: 39 33 05 30 31 2e 2E 30 32 2e 33 20 0a 49 6e 64 75 73 74 93?01.02?Indust
40: 72 69 61 6c 25 09 73 6f 6c 69 64 2d 72 75 6e 23 rial%.solid-run#
50: 0a 32 30 32 34 2d 30 33 2d 31 31 24 0b 42 65 64 .2024-03-11$.Bed
60: 72 6f 63 6b 2d 49 50 43 fe 04 6e 7e c0 fd 00 00 rock-IPC??n~??
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: ……

header

version

Total Payload Length (little endian)

Type

Length

Value

crc checksum TLV

...

TLV Key

Max Length (bytes)

BIOS path

TLV_CODE_FAMILY

20

-

TLV_CODE_MANUF_DATE

10

-

TLV_CODE_PLATFORM_NAME

20

-

TLV_CODE_MANUF_NAME

20

-

TLV_CODE_VENDOR_NAME

20

-

TLV_CODE_SYS_NAME

20-

Main → Detailed Configuration Information → Model

TLV_CODE_SYS_SKU

20

Main screen

TLV_CODE_SYS_SERIAL_NUMBER

24

Main screen

TLV_CODE_SYS_VERSION

5

-

NIO Information (SMBUS Type

...

2)

TLV Key

Max Length (bytes)

TLV_CODE_NIO_NAME

20

TLV_CODE_NIO_SERIAL_NUMBER

24

TLV_CODE_NIO_VERSION

5

Chassis Information (SMBUS Type

...

3)

TLV Key

Max Length (bytes)

TLV_CODE_CHS_SERIAL_NUMBER

24

TLV_CODE_CHS_VERSION

5

TLV Key

Max Length (bytes)

BIOS path

TLV_CODE_CONFIG_CODE

200

...

This entry will only be displayed in BIOS main menu.

Main → Detailed Configuration Information → Configuration String

...

Anchor
TLV_ERROR_HANDLING_ANCH
TLV_ERROR_HANDLING_ANCH
Error Handling

...

Error Message

Cause

Error: Unknown key

Provided TLV key is not in the supported list.

Error: Value for key 'X' is too long

Input exceeds the maximum allowed length.

Error: MAC address must have 6 parts

Incorrect MAC format.

Error: I2C write error

I2C communication issue during EEPROM write.

Error: Total TLV data length exceeds EEPROM capacity

Data is too large for EEPROM storage.

...

Code Block
sudo apt update
sudo apt install python3 python3-smbus

this will:

  • Install Python 3 if it is not already installed.

  • Install smbus for I2C communication.

The script also requires the following Python modules, which are typically built-in:

  • sys

  • struct

  • binascii

  • time

To verify that all required Python modules are available, run:

Code Block
python3 -c "import struct, binascii, sys, time; print('All built-in modules are available')"

...

.

...