|
CASE STUDY OF PROBLEMS CAUSED EDIDs Fixing the nVIDIA EDID Problem Updated 02-22-05 Originally Posted 08-15-04 CHANGE LOG
TABLE OF CONTENTS
ADDITIONAL INFORMATION On the Windows platform nVIDIA cards have a unified driver design; hence all cards from the Riva TNT to the GeForce 6800 series suffer from a software bug that can cause display devices to not function at their native resolution. This problem is caused by deficiently designed EDID software built within the display device. Anyone who uses a video card powered by an nVIDIA chipset and also uses the nVIDIA ForceWare reference drivers on the Windows Platform. DVI-equipped display devices are particularly hampered by limitations caused by this software bug. Monitors and various display devices such as HDTVs and projectors may or may not have a built in piece of software called the EDID. EDID stands for Extended Display Information Data and contains a cornucopia of display resolution and scan rate settings as well as pixel clock limits, gamma settings and other generic properties of display device. Unfortunately many HDTVs, older monitors and even a few newer high-resolution wide-screen monitors have improperly designed EDIDs or lack one entirely. This lack of foresight has caused a myriad of compatibility problems ranging from overscan problems to maximum resolution issues to even simply preventing the display device from working at all. If EDIDs can cause these problems then why are they built into display devices at all? EDIDs were designed to allow simple Plug ‘N Play operation when using a digital display connection. On older analog display devices you had to load specific device drivers to obtain the maximum resolutions and frequencies that it supported. Worse still, many times you had to manually configure your display device even after loading the proper drivers. Rather than having to load device drivers for your display device, the Video Electronics Standard Association (VESA) formed the basis of the EDID standard. This standard was designed to build the design specs, resolutions and scan frequencies right into the display device itself. The goal was that if you included a small configuration file in the hardware then you could basically skip having to use a device driver at all. A novel idea, but unfortunately it has its pitfalls, as you will soon see below. On the Windows platform, nVIDIA’s driver design philosophy was to rigidly enforce the settings outlined by the EDID contained within the display device. Naturally, if you have a good EDID then the Plug ‘N Play features worked well within the intentions of the VESA standard. However if you have a poorly designed EDID, then you would be in for a disheartening surprise. If you had no EDID, then you may not even get any video signal to display on your output device. Before you point the finger of blame at nVIDIA for such odd behavior from a video card, the blame should also be shared by the manufacturer of the display device. If you are using a monitor, then you may be in luck as the manufacturer may provide a downloadable firmware update on the Internet to address the problems that the deficient EDID is causing. However if you are an HTPC user and are having an issue with a HDTV, then you may not get any support at all. I was suffering from a maximum resolution problem that cut short the resolution I should have been able to display at. My HDTV is a Sharp LC-37G4U 37” LCD TV. It has the built in capability of working with PCs and has a fixed pixel resolution of 1366x768. The resolution of 1366x768 is one which is not evenly divisible by eight so you’ll have to live with 1368x768 and two pixel columns of overscan: one on the left and one on the right. Nonetheless for whatever reason Sharp designed the EDID to have a maximum resolution of 1280x1024. The nVIDIA ForceWare drivers saw that maximum resolution of 1280x1024 and held me to it. No matter what I tried to do, there was no way I could run at 1368x768. Each time I did I would get a virtual desktop with a window of 1280x1024, which has a 5:4 aspect ratio. I would also get 1280x768 if I tried to run at 1368x768, a 16:9 aspect ratio version of 1024x768. I researched this problem on the web and actually found quite a few people were suffering from this problem – and not just those with the same monitor as me. Interestingly enough, nVIDIA did release a fix for this in the LINUX device drivers, but no fix was ever created for the Windows platform. (The LINUX fix is to add the line IgnoreEDID = 1, or NoDDC = 1 to your driver configuration files). I contacted nVIDIA’s customer support about the matter and here is what they had to say: Future drivers will enable support for non divisible by 8 displays using NVIDIA GPUs. Cannot comment on the release date of new drivers that will fix this issue. Linux driver policy is different than windows and probably will not change. However, in addition to working around the problem in future drivers as stated many times over. NVIDIA has informed VESA group and the CE industry of this problem with TV displays with designated *DVI-HDTV* input. Hopefully they will follow the established international standard of VESA DDC for the Plug & Play function if they are concerned with ease of PC usage with proper aspect ratio. Most importantly include SVGA/WXGA, HDTV modes, and "native panel mode" within the EDID. That way things will "just work" like any other Digital Flat Panel out there designed for computer use. Until the driver work around you will have to use the TV as Sharp primarily intended with the use of 720P / 1080i from HDTV set top box or PC. I will inform you when development is done to give you some clue. I have Sony VPL-HS10 HDTV projector and it has the same panel resolution and the same problem as your Sharp when trying to use max panel resolution! So we defiantly see the problem. Thanks for your patience. At least they are aware of the problem and are committed to releasing a fix for it. The down side is that they have no time frame to do it. Basically you’ll have to live with the problem until they release their driver fix at some nebulous date in the future. Update 12-04-04 After nearly four months from the original posting of this article, nVIDIA finally has delivered their promise for resolution support for non-divisible by 8 resolutions. However, there are drawbacks. Depending on your graphics card you may or may not have an external TDMS timing generator. An external TDMS timing generator is a separate chip that sits off from the graphics processor to allow custom resolutions and timings. Video cards with external TDMS timing generators (GeForce 6800 Ultra cards) the latest nVIDIA reference drivers will allow you to create custom resolutions that are non-divisible by 8. You can do this by pressing the Advanced Timing button in the Screen Resolution & Refresh Rates section of the ForceWare driver panel. If your card does not have an external TDMS then you are limited to creating resolutions that are divisible by 8 and the Advanced Timing button is hidden. nVIDIA's explanation from the nVIDIA 66.93 ForceWare Release Notes: DVI timing adjustment is supported for NV3x-based cards only if they have an external TMDS, such as the SiliconImage 164. If the card uses the internal TMDS, then the [Advanced Timing] page is not accessible. However, cards with an internal TMDS can support refresh rates less than 60 Hz in this driver. That said, the ForceWare 67.50 beta driver had the Advanced Timing button available for me even though my GeForce 6800 GT does not have an external TDMS. However in the Beta 67.02 drivers the Advanced Timing button is gone again. nVIDIA did say that they planned to support DVI timing adjustment for the GeForce 6800's internal TDMS some time in the future, however that feature is obviously still in the beta stages of development. Nonetheless I have read that you can still create non-divisible by 8 resolutions via third-party software utilities (Power Strip). Four months ago this was not possible. Sadly the EDID limitations exist today just as much as they did four months ago. Update 02-21-05 In the the three months since I updated this article last December, the latest nVIDIA ForceWare drivers now include the Advanced Timing feature as standard for video cards with or without an external TDMS. Prior to using an nVIDIA card I was using an ATi Radeon 8500 Retail with 64MB of video ram. When I used this card I had no problem setting the output resolution to 1368x768. Granted the ATi Catalyst drivers don’t include a utility to create custom resolutions on the fly like the nVIDIA ForceWare drivers do, but nonetheless it worked on the ATi hardware. All I had to do to get 1368x768 was to install the video card, the drivers, create a custom resolution of 1368x768 via third-party software utility (Power Strip) and reboot. Simple and elegant, but why don’t the nVIDIA ForceWare drivers allow this? Again nVIDIA’s driver design philosophy was to rigidly uphold the outlines of the EDID provided by the display device. ATi on the other hand still uses the EDID information to generate the list of allowed resolutions; however it does not constrain you to them. If I wanted to run my HDTV out of spec the ATi Catalyst drivers would let me as long as I agreed to the proper warnings first. I asked nVIDIA about this too and their main reason for enforcing the EDID and its limitations was because they wanted to protect the average consumer from frying his or her monitor accidentally. By preventing the user from changing into display modes and scan rate frequencies which are unsupported by the EDID, they basically created the safest drivers that they could release. However the side-effect of this built-in limitation is that it ended up marooning those who had deficiently-designed EDIDs. Any of the below solutions will work equally well, however only the last one is within your own control. Waiting for a software patch from nVIDIA or your display device’s manufacturer is a feasible option only as long as you are willing to live with the issued caused by the faulty EDID.
Update 02-21-05
After
six months since the creation of this article, the nVIDIA EDID bug as
limited by the drivers is finally coming to a close. The most recent
ForceWare drivers that I tried, Beta 71.81 WHQL, allow you to create
resolutions beyond the borders of the EDID data. However the included
custom resolution and timings generator will not yet allow you to create
and adjust resolutions that are not evenly divisible by eight. Despite
that limitation I was able to create a custom resolution of 1368x768 but
only with partial success. New ForceWare Drivers From nVIDIA The following are the steps in order to create a custom resolution of 1366x768 in Power Strip as well as set up Windows to use the resolution.
If the above steps worked for you
then you have a working desktop resolution of 1366x768. If not then try
the same steps again or perhaps the drivers still have some bugs to be
worked out—if all else fails try newer drivers and see if that works.
Once you have your working desktop resolution you aren’t out of the
thicket yet! You now need to create a custom monitor driver in order to
unlock your new custom resolution for screen savers and video games. Information on Crafting an EDID Below are two additional methods to solving the EDID problem on nVIDIA cards. One is for display devices featuring write-protected EDIDs and the other is for display devices which do not have that limitation. Before you continue I should mention that nVIDIA just recently released a ForceWare driver set (61.76) which addressed a problem that prevented monitors from running at resolutions which had a scan rate frequency less than 60Hz. Originally this appeared to be an EDID problem but luckily nVIDIA fixed that issue and for most people it is no longer a problem. EDID Design Utilities and Readers At
the request of several others over the past few months the
ViewSonic EDID
Utility is not the only EDID software available.
Raylar's Phoenix EDID
Designer is another good utility to help create and manage EDIDs.
The Phoenix EDID Designer is newer than the ViewSonic EDID Utility and
appears to have a better graphical user interface (GUI). Both will work
just as well so try both and see whichever one you like best. My
personal favorite is still the ViewSonic EDID Utility and it is the one
that I created my new EDID. Origin of the EDID Writing Software The
EDID Writing software that this article uses can trace its roots to the
DVI_Recover utility that was created by nVIDIA for Dell users who were
experiencing monitor failures when using the DVI port. Approximately a
year ago there was an issue that caused the EDID of the host monitor to
become corrupted and would effectively prevent the monitor from exiting
the Power-Save state. The DVI_Recover utility restores the old EDID and
replaces the corrupted one. Once finished it flips a bit to make the
EDID write-protected. I
must also mention that oddly enough, the ForceWare Beta 71.81 WHQL
drivers in combination with my own monitor device driver do not allow
directly access to the EDID. Using the DDCW program and also the
ViewSonic EDID Utility I receive a device read error. In contrast the
Phoenix EDID Designer can still extract the EDID but only if it was
previously stored in the registry. I do not have any explanation as to
why I receive a device read error but my best guess would be that it is
probably a device driver issue—after all I am using a beta video
card driver. Below are several steps to designing your own EDID and overwriting the one in your display device or bypassing it entirely. Modifying your EDID is very likely to void your warranty and or damage your monitor in the process. I would NOT recommend anyone do the following unless you absolutely know what you are doing and or have someone with you to guide you through the process. Solution For Monitors Without Write Protected EDIDs If your display device does not have a write-protected EDID then you can simply overwrite your bad EDID with a good one.
If you followed the above nine steps then you should have resolved your problem. If not, then go back and rewrite your EDID and try again. It may take several revisions of the EDID before you get one that you like so be prepared to recursively tweak your EDID. In the event that your display device goes black, boot your PC with your dos bootable disk and the backup EDID you created. The PC will still boot even if you can’t see anything on the monitor. Use DDCW to reprogram the display device back to the original EDID. Solution For Monitors With Write-Protected EDIDs There are actually two subsections for this fix. There is the simple way and the more advanced version. The simple way should work but has more stringent requirements for the source monitor from which you would obtain a working EDID from. The alternative is a more advanced solution and requires you to create your own working EDID to use.
Programming and Operational Instructions for Gefen’s DVI-Detective
Write-Protection Instructions for Gefen’s DVI-Detective After establishing that you have the correct EDID stored on the Gefen DVI-Detective you can write-protect it. Write-protecting the EDID will prevent the Gefen DVI-Detective from relearning the old EDID as well as eliminate the need to continuously use the 5V power supply.
After removing the logic EEPROM, reassemble the Gefen DVI-Detective in reverse order and attach it to your monitor and video card. Do not attach the 5V power supply unless you want to reprogram the Gefen DVI-Detective with your new EDID again. Since the logic EEPROM has been removed the LED will not glow when in use. The EDID that is stored on the Gefen DVI-Detective is now write-protected.
Gefen uses a MICROCHIP 24LC21 EEPROM to store the EDID. The socket chip is a MICROCHIP 12C509A which some of you may recall that is the same model that many use for "chipping" Sony Playstations. Here is the feature list for the EDID that I have written to allow support for 1366x768 for Sharp G4U LCDs. You can open it using the ViewSonic EDID Utility.
I rewrote the Standard Timing Table in the EDID as well as added 1366x768 as a Detailed Timing. I left the existing 1280x768 Detailed Timing entry in because you cannot add it to the Standard Timing Table because there is no 15:9 aspect ratio. There was an error in the ORIGINAL EDID that supported 1280x1024@85Hz. That resolution is beyond the supported maximum 110MHz pixel clock and results in a black screen when trying to run that refresh rate for that resolution. I added 848x477@60Hz but right now that is a broken feature. What I wanted is 848x480 because it is a supported resolution listed in the user manual. I would have liked to add it to the Detailed Timing section but to do so I would have to remove 1366x768 or 1280x768. The resolution of 1368x770 is actually rounded to 1368x769 in the nVIDIA ForceWare drivers. Why the extra pixel row? The Standard Timing Table only allows 1368 at 16:9, which yields 768.5. The nVIDIA ForceWare drivers round 768.5 to 769 for 1368x769 resolution. I also created a INF Driver for Windows XP that includes the resolution of 1366x768. The driver is not necessary for those who create their own custom EDIDs, however if you use the nVIDIA ForceWare drivers then a monitor driver is required to extend the custom resolution of 1366x768 to screen savers and video games. Without it you are still limited to 1366x768 only on the desktop. Download Sharp G4U LCD Windows XP Driver
The EDID utility that I included in this fix is from ViewSonic and can be found on their website. The EDID Writing software was given to me by someone who I found off of an Internet forum. Many thanks go out to him and without the software contributions from EnTech, Raylar and ViewSonic this fix would not have been possible. I also extend thanks to the generous people at AVSForum for introducing me to Gefen’s DVI-Detective. Also thanks again for the multitude of suggestions to fixing this problem by people on the NVNews Forums. E-mail me for any comments or questions regarding this fix. GoStats Web Page Hits:
|