Michael Moffitt's Website

I like projects!




ThinkPad X62 and HV121P01: 1400x1050 at 60Hz modification

Written 11/26/16

I touched upon modifying the HV121P01 LcD to run at a 60Hz refresh rate on my old X61, but I decided to do a better writeup with more pictures now that my X62 has arrived. The X62 is a modified ThinkPad X66/X61 built by members of 51nb.com, where the motherboard has been replaced with a new motherboard with a Broadwell i7 5500U, a Broadwell PCH, DDR3 memory slots, SATA 3, and all that fun stuff. The X62 is also built almost entirely out of new old stock parts, so it's in great shape.


The HV121P01 runs at 50Hz from the factory. That's fine for many things, but since I like to create and play games for old game systems which ran at 60fps natively, the temporal interpolation required results in some stuttering or blurred frames. Having the display run at the industry-standard 60Hz is desirable. This is done by editing the EDID EEPROM, which is in the LCD module. This tells the display controller what the display is capable, and dates back to the VGA days.
The LCD is installed using some crafty homebrew techniques, as it wasn't designed for this laptop's mounting system. The cabling is also physically incompatible, and the LVDS connections must be re-routed. Here you get the exclusive opportunity to see how 51nb does the HV121P01 install.

Nice thick kapton tape holds the modified frame together. Kapton tape is a good sign.

I carefully lifted the panel up. It's tight in here, but you can see how the cable pinout was adapted to fit the HV121P01.

The EEPROM is visible under the plastic of the LCD controller board. There are two ROMs here. I'm not sure what the second one is for, but only one of them is even wired to anything (the bottom one).

After exposing the EEPROM, the write-protect pin (pin 7) must be lifted from the board. It's usually tied to VCC to be held to a logic high state, to forbid data writes. This generally protects the LCD from being "bricked" by having wrong data written to it (though that's an entirely recoverable problem). It must be lifted here in order to write the modified EDID data.

It's worth noting that the X62 uses an eDP to LVDS active converter on-board in order to drive this display. While that's not a problem, it does mean that the I2C connection used by the EDID never seems to reach the display controller in a way that's useful to us. That means we can't write the EDID from the X62 trivially. For this task, I dug out my tired original X61, and removed the display temporarily. Here is my X61 motherboard hooked up to my disasembled X62 display assembly.

I used a program called edid-rw to do the dirty work.

First, I had to probe around to figure out the address of the display on the I2C bus. To do that, I tried a few addresses with edid-rw, and piped the output to edid-decode to read the original EDID data.:


# edid_rw 3 | edid_decode


Once that produced readable data, I knew I had the correct address (3). Now, it's time to write my modiifed EDID. Fortunately, I've already made the modified EDID image.
Here is the modified HV-121P01 EDID binary.

I wrote the EDID to the address using the following command:

# edid_rw -w 3 < edid-sxga60.bin


After I wrote the EDID data, I read it back once more to make sure that it stuck:

Because the display is being driven at a higher dot clock than before, it's important to make sure everything is still within tolerances as far as timing goes. On other machines, I've had to shorten my own sloppy LVDS cable converter, as it was causing timing issues. Here, everything is at 60Hz and it's absolutely fine:

That's how I solve what I consider to be the main weakness to the X6* family of laptops. On the XGA models, flashing the modified SXGA+ BIOS and simply taking the EDID pins out of circuit are enough to make the display controller default to 1024x768 at 60Hz, which is what I did for my low-end X61 with an HT12X21-240. Hopefully this can help others deal with the same issue.


Back to main index


This website was generated using MicroLog.