Bug 108047

Summary: No recognition of DVI-D monitor
Product: xorg Reporter: Wolfgang <wolle321>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
i915 platform: i915 features:
Description Flags
dmesg without DVI
Xorg.log without DVI
dmesg with DVI plugged
Xorg.log with DVI plugged
dmesg with DVI plugged kms forced
Xorg.log with DVI plugged kms forced none

Description Wolfgang 2018-09-24 18:27:49 UTC
Created attachment 141717 [details]


I try to get my external monitor to work with my laptop. But there is no signal at the DVI output. Internal LVDS-1 works like expected.

I tried 
    an other monitor, 
    an other DVI-(dualchannel)-cable, 
    HDMI output direct at the laptop. 
Monitor(s) keep on saying "no signal".

Forcing kms video=DVI-D-1:e => DVI-D-1 on with 1024x786
Forcing kms video=DVI-D-1:1600x1200e => 
    DVI-D-1 on 1600x1200 but my monitor has 1920x1200 native resolution
Forcing kms video=DVI-D-1:1920x1200e => 
    DVI-D-1 on picture is 1920x1200 but monitor 
    reports 960x1200 and picture is pixelated

I'm on Ubuntu 18.04, 
Device is a HP Elitebook8730w with docking station and DVI-D output.

As I saw, with the help of Ilia Mirkin from your team, there is no EDID data reported in Xorg.log at DVI-D-1 (equal if forced kms or default boot)

There is a message "mxm: unmatched output device" in dmesg but it is also there
when boot with unplugged DVI monitor. Ilia adviced me to add vbios.rom, to check this. 
/sys/class/drm/card0-DVI-D-1/edid is empty
/sys/class/drm/card0-LVDS-1/edid has data

Adding dmesg and Xorg.log with plugged and unplugged DVI, both without kms forcing. 

Thank you, Wolfgang
Comment 1 Wolfgang 2018-09-24 18:29:32 UTC
Created attachment 141718 [details]
dmesg without DVI
Comment 2 Wolfgang 2018-09-24 18:31:56 UTC
Created attachment 141719 [details]
Xorg.log without DVI
Comment 3 Wolfgang 2018-09-24 18:32:35 UTC
Created attachment 141720 [details]
dmesg with DVI plugged
Comment 4 Wolfgang 2018-09-24 18:33:14 UTC
Created attachment 141721 [details]
Xorg.log with DVI plugged
Comment 5 Wolfgang 2018-09-24 18:34:48 UTC
Created attachment 141722 [details]
dmesg with DVI plugged kms forced
Comment 6 Wolfgang 2018-09-24 18:35:46 UTC
Created attachment 141723 [details]
Xorg.log with DVI plugged kms forced
Comment 7 Wolfgang 2018-09-24 18:38:28 UTC
Added dmesg and Xorg.log with forced DVI-D-1 enabled by kms.
Comment 8 Wolfgang 2018-10-04 06:02:09 UTC
Hello again, 

sending a friendly ping to this report.

Does anybody knows, how to switch on the DVI-D Output per default, or should nouveau detect it automatically without doing anything?

Is this something special from Ubuntu or normal nouveau behavior?

Why does the monitor  run with 960x1200 while the picture has 1920x1200 when I force 1920x1200 (this looks really like a bug), 960 is the half of 1920.

(The exactly same hardware setting works with proprietary nvidia driver, but the GPU now is to old, the fitting nvidia driver is not supported by modern kernels anymore, so ubuntu deleted it from repos, and I would love to use Nouveau insted)

Thank you again.
Comment 9 Wolfgang 2018-10-04 06:06:12 UTC
Another idea is, if there is a problem with der EDID-Data on DVI-D, (but there is no error in the logs, only the line that is not connected), could I fake the EDID-Data-Block somehow, to get the native resolution on my Monitor?
Comment 10 Wolfgang 2018-10-08 06:57:51 UTC
Finally I got a workaround, with a lot of pain.
The problem, that Nouveau doesnt find my connected DVI-display still persists.

I tried to load a custom EDID-file from /lib/firmware/edid/.
This failed, it seems that the driver doesnt load EDID for "not connected" displays. Forcing enabled DVI-D-1 didnt help too, I think the display is enabled to late. But for those, who want to fix wrong EDID-Data this wight work:

The kms-parameter was on older kernels:
actually with newer kernels it is 

But the idea was not so bad: how to get correct EDID-data for my DVI-monitor:
I installed nvidia-driver (which freezes after 20 min but detects the monitior out of the box).
The same thing like under nouveau: only the LVDS-monitor EDID is found with get-edid, but xrandr --verbose showed me the EDID of the DVI-Monitor (why? thanks you xrandr!).
I wrote the EDID in a Hex-editor and parsed it with parse-edid. So I got the definitely working modeline for 1920x1200 for my DVI-Monitor.
(It looks different from cvt-generated one, and I think the kernel uses the same algorithm, when I force the resolution with kms video=DVI-D-1:1920x1200e, which produced the 960x1200 monitor resolution with the 1920x1200 desktop resolution behind).

So the final workaround back on nouveau is: 
1.booting with video=DVI-D-1:e and starting up with 1024x768 kernel default resolution. 
1.1 Also add a grub entry without enabling the DVI port because the LVDS doesnt show the LightDM login dialog, when DVI is forced enabled but not plugged in.
2.When logging in calling a script, what creates, adds and calls the right modline (stolen from nvidia-driver) for my DVI-display.

Not very nice, but works. 
Could you explain, why nouveu doesnt detect the DVI-monitor, but nvidia does?
Is this a bug?

Thanks to Ilia Mirkin, who how gave me some hints.
Comment 11 Martin Peres 2019-12-04 09:45:31 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/460.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.