Reading A-board EEPROM

For reading the EEPROM, load the sketch eeprom_read.ino into Arduino IDE and upload it to the UNO board. Connect the other end of the service cable to the Arduino board.

Now you can power up the TV – first with the power switch and then the remote control. The panel will stay black, but the front LED should turn green (update: on North American models there is only red LED when the TV is turned on). If everything is working, on the PC/laptop connected to the Arduino you will start seeing the first seven bytes in HEX from the A-board EEPROM in a loop. Bytes 2 to 7 carry information regarding the panel operation hours as well as the on/off cycle count.

It might also be possible to have the Arduino board connected to an Android tablet if you don’t have a laptop or it is not possible to move either the TV close to the PC or vice versa. I successfully used rooted Google Nexus 7 running Cyanogenmod with USB OTG cable and the Android application Arduino Uno Communicator. Some tablets however might not provide enough power on the USB port so you might be out of luck for your particular tablet.

I’ve had 5264 hours clocked on my set and 4426 on/off cycles before I connected the Arduino board to the TV. When I did the reading of EEPROM, I’ve got values 0x13 0xc5 0x47 0x88 0x11 0x4a. So far I was able to decipher only the bytes 6-7. If converted to DEC, I’ve got the exact on/off cycle count of 4426. If you know how the panel hours are encoded into bytes 2-5, please let me know and I will update the guide.

UPDATE: Carlos Ruiz proposed formula to convert bytes 2-5 to actual hours is to divide them by 0xF600 and then convert to decimal.

So in my case 0x13 0xc5 0x47 0x88 in HEX math =  13c54788 / f600 = 1493 => converted to DEC gives 5267 hours. It’s not exact 5264 hours, but I might have clocked some more hours in-between or maybe the counters were not synced from the factory. Please let me know, how close it gets for your readings.

For now, take a note of those bytes so you have a reference for the future (you could write them back to the EEPROM if you would like to restore your current increased blacks for some unknown reason). Once you’ve written those values down, you can power off the TV. You can keep the service cable connected to the TV.

Next: Resetting EEPROM’s operation hours

7 thoughts on “Reading A-board EEPROM

    • Hello Carlos, thank you for the formula, it seems to give the correct value. I will update the post with your findings. Unfortunately, I did not take the full dump of the EEPROM before the reset.

      • Carlos,

        Thanks for the idea. Unfortunately, I don’t think your solution is correct. Mathematically, dividing a 32bit number by 0xf600 is VERY CLOSE to dividing it by 0x10000 (or in other words, just dropping the latter word completely). (Try dividing 0x12340000 and 0x1234FFFF both by 0xF600 and you’ll see what I mean.)

        What we observe from bytes 2-3 & 4-5 is that they appear to be two distinct 16-bit values, rather than one single 32-bit value. Bytes 2-3 change long before bytes 4-5 approach a rollover point, based on data that I have logged from my TV. Additionally, when bytes 2-3 do change, bytes 4-5 do not clear/reset/rollover.

        cheers,
        ..dane

        • You are Right audiodane, try xF624 as dividend with the author’s posted values and your eeprom values to test how close it is.

          Good Day.

  1. Good day,

    Mironto and Audiodane, thanks for your efforts on this. It’s amazing!

    I tried the arduino reprogramming on a P54V20A, but despite the test eeprom on the breadboard working correctly (read/write), I could only read 0xFFs on the TV itself. Re-tested the cables, connectors etc but no joy. Haven’t tried writing, but I presume it wouldn’t work, as I expect something should have been read.

    Any tips? I would like to avoid soldering if possible but if that is what it takes to get by blacks back, I’m up for it 🙂

    Thanks!

      • Yes, I did. It worked fine on the altered testbed, with the internal arduino pullups disabled. Moved the same arduino to the set, connected and only read 0xFFs.. will try again, changing the I2C bus address to 0xA0 instead of 0x50 and possibly trying others until a get a reading close to the panel hours/

Leave a Reply

Your email address will not be published. Required fields are marked *