Wednesday, December 03, 2008

Adventures in Windows

We just got a new emachines E19T6W 19" flat panel LCD monitor, and getting it to work with my Toshiba Satellite A105 laptop was a royal PITA. Technically, it worked right away, but it looked terrible because the laptop wasn't driving the monitor at the native resolution of 1440x900. It's not that the Intel 945GM graphics accelerator can't output that resolution, it's just that the EDID data didn't get through, so the graphics card fell back on its standard modes.

Toshiba, in their infinite wisdom, realized that nobody who has a widescreen laptop would ever use a widescreen external monitor, so the default video modes are all standards (like 1024x768 and 1280x1024). Note that 1440 by 900 pixels has a different aspect ratio, so it's not in the list. A Toshiba BIOS update got me more available modes, but not the one I need. Even if I take this monitor back, another 19" widescreen monitor would almost certainly still use the same native resolution, so I had to get it working. Plus this one was dirt cheap.

Maybe if I describe the solution here, someone will find it and not have to search around quite as much as I did. The most helpful information I found was from the Intel Software Network, specifically the from user archibael. The basic idea is to tell the graphics driver about the video mode in question so it shows up in the default list for monitors that don't have EDID data available. This procedure may work analogously for other Intel Graphics Accelerators, but YMMV.
  1. Get the ZIP version of the newest 945GM graphics driver. To find this, search for 945GM, and click on the result that says Overview.
  2. Expand the ZIP archive into a folder somewhere.
  3. Find the file igxp32.inf and open it in your favorite text editor. (It's possible this procedure may work by editing this file inside the C:\WINDOWS\system32 heirarchy and rebooting, but I didn't try that.)
  4. Search for TotalDTDCount, and change the value from 0 to 1. It should be in a section called [NonEDIDMode_AddSwSettings].
  5. Below that, comment out the line for DTD_1, and replace it with this line, which I found in this post:
    HKR,, DTD_1,%REG_BINARY%, 97,29,A0,D0,51,84,20,30,50,98,3,
    00,00,00,00,00,00,1C,27,00 ; 1440x900@60...Progressive
    I don't think spacing matters much, but for reference it was all one line, with two tabs before the comment at the end. This line should be the info for 1440x900 60 Hz non-interlaced VESA.
  6. Save the file and install the new driver. It will probably be flagged as being unsigned, but use it anyway.
Now, that mode is available when I plug in the external widescreen monitor, and all is happy. Hopefully I've peppered the post with enough keywords that it's findable by those who need it.

No comments: