THE SOLUTION
Here's the solution for this exact monitor. There can be fixes for others but you need to have a fixed EDID to use.
This solution works on an Laptop ATI 4225 via HDMI to L246WP on Win7. All I've done is figured out how EDID overrides work in Windows 7 and I used information from avsforums as well as a very long hardforum thread on the same issue. (Since I can't post at HardForum without a special email address I'm posting it here.)
How it works:
The problem is actually in the monitor. What your monitor does is provide an EDID to your computer that identifies what capabilities it has. The computer then uses this EDID information to limit what options are available to the user. The LG monitor in this case has an invalid EDID in the ROM of the actual monitor so no matter what driver you use, the monitor will continue to supply the same wrong EDID.
The fix: EDID Overrides.
An nvidia specific EDID solution was posted over at
HardForum and it will only work for nVidia drivers. I needed a method for ATI cards. After deciphering what the override is doing in the HardForum post, I found out that the modified EDID only has one modified byte (from 1 to 0) and an updated checksum.
Here's the default EDID supplied by the monitor (in hex):
Code:
0 1 2 3 4 5 6 7 8 9
000 | 00 FF FF FF FF FF FF 00 1E 6D
010 | 3F 56 89 DF 00 00 03 11 01 03
020 | 8E 34 20 78 EA 5A D5 A7 56 4B
030 | 9B 24 13 50 54 A5 4B 00 A9 40
040 | 81 8F B3 00 81 4F 81 80 01 01
050 | 01 01 01 01 28 3C 80 A0 70 B0
060 | 23 40 30 20 36 00 B0 44 11 00
070 | 00 1A 48 3F 40 30 62 B0 32 40
080 | 40 C0 13 00 B0 44 11 00 00 1E
090 | 00 00 00 FD 00 38 4B 1E 53 11
100 | 00 0A 20 20 20 20 20 20 00 00
110 | 00 FC 00 4C 32 34 36 57 50 0A
120 | 20 20 20 20 20 20 01 43
Here's what the EDID looks like after the override:
Code:
0 1 2 3 4 5 6 7 8 9
000 | 00 FF FF FF FF FF FF 00 1E 6D
010 | 3F 56 89 DF 00 00 03 11 01 03
020 | 8E 34 20 78 EA 5A D5 A7 56 4B
030 | 9B 24 13 50 54 A5 4B 00 A9 40
040 | 81 8F B3 00 81 4F 81 80 01 01
050 | 01 01 01 01 28 3C 80 A0 70 B0
060 | 23 40 30 20 36 00 B0 44 11 00
070 | 00 1A 48 3F 40 30 62 B0 32 40
080 | 40 C0 13 00 B0 44 11 00 00 1E
090 | 00 00 00 FD 00 38 4B 1E 53 11
100 | 00 0A 20 20 20 20 20 20 00 00
110 | 00 FC 00 4C 32 34 36 57 50 0A
120 | 20 20 20 20 20 20 00 44
You can see that byte 126 (second to last byte) is just switched from 01 to 00 and byte 127 (the checksum) is updated from 43 to 44.
Overriding the Monitor Supplied EDID
Now that we have the correct EDID, we need to get Windows to override the monitor's default EDID. Most of the solutions for doing this on the internet involve using an INF file in Windows but I find that quite cumbersome. Instead I edited the registry directly:
First install the L246WP monitor driver
from LG. All you have to do is right-click Generic PNP monitor in device manager, click update, and supply the L246WP path.
Windows has a built-in
EDID override mechanism that you can use regardless of driver. Here's what you need to do without using an INF to use it:
WARNING: You can screw things up in the registry by editing things directly if you aren't sure of what you're doing.
1. Run regedit as administrator.
2. Go to the following Key:
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\
3. In there you should see an item labeled GSM563F. This is the panel manufacturer for the L246WP monitor. (If you don't trust me, you can download
EDID Manager to verify.) Open it and continue on to Device Parameters. My key continues like this:
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY\GSM563F\5&f453257&0&UID257\Device Parameters
4. In "Device Paramters" you'll see a REG_BINARY value called EDID. This should match the first EDID I listed above. Open this value and copy all of the data using ctrl+c. Then close it without modifying it.
5. Create a new Key in Device Parameters called EDID_OVERRIDE
6. In EDID_OVERRIDE, create a new Binary value called "0". Paste the copied data from the original EDID here.
7. Go to the very end of this binary value and delete the last two bytes (01 43) and enter the new bytes (00 44).
8. Click ok, close regedit, and restart.
Upon restart, if you're on a laptop like I am, your monitor may go into "duplicate" mode rather than extend or whatever you want so the resolution will reset. You will be able to reconfigure the monitor(s) to the right resolutions once you get back in.
The INF solution detailed by Microsoft does the same thing except you have to edit an INF and get it to put it in the right place. We are doing is the same as the INF but by hand through modifying the registry directly.
After this fix, your driver should now recognize the monitor as a monitor instead of a Digital TV.