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.
Divide Hours by xF600 then convert to decimal.
Do you have a full dump of EEPROM to share?
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.
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!
Hello Alex,
Did you disable the internal pull-up resistors and tested with altered testbed?
I do not have any reports from Australian models, but I believe Audiodane sold several PMCs to Australia and they reported as successful. The only problem I am aware of is with US G20/GT20/GT25 models.
Here is a comment from TH-P65VT20A owner:
http://audiodane.dandk.org/pmcv1-feedback/#comment-134
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/
I have p50vt20e and the same problem (0xFF). Any suggestions?
Long shot but I have a TH-50PZ70b doing the all FF’s thing too.
Did anybody suss it out?
Hi,
Thank you for this useful guide 🙂
I’m trying to assess my TV (PX-T46G10) operation hours and the on/off cycle count but the results are strange to me. Probably I do (count) something wrong. Please advise how to do it properly.
My results:
Reading EEPROM memory from address 0 to 9
0x00 0x3C 0xAA 0x7D 0xAC 0x41 0x1E 0xFF 0xFF 0xFF
2-5 bits are
0xAA 0x7D 0xAC 0x41
so in hex will be AA7DAC41/F600=B16B convert to decimal =45419 operation hours
It seems to me too large number.
Could you please verify this number. Thanks.
Bernard
Hello Bernard,
the formula for converting the HEX numbers to DEC is most probably wrong. I don’t know the correct formula, yet. But since you need to only clear the values for resetting the black level back to the factory settings, I guess it does not matter.
it seems on/off is octet 5-6 (0x411e = 16670) and hours is octet 1-2 (0x3caa = 15530)