You are not logged in.

#1 2015-02-26 00:44:31

stri
Member
Registered: 2014-06-09
Posts: 75

[SOLVED] Flickering in external screen: xrandr, corrupted EDID

Hi,

I have two external monitors which I often attach/detach on my VGA port connected to an intel i915 driven GPU.

One of the monitors has a corrupted EDID, and I set the resolution and other parameters manually with xrandr.

The problem is that when I have the monitor with corrupted EDID attached, the screen starts flickering when I open konsole (KDE). It continues flickering for a random amount of time, and renders the system almost irresponsive during that time. I assume this is because konsole queries my screen resolution when opening (but I'm not sure).

I can also get the same flickering by just executing "xrandr -q". Xrandr takes a random amount to terminate, during which the screen flickers.

I assume that all of this is due to the corrupted EDID.

I am aware that I can create a non-corrupted custom EDID and load it during kernel modesetting. But the problem here is that I want to switch between my two external VGA monitors! I wouldn't want the custom edid to be applied to the monitor with the intact EDID.

Is it necessary/helpful to disable KMS completely in this case? Even if I did that, would xrandr then stop trying to query the EDID and thus get rid of the screen flickering?


Thanks, Stefan

Last edited by stri (2015-02-26 03:28:28)

Offline

#2 2015-02-26 03:25:27

stri
Member
Registered: 2014-06-09
Posts: 75

Re: [SOLVED] Flickering in external screen: xrandr, corrupted EDID

I made some progress:

I noticed that when I do

echo "edid/1024x768.bin"> /sys/module/drm_kms_helper/parameters/edid_firmware 

as root, the problem disappears. See the wiki page on Kernel mode setting on what that does. What I didn't realize is that this can be set and modified at runtime! Note that neither of my two monitors has this resolution. I guess supplying *any* valid EDID solves the problem. To override that valid, but inappropriate EDID, just use the xrandr "newmode" and "addmode" options, as described in the xrandr wiki.

Thanks, S

Last edited by stri (2015-02-26 03:27:49)

Offline

#3 2015-02-27 09:16:39

stri
Member
Registered: 2014-06-09
Posts: 75

Re: [SOLVED] Flickering in external screen: xrandr, corrupted EDID

I added the above to the script triggered by an udev rule, and it works fine in principle.

One drawback (but not a problem for me now) is that when I have a konsole running in my external monitor "tv" (with corrupted EDID), then konsole segfaults when I disconnect the "tv". Don't know why.  This is the relevant section of journactl -b:

Feb 27 20:00:20 kistn kernel: [drm] Got external EDID base block and 0 extensions from "edid/tv.bin" for connector "LVD
Feb 27 20:00:20 kistn kernel: [drm] Got external EDID base block and 0 extensions from "edid/tv.bin" for connector "LVD
Feb 27 20:00:20 kistn kernel: [drm] Got external EDID base block and 0 extensions from "edid/tv.bin" for connector "LVD
Feb 27 20:00:20 kistn kernel: [drm] Got external EDID base block and 0 extensions from "edid/tv.bin" for connector "LVD
Feb 27 20:00:20 kistn kernel: [drm] Got external EDID base block and 0 extensions from "edid/tv.bin" for connector "LVD
Feb 27 20:00:20 kistn kernel: [drm:edid_load] *ERROR* Requesting EDID firmware "" failed (err=-22)
Feb 27 20:00:20 kistn kernel: konsole[19179]: segfault at 14 ip b64b12a6 sp bf8fdaa0 error 4 in libQt5Widgets.so.5.4.0[
Feb 27 20:00:21 kistn systemd-coredump[19213]: Process 19179 (konsole) of user 1000 dumped core.

Offline

Board footer

Powered by FluxBB