Michael Moffitt's Website

I like projects!

ThinkPad X61 60Hz Refresh Hack

Written 8/9/15

Until Lenovo brings back a laptop with a real keyboard, I'm clinging to my tired ThinkPad X61. This one has the works - a 1400x1050 IPS screen installed, the top-end 2.4GHz T8300 CPU, plenty of RAM, and an SSD.

The gripe I've always had with this particular ThinkPad, alongside a few others, is that the LCD is locked to a 50Hz refresh rate! For ordinary work this is not a problem, but since I like to develop games for old platforms which run at a fixed rate, this means the content must frameskip to match the display, which results in very choppy motion or slowed down PAL speeds. Neither are great.

As mentioned before, I installed an SXGA+ panel from an X60 tablet in the computer. This involved slicing up the LCD controller board to install a socket, rewired to match the pinout of the original LCD, and slicing up the cable a bit so it can fit properly.

When I first installed the panel, I neglected the EDID pins (an I2C bus). The previous XGA panel did not use EDID, and the Video BIOS held fixed LCD information. Before using the SXGA+ panel properly, the BIOS had to be modified.

I've done this in the past, and always assumed the new modified BIOS simply held a different static EDID for this SXGA+ panel, but in fact the modified BIOS makes the X61's GMA X3100 respect the display's EDID pins. Until I connected them, I was stuck at the failsafe 1024x768 resolution, but it was strangely 60Hz. The LCD did not cope with this well, and the image was horizontally shifted randomly on each line. Undesirable, but it was 60Hz!

I reconnected the EDID pins, and the SXGA+ resolution was available, but at 50Hz. I read the panel's datasheet, and sure enough the pixel clock for a 50Hz image was present in the EDID. Okay, so it was using the EDID information...

Back in the day many used Powerstrip to modify their T60/T61's EDID to let a QXGA panel run at higher refresh rates. Powerstrip is a paid utility, so I had no interest in using it for this. Surely in 2015 we can find an open-source solution to this problem.

And hey, I did - edid-rw is the tool I wanted. It allowed me to read the EDID and verify that it matched that of the one in the datasheet.

After doing that, I modified the EDID to use a pixel clock 6/5ths of the original. A simple change and checksum fix, and it should be good to go. As implied by the name, edid-rw can write the information as well as read it.

I used it to write my modified EDID, and after a few seconds it was done. I rebooted, and... nothing, it was still 50Hz. Lame.

edid-rw showed me that the EEPROM hadn't taken the change, and it read back the original! Hmm...

Turns out a typical EEPROM used for EDID has a write protect pin, which was set high here. I had to take the back of the laptop's lid off, and carefully lift the leg and wire it to ground (it would float to write-protect, I tried). There were two EEPROMs, so to be safe I enabled write on both.

After doing that, the EDID wrote without a hitch and after a reboot I had 60Hz with no noticable adverse effects. Finally, my laptop can run at 60Hz! It sounds like a pathetic thing to celebrate when just about every laptop in the world has 60Hz as a standard option.

Perhaps the panel can be pushed further, but I'm not interested in going above 60Hz unless it is in increments of 60Hz, simply for compatibility's sake.

You may download my modified HV-121-P01 EDID here and use it on your SXGA+ ThinkPad X60/X61/t.

I apologize for the sparse post, but I neglected to photograph the process. Until recently, my phone camera has had a lot of dust inside the lens, and all photos had specs of dirt on them and were washed out.

Back to main index

This website was generated using MicroLog.