xrandr reports display as 'disconnected' when EDID data not captured successfully, even if display in question is active and in use

Bug #313220 reported by FactTech
10
Affects Status Importance Assigned to Milestone
xorg-server (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

Binary package hint: xserver-xorg-video-ati

OS = Xubuntu 8.10, fully updated as of Jan 1, 2009
xserver-xorg-video-ati version = 1:6.9.0+git20081003.f9826a56-0ubuntu2
Video card = ATI Radeon 9250 PCI
Monitor = Sony CPD-E200 (aka Sony Multiscan E200)

I discovered this issue while trying to figure out why xscreensaver is broken after upgrading to Intrepid. After disabling new GNOME screensaver per instructions via 'man xscreensaver', xscreensaver still would not function.

Executing 'xscreensaver -verbose' yields output:

xscreensaver 5.07, copyright (c) 1991-2008 by Jamie Zawinski <email address hidden>.
xscreensaver: 08:00:57: running as gartiles/sysadmin (1000/1000)
xscreensaver: 08:00:57: in process 31960.
xscreensaver: 08:00:57: WARNING: RANDR and Xinerama report different
xscreensaver: 08:00:57: screen layouts! Believing RANDR.
xscreensaver: 08:00:57: running on display ":0.0"
xscreensaver: 08:00:57: vendor is The X.Org Foundation, 10502000.
xscreensaver: 08:00:57: useful extensions:
xscreensaver: 08:00:57: MIT Screen-Saver (disabled at compile time)
xscreensaver: 08:00:57: Shared Memory (1.1)
xscreensaver: 08:00:57: Double-Buffering (1.0)
xscreensaver: 08:00:57: Power Management (1.1)
xscreensaver: 08:00:57: GLX
xscreensaver: 08:00:57: XF86 Video-Mode (2.2)
xscreensaver: 08:00:57: XC Misc (0.9)
xscreensaver: 08:00:57: Xinerama (1.1)
xscreensaver: 08:00:57: Resize-and-Rotate (1.2)
xscreensaver: 08:00:57: screens in use: 0
xscreensaver: 08:00:57: rejected screens: 2
xscreensaver: 08:00:57: 0/0: 1280x1024+0+0 (VGA-0) -- output disabled
xscreensaver: 08:00:57: 1/0: 1280x1024+0+0 (S-video) -- output disabled
xscreensaver: 08:00:57: selecting RANDR events
xscreensaver: 08:00:57: consulting /proc/interrupts for keyboard activity.
xscreensaver: 08:00:57: selecting events on extant windows... done.
xscreensaver: 08:00:57: awaiting idleness.

xscreensaver then gets a segmentation fault when it is activated.

Note the fact that it detects zero screens in use and rejects two screens. Since xscreensaver says it is trusting xrandr, I started looking into xrandr's output. Executing 'xrandr -q --verbose' yields output:

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1680 x 1200
VGA-0 disconnected 1280x1024+0+0 (0x4e) normal (normal left inverted right x axis y axis) 0mm x 0mm
 Identifier: 0x4c
 Timestamp: 4730505
 Subpixel: no subpixels
 Clones: S-video
 CRTC: 0
 CRTCs: 0 1
 load_detection: 1 (0x00000001) range: (0,1)
S-video disconnected (normal left inverted right x axis y axis)
 Identifier: 0x4d
 Timestamp: 4730505
 Subpixel: no subpixels
 Clones: VGA-0
 CRTCs: 0 1
  tv_standard: ntsc
 tv_vertical_position: 0 (0x00000000) range: (-5,5)
 tv_horizontal_position: 0 (0x00000000) range: (-5,5)
 tv_horizontal_size: 0 (0x00000000) range: (-5,5)
 load_detection: 0 (0x00000000) range: (0,1)
  1280x1024 (0x4e) 135.0MHz
        h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 80.0KHz
        v: height 1024 start 1025 end 1028 total 1066 clock 75.0Hz

Note that VGA-0 is reported as disconnected by xrandr, however this is the output that I'm using. I have confirmed this by using xrandr to manually shut off the output ('xrandr --output VGA-0 --off', which results in a black screen) and then log in remotely to turn it back on ('xrandr --output VGA-0 --auto -display :0.0', which brings it back).

I spent some time on channel #xorg, and it appears that the issue may be the fact that the monitor type being detected is 0 for both VGA-0 and S-video. I am using a Belkin Omniview switch that might be interfering with EDID detection, but regardless of this, it seems incorrect that a display in use can be reported as disconnected.

I'm assuming that if VGA-0 is reported as connected, xscreensaver will use that screen, and that's what I want to resolve with this bug report.

[lspci]
00:00.0 Host bridge [0600]: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface [8086:2570] (rev 02)
     Subsystem: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface [8086:2570]
03:00.0 VGA compatible controller [0300]: ATI Technologies Inc RV280 [Radeon 9200 PRO] [1002:5960] (rev 01)
     Subsystem: ATI Technologies Inc Device [1002:2002]

Revision history for this message
FactTech (launchpad-facttechnologies) wrote :
Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Also attaching my /etc/X11/xorg.conf file, which may be of interest. It is non-standard; the post-upgrade version was not allowing me to set the correct resolution.

With this xorg.conf file, I still can't change the resolution using the display control (which only shows 'default' as a choice), but I was able to force the default at the resolution I wanted (1280x1024), which is good enough for now. Solving that is a separate issue for me, but it may be related.

Note that the two option lines in the "device" section seem to be being ignored per Xorg.0.log.

Revision history for this message
Charlie Kravetz (cjkgeek) wrote :

Thanks for reporting this bug and any supporting documentation. Since this bug has enough information provided for a developer to begin work, I'm going to mark it as confirmed and let them handle it from here.

Thanks for taking the time to make Ubuntu better!

Changed in xserver-xorg-video-ati:
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
FactTech (launchpad-facttechnologies) wrote :
Download full text (12.3 KiB)

I had a chance to experiment today with connecting directly to the monitor instead of via the Omniview switch, and it does seem to be the case that the switch is interfering with EDID detection. Attached is the captured EDID data, which parses correctly with 'parse-edid' and shows the right information; I was able to obtain it using 'sudo get-edid > sonycpde200-edid.bin' after restarting X once the monitor was directly connected. When connected via the switch, the get-edid command failed to read EDID data.

Here is updated information from 'xrandr -q --verbose', which now registers VGA-0 as connected:

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1680 x 1200
VGA-0 connected 1280x1024+0+0 (0x4e) normal (normal left inverted right x axis y axis) 312mm x 234mm
 Identifier: 0x4c
 Timestamp: 171503566
 Subpixel: no subpixels
 Clones: S-video
 CRTC: 0
 CRTCs: 0 1
 EDID_DATA:
  00ffffffffffff004dd9701416fc8900
  310901020e211896ea0cc9a057479b27
  12484cffff803159455961597159818f
  814fa9400101ea240060410028303060
  130038ea1000001e000000fd0030781e
  5518000a202020202020000000fc0043
  50442d453230300a20202020000000ff
  00393034323936360a202020202000db
 load_detection: 1 (0x00000001) range: (0,1)
  1280x1024 (0x4e) 138.5MHz -HSync +VSync *current +preferred
        h: width 1280 start 1368 end 1504 total 1728 skew 0 clock 80.2KHz
        v: height 1024 start 1025 end 1028 total 1069 clock 75.0Hz
  1024x768 (0x4f) 94.5MHz +HSync +VSync +preferred
        h: width 1024 start 1072 end 1168 total 1376 skew 0 clock 68.7KHz
        v: height 768 start 769 end 772 total 808 clock 85.0Hz
  1600x1200 (0x50) 175.5MHz +HSync +VSync
        h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 81.2KHz
        v: height 1200 start 1201 end 1204 total 1250 clock 65.0Hz
  1600x1200 (0x51) 162.0MHz +HSync +VSync
        h: width 1600 start 1664 end 1856 total 2160 skew 0 clock 75.0KHz
        v: height 1200 start 1201 end 1204 total 1250 clock 60.0Hz
  1600x1200 (0x52) 161.0MHz -HSync +VSync
        h: width 1600 start 1704 end 1880 total 2160 skew 0 clock 74.5KHz
        v: height 1200 start 1201 end 1204 total 1242 clock 60.0Hz
  1680x1050 (0x53) 187.0MHz -HSync +VSync
        h: width 1680 start 1800 end 1976 total 2272 skew 0 clock 82.3KHz
        v: height 1050 start 1053 end 1059 total 1099 clock 74.9Hz
  1680x1050 (0x54) 174.0MHz -HSync +VSync
        h: width 1680 start 1800 end 1976 total 2272 skew 0 clock 76.6KHz
        v: height 1050 start 1053 end 1059 total 1096 clock 69.9Hz
  1680x1050 (0x55) 146.2MHz -HSync +VSync
        h: width 1680 start 1784 end 1960 total 2240 skew 0 clock 65.3KHz
        v: height 1050 start 1053 end 1059 total 1089 clock 60.0Hz
  1600x1024 (0x56) 103.1MHz +HSync +VSync
        h: width 1600 start 1600 end 1656 total 1664 skew 0 clock 62.0KHz
        v: height 1024 start 1024 end 1029 total 1030 clock 60.2Hz
  1400x1050 (0x57) 155.8MHz +HSync +VSync
        h: width 1400 start 1464 end 1784 total 1912 skew 0 clo...

Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Just an idea: I have been reading online about EDID detection problems, and it appears that the nvidia driver allows users to specify an Option line in xorg.conf that points to a binary file containing EDID data. This would be a great feature to add to the radeon driver, particularly if it is done in such a way that it only uses the provided file if EDID detection fails.

Not really directly related to this issue, but it seems like it would be helpful.

Revision history for this message
Bryce Harrington (bryce) wrote : Re: Omniport KVM corrupts monitor EDID for Sony Multiscan E200

Thanks for doing that testing. Yes, KVM corruption of EDID is a pretty widely known issue and unfortunately since the autodetection stuff absolutely depends on EDID, there is not much that the xserver can do in such cases; you simply have to manually configure xorg.conf.

That said, we do have some plans established for better workaround tools. Some discussion is at bug #288807 particularly for laptops. With desktops our options are more limited, but at least we will be investigating GUI utilities for configuring around it.

I'll leave this as a wishlist bug for now, since you've got a good idea about capturing and using stored EDID.

Changed in xserver-xorg-video-ati:
importance: Medium → Wishlist
Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Bryce,

While I appreciate you adding the stored EDID data to the wishlist, and your confirmation that corrupted EDID data is a factor here, I think the essential point of the bug I was driving at may have gotten lost in the shuffle. The main problem I'm having here is the behavior of xrandr, which is reporting a disconnected display even though the display is connected and active. The new title you gave this bug no longer correctly reflects the central point.

It does not seem reasonable for the disconnected/connected status to be "connected" only in cases where a monitor is both connected *and* EDID data was captured correctly. Surely if the display is in use, it must be connected for practical purposes.

Thank you for your courteous reply. I'd appreciate some clarification from you on whether this behavior in xrandr is intended at present and whether it might be changed. If the "disconnected" message is truly considered correct, I can try to take the issue up with the maintainer of xscreensaver.

This is the second time we've crossed paths -- the last time was about my monitor's resolution settings not being detected properly, which was no doubt due to the KVM's interference (see bug 180601 -- actually *that* bug probably deserves this bug's new title). Thanks for your continued dedication to improving Ubuntu.

Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Changed status back to "New" because the central question (behavior of xrandr) was not addressed in triage process.

Changed in xorg-server:
status: Triaged → New
Revision history for this message
Bryce Harrington (bryce) wrote :

Hi launchpad-facttechnologies,

Please attach the output of `lspci -vvnn` too.

[This is an automated message. If this script has reached you erroneously, please accept our apologies; any reply to this message will be sufficient to prevent it from doing further automated processing.]

Changed in xorg-server:
status: New → Incomplete
Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Sure thing! Here you are, and thanks for looking into this more closely.

Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Bryce,

I've reassigned this bug to you since the last post was via automation, and I want to make sure that somebody reviews the core issue of this bug, which is the behavior of xrandr (see post of Jan 15 from me). I do not believe the "wishlist" classification is correct.

If you're not the right person to assign this to, please feel free to reassign it to someone else. I just want to make sure this is on somebody's radar for further investigation.

Thank you again for your efforts to improve Ubuntu.

Changed in xorg-server:
assignee: nobody → bryceharrington
Bryce Harrington (bryce)
Changed in xorg-server:
assignee: bryceharrington → nobody
importance: Wishlist → Medium
status: Incomplete → Triaged
Bryce Harrington (bryce)
description: updated
Bryce Harrington (bryce)
tags: added: intrepid
Bryce Harrington (bryce)
tags: added: xubuntu
Revision history for this message
Bryce Harrington (bryce) wrote :

[This is an automatic notification.]

Hi FactTech,

This bug was reported against an earlier version of Ubuntu, can you
test if it still occurs on Lucid?

Please note we also provide technical support for older versions of
Ubuntu, but not in the bug tracker. Instead, to raise the issue through
normal support channels, please see:

    http://www.ubuntu.com/support

If you are the original reporter and can still reproduce the issue on
Lucid, please run the following command to refresh the report:

  apport-collect 313220

If you are not the original reporter, please file a new bug report, so
we can work with you as the original reporter instead (you can reference
bug 313220 in your report if you think it may be related):

  ubuntu-bug xorg

If by chance you can no longer reproduce the issue on Lucid or if you
feel it is no longer relevant, please mark the bug report 'Fix Released'
or 'Invalid' as appropriate, at the following URL:

  https://bugs.launchpad.net/ubuntu/+bug/313220

Changed in xorg-server (Ubuntu):
status: Triaged → Incomplete
tags: added: needs-retested-on-lucid-by-june
Revision history for this message
FactTech (launchpad-facttechnologies) wrote :

Bryce,

I upgraded a machine attached to the same Belkin KVM switch to Ubuntu 10.04 (Lucid) today, and the output of 'xrandr -q --verbose' on the upgraded machine reports status "connected" for the screen in use. I also confirmed that this machine cannot properly read EDID data using command 'sudo get-edid | parse-edid", so it seems the essential issue for which I posted this bug report has been corrected in Lucid.

The original machine for which I reported the bug is still using Xubuntu 9.04, (Jaunty), and the problem persists there.

Revision history for this message
Charlie Kravetz (cjkgeek) wrote :

We are closing this bug report because it appears to have been fixed in the latest release, Ubuntu 10.04. It won't be fixed in previous versions of Ubuntu because the package doesn't fit the requirements for backporting. See https://help.ubuntu.com/community/UbuntuBackports for more information.

Changed in xorg-server (Ubuntu):
status: Incomplete → Fix Released
Revision history for this message
wistle (charl-wentzel) wrote :

I'm having the problem in 10.04, but it is related to the USB KVM (Trendnet TK-407). I've added my syslog and Xorg.log files to this bug:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/213895

However, I'm posting it here as well due to the apparent conflict in output from get-edid and xrandr.

In short if I boot with the monitor connected via KVM I get a blanks screen instead of a login in screen. To get the screen to work I boot with the monitor connected directly and after booting a connect the monitor via the KVM which then allows switching between PC's successfully.

Suspecting that the KVM corrupts the edid data I tried to verify this by looking at the output from both get-edid and xrandr while connecting the monitor directly and via the KVM.

get-edid/parse-edid:
Whether I connect the monitor directly or via the KVM the output from get-edid (followed by parse-edid) is identical and appears to be correct.

xrandr:
However, the output from "xrandr -q --verbose" is not the same in both cases. When connecting the monitor via KVM it reports the monitor as "disconnected" and with now edid info. When connected directly, the monitor is reported as "connected" with edid info

It seems that xrandr is not as successful in detecting the monitor via the KVM as get-edid is. This may point to a bug in xrandr.

I'm attaching the outputs from get-edid and xrandr as reference

Revision history for this message
wistle (charl-wentzel) wrote :
Revision history for this message
wistle (charl-wentzel) wrote :
Revision history for this message
wistle (charl-wentzel) wrote :
Revision history for this message
wistle (charl-wentzel) wrote :
Revision history for this message
wistle (charl-wentzel) wrote :
Revision history for this message
Mike Mestnik (cheako) wrote :

Hello,
  This bug effects displays that are not monitors, in my case an RGB component connector on a projector TV, where EDID is impossible.

I would be open to cloning this bug. I would be open to other solutions as currently my setup is partly unusable if not broken beyond being usable.

I'll attach some configs and logs. What I'd like is to switch on/off output to the projector TV for watching videos.

cheako@arcadia:~$ xrandr
Screen 0: minimum 320 x 200, current 1600 x 1200, maximum 8192 x 8192
DVI-0 connected 1600x1200+0+0 (normal left inverted right x axis y axis) 390mm x 290mm
   1600x1200 85.0*+ 75.0
   1920x1440 60.0
   1856x1392 60.0
   1792x1344 75.0
   1280x1024 85.0 75.0
   1152x864 75.0
   1024x768 85.0 75.1 70.1 60.0 43.5
   832x624 74.6
   800x600 72.2 75.0 60.3 56.2
   640x480 72.8 75.0 66.7 60.0
   720x400 87.8 70.1
DIN disconnected (normal left inverted right x axis y axis)
DVI-1 disconnected (normal left inverted right x axis y axis)
cheako@arcadia:~$ xrandr --output DVI-0 --off --output DVI-1 --auto; sleep 3; xrandr; sleep 3; xrandr --output DVI-1 --off --output DVI-0 --auto
Screen 0: minimum 320 x 200, current 320 x 200, maximum 8192 x 8192
DVI-0 connected (normal left inverted right x axis y axis)
   1600x1200 85.0 + 75.0
   1920x1440 60.0
   1856x1392 60.0
   1792x1344 75.0
   1280x1024 85.0 75.0
   1152x864 75.0
   1024x768 85.0 75.1 70.1 60.0 43.5
   832x624 74.6
   800x600 72.2 75.0 60.3 56.2
   640x480 72.8 75.0 66.7 60.0
   720x400 87.8 70.1
DIN disconnected (normal left inverted right x axis y axis)
DVI-1 disconnected (normal left inverted right x axis y axis)

Revision history for this message
Mike Mestnik (cheako) wrote :
Revision history for this message
Mike Mestnik (cheako) wrote :
Revision history for this message
Mike Mestnik (cheako) wrote :
To post a comment you must log in.