How to Force DVI or HDMI Resolutions and Refresh Rates in Windows 7
InformationThere have been innumerable posts on SevenForums about things like 59Hz refresh rates and 1080p 16:9 HDTVs that display only 1024x768 when connected with DVI or HDMI. After a ton of research and development I think I've got a working solution for virtually all of these issues.
Starting with Vista, Microsoft has required graphics vendors to read and respect monitor capability information from the display itself if they wanted to pass Windows Hardware Quality Labs (WHQL) certification. This display capability data is encapsulated in an EDID. Few HDTV manufacturers sought WHQL and it's unclear whether Microsoft tests display EDIDs from monitor manufacturers as a WHQL requirement. Please let me know if you have a WHQL display that seems to have a bad EDID.
As a result, many DVI/HDMI connected HDTVs and some monitors are locked into displaying only those resolutions and refresh rates that are specified in the EDID. No graphics adapter or driver is supposed to allow configurations not listed in the EDID at least as a default. Newer ATI drivers allow for a small number of HD resolutions to be forced but it's been hit or miss for the users I've surveyed and nVidia's offerings don't seem to be a 100% solution either.
The natural solution would appear to be changing the EDID information in the display. Rarely, this is possible with Powestrip if the display stores the EDID in a flash memory but more commonly the EDID is stored in an EPROM that can only be updated with specialized hardware. I've talked with several display vendors during the development of this tutorial and none of them consider a bad EDID grounds for warranty service. So if next to no displays support updating the EDID through software and the manufacturer won't fix the hardware, what are we left to do? Break out the toolkit and warm up the soldering iron?
While that's well within my capabilities it seems to put some end-users off a bit, although I really can't understand why -- I love the smell of solder in the morning! But there has to be a better way right? Again, Microsoft has a solution if you really dig for it and do your homework: How to Use an INF to Override the Monitor EDID While it's not intended for end users, what really fun stuff is? The challenge was to develop a method accessible to a greater audience -- to improve on the solution that Microsoft provides that's intended for hardware manufacturers and make it work for us.
Warning
Prerequisites
- Read and understand both linked documents above.
- Post questions if anything is unclear before you proceed.
- Don't blame me when you ruin your $3000 HDTV. Smoke can happen.
- Read up on what your displays true capabilities are stick close to them.
- This is more of a coffee tutorial than a beer tutorial...
Procedure
- Download Phoenix.zip and extract it to a working folder.
- Run it and click the registry toolbar button.
- Click the pencil toolbar button for edit mode.
- Change the EDID settings to reflect you display's true capabilities
- Pay special attention to the Standard Timings tab.
- Detailed Timing blocks 2-4 provide some very interested additional options.
- Save the EDID to a .DAT file in the working folder.
- Download moninfo.exe and install it.
- Open the saved .DAT with MonInfo and make sure it doesn't complain about it
- If it does post here for help
- If MonInfo reads in an displays the settings the way you configured them in Phoenix then...
- Select Create INF... from the file menu and save it to the working folder.
- Feel free to edit the strings in the INF to your liking.
- Open Start, type devmgmt.msc and press Enter.
- Select the monitor you want to change, right click and select Update Driver Software
- Use the tried and true "Have Disk" method to select the INF and install it.
- Reboot and enjoy your new resolution!