Hi James, There is EEPROM (AT24C64) with the valid FRU data on my board. But the FruDevice would fail to format it. I added some debug information to determine what's wrong with it. Then I found the flag variable returned by isDevice16Bit() was equal 0. That's, the FruDevice could think it's 8-bit EEPROM. /* Check for Device type if it is 8 bit or 16 bit */ int flag = isDevice16Bit(file); There is the below comment in the isDevice16Bit(). /* Read 7 more bytes, it will read same first byte in case of * 8 bit but it will read next byte in case of 16 bit */ But the rule isn't applicable to my EEPROM (AT24C64) . root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# i2ctransfer -f -y 6 w1@0x50 0 r1 0x00 root@henbin:/var/volatile# Could you give some suggestion? Thanks.