Issue in read and write data within the EEPROM in Verdin Development Board

Hi,

I have try to write and read the uuid in the verdin development board and ivy carrier board. In verdin development board it causing an timeout issue while read and write and already it have some data, but in the verdin development it read, write and clean well. well?

Verdin Development Board:

root@verdin-imx8mp-15722244:~# EEP=/sys/bus/i2c/devices/3-0057/eeprom
root@verdin-imx8mp-15722244:~# ls -l $EEP
-rw------- 1 root root 256 Jan 27 10:37 /sys/bus/i2c/devices/3-0057/eeprom
root@verdin-imx8mp-15722244:~# hexdump -n 4 -C $EEP
00000000  00 40 01 cf                                       |.@..|
00000004
root@verdin-imx8mp-15722244:~# uuidgen
83070f04-5f50-4468-85c4-32f8ea53756e
root@verdin-imx8mp-15722244:~# echo "83070f04-5f50-4468-85c4-32f8ea53756e" \ | dd of=$EEP bs=1 seek=0 conv=notrunc
dd: error writing '/sys/bus/i2c/devices/3-0057/eeprom': Connection timed out
1+0 records in
0+0 records out
0 bytes copied, 0.0304608 s, 0.0 kB/s
root@verdin-imx8mp-15722244:~# echo "83070f04-5f50-4468-85c4-32f8ea53756e" | dd of=$EEP bs=1 seek=0 conv=notrunc
dd: error writing '/sys/bus/i2c/devices/3-0057/eeprom': Connection timed out
1+0 records in
0+0 records out
0 bytes copied, 0.030243 s, 0.0 kB/s
root@verdin-imx8mp-15722244:~# sync
root@verdin-imx8mp-15722244:~# hexdump -C $EEP | head
00000000  00 40 01 cf 02 40 08 00  01 00 01 00 05 00 9c 00  |.@...@..........|
00000010  01 40 21 00 75 2f ad 00  ff ff ff ff ff ff ff ff  |.@!.u/..........|
00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000100
root@verdin-imx8mp-15722244:~# head -n1 $EEP
@��@!u/�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������root@verdin-imx8mp-15722244:~# dd if=/dev/zero of=$EEP bs=1 count=64 conv=notrunc
dd: error writing '/sys/bus/i2c/devices/3-0057/eeprom': Connection timed out
1+0 records in
0+0 records out
0 bytes copied, 0.0288522 s, 0.0 kB/s
root@verdin-imx8mp-15722244:~# sync
root@verdin-imx8mp-15722244:~# hexdump -n 64 -C $EEP
00000000  00 40 01 cf 02 40 08 00  01 00 01 00 05 00 9c 00  |.@...@..........|
00000010  01 40 21 00 75 2f ad 00  ff ff ff ff ff ff ff ff  |.@!.u/..........|
00000020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000040
root@verdin-imx8mp-15722244:~#

Ivy Carrier Board:

root@verdin-imx8mp-15722251:~# hexdump -n 4 -C $EEP
00000000  00 00 00 00                                       |....|
00000004
root@verdin-imx8mp-15722251:~# uuidgen
8b56cb28-76af-4c66-9135-2f09e6b03f56
root@verdin-imx8mp-15722251:~# echo "8b56cb28-76af-4c66-9135-2f09e6b03f56" \ | dd of=$EEP bs=1 seek=0 conv=notrunc
39+0 records in
39+0 records out
39 bytes copied, 0.20495 s, 0.2 kB/s
root@verdin-imx8mp-15722251:~# sync
root@verdin-imx8mp-15722251:~# hexdump -C $EEP | head
00000000  38 62 35 36 63 62 32 38  2d 37 36 61 66 2d 34 63  |8b56cb28-76af-4c|
00000010  36 36 2d 39 31 33 35 2d  32 66 30 39 65 36 62 30  |66-9135-2f09e6b0|
00000020  33 66 35 36 20 20 0a 00  00 00 00 00 00 00 00 00  |3f56  ..........|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000100
root@verdin-imx8mp-15722251:~# head -n1 $EEP
8b56cb28-76af-4c66-9135-2f09e6b03f56
root@verdin-imx8mp-15722251:~# hexdump -n 4 -C $EEP
00000000  38 62 35 36                                       |8b56|
00000004
root@verdin-imx8mp-15722251:~# dd if=/dev/zero of=$EEP bs=1 count=64 conv=notrunc
64+0 records in
64+0 records out
64 bytes copied, 0.337126 s, 0.2 kB/s
root@verdin-imx8mp-15722251:~# sync
root@verdin-imx8mp-15722251:~# hexdump -n 4 -C $EEP
00000000  00 00 00 00                                       |....|
00000004
root@verdin-imx8mp-15722251:~#

In the Ivy carrier board it is working fine and well, then why it is not clearing the data already in the verdin development board? need help to suggest the great way to use the eeprom in the verdin development board.

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


The difference in EEPROM behavior between the Verdin Development Board and Ivy Carrier Board is due to different EEPROM configurations and write protection settings.

EEPROM Configuration Differences

Verdin Development Board EEPROM

The Verdin Development Board has a 2-Kbit EEPROM (IC29) with I²C interface accessible at address 0x57 on the generic serial bus I2C_1(1). This EEPROM includes write protection functionality controlled by jumper JP5(1).

The write protection is controlled as follows(1):

  • Position 1-2: EEPROM’s “Write Control” (WC) pin is driven “High” - Write operations are disabled to the entire memory array
  • Position 2-3: EEPROM’s “Write Control” (WC) pin is driven “Low” - Write operations are enabled

By default, jumper JP5 is in position 1-2(1), which explains the “Connection timed out” errors you’re experiencing when trying to write to the EEPROM.

Ivy Carrier Board EEPROM

The Ivy Carrier Board appears to have a different EEPROM configuration without the same write protection mechanism, which is why write operations work successfully.

Solution for Verdin Development Board

To enable EEPROM write operations on the Verdin Development Board:

  1. Check Jumper JP5 Position: Locate jumper JP5 on your Verdin Development Board
  2. Move Jumper to Position 2-3: This will drive the EEPROM’s Write Control pin “Low” and enable write operations(1)
  3. Retry Your Write Operations: After changing the jumper position, your write and clear operations should work properly

Why Your Read Operations Still Work

The existing data in your Verdin Development Board EEPROM (the 00 40 01 cf pattern you see) appears to be pre-existing configuration data. Read operations are not affected by the write protection setting, which is why you can still read the EEPROM contents even with write protection enabled.

The write protection only prevents modification of the EEPROM contents, not reading them. This is why your attempts to write the UUID or clear the EEPROM with /dev/zero result in timeout errors, but reading with hexdump works fine.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.