Genuinely Broken EDID (monitor eeprom checksum mismatch)
Hi,
I have this laptop : https:/
Some time ago, its lvds started lying to the graphic card, that it can only do 1024x768 when its native res is 1280x800.
The effect was that the 1024x768 picture was being displayed in the upper left corner of the lvds, and the remaining 256 pix east of it and 32 pix south, were repeated pixels from left and right and up and down edge.
This was showing not only under Linux, but also at the BIOS self-test screen. So this is genuinely broken hardware. THIS IS NOT SOFTWARE PROBLEM!
Whoever is not interested, don't read further ;)
As I know now, the reason was this :
{{{
[code]
lukasz@
[sudo] password for lukasz:
get-edid: get-edid version 2.0.0
Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful
VBE version 300
VBE string at 0xc0240 "ATI ATOMBIOS"
VBE/DDC service about to be called
Report DDC capabilities
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful
Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer
Reading next EDID block
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful
�!x`
ʥ�[L�'"
�N15`
�CMO
lukasz@
parse-edid: parse-edid version 2.0.0
get-edid: get-edid version 2.0.0
Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful
VBE version 300
VBE string at 0xc0240 "ATI ATOMBIOS"
VBE/DDC service about to be called
Report DDC capabilities
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful
Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer
Reading next EDID block
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful
parse-edid: EDID checksum failed - data is corrupt. Continuing anyway.
# EDID version 1 revision 3
Section "Monitor"
# Block type: 2:0 3:fe
# Block type: 2:0 3:fe
# Block type: 2:0 3:fc
Identifier "N154I1-L07"
VendorName "X@@"
ModelName "N154I1-L07"
# Block type: 2:0 3:fe
# Block type: 2:0 3:fe
# Block type: 2:0 3:fc
# DPMS capabilities: Active off:no Suspend:no Standby:no
Mode "1280x800" # vfreq 59.910Hz, hfreq 49.306kHz
DotClock 71.000000
HTimings 1280 1328 1360 1440
VTimings 800 802 808 823
Flags "+HSync" "-VSync"
EndMode
# Block type: 2:0 3:fe
# Block type: 2:0 3:fe
# Block type: 2:0 3:fc
EndSection
[/code]
}}}
As I have successfully enabled and using KMS, I get this in dmesg a lot:
{{{
[ 250.610530] radeon 0000:01:00.0: LVDS-1: EDID invalid.
[ 250.871454] [drm:edid_is_valid] *ERROR* EDID checksum is invalid, remainder is 81
[ 250.871460] [drm:edid_is_valid] *ERROR* Raw EDID:
[ 250.871464] <3>00 ff ff ff ff ff ff 00 60 00 00 15 00 00 00 00 ........`.......
[ 250.871467] <3>02 0d 01 03 80 21 15 78 0a ca a5 95 5b 4c 95 27 .....!.x....[L.'
[ 250.871470] <3>22 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 "PT.............
[ 250.871473] <3>01 01 01 01 01 01 bc 1b 00 a0 50 20 17 30 30 20 ..........P .00
[ 250.871476] <3>26 00 4b cf 10 00 00 1c 00 00 00 fe 00 4e 31 35 &.K..........N15
[ 250.871479] <3>60 00 00 0a 20 20 20 20 20 20 00 00 00 fe 00 43 `... .....C
[ 250.871482] <3>4d 4f 0a 20 20 20 20 20 20 20 20 20 00 00 00 fc MO. ....
[ 250.871485] <3>00 4e 31 35 34 49 31 2d 4c 30 37 0a 20 20 00 05 .N154I1-L07. ..
[ 250.871487]
[ 250.871491] radeon 0000:01:00.0: LVDS-1: EDID invalid.
}}}
But as it seems, I am now able to use full 1280x800 resolution, with a script like this :
{{{
lukasz@
#!/bin/bash
xrandr --newmode 1280x800@60 71.0 1280 1328 1360 1440 800 802 808 823 +HSync -VSync
xrandr --addmode LVDS 1280x800@60
xrandr --output LVDS --mode 1280x800@60
}}}
added to default session start.
I can then use 1280x800 desktop (gdm+compiz) but switching to console produces the following in dmesg :
{{{
[ 7341.425650] [drm] LVDS-6: set mode 1024x768 d
and back:
[ 7383.782155] [drm] LVDS-6: set mode 1f
}}}
This all on
{{{
lukasz@
Linux lukasz-laptop 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux
}}}
As this needs to be a question - any easy way to write correct EDID data back to the screen's eeprom ?
Or to define the 1280x800 res so that console can use it as well ?
(this is just an 'interesting' question - to whoever is interested and can suggest, I don't require anybody to support broken hardware ;)
Question information
- Language:
- English Edit question
- Status:
- Solved
- Assignee:
- No assignee Edit question
- Solved by:
- el es
- Solved:
- Last query:
- Last reply: