Bug 105891

Summary: miniDP to external monitor with DVI-D via miniDP to HDMI/DVI-D/DP adapter : DP dual mode HDMI ID: (err -6) and blank screen
Product: DRI Reporter: genpur
Component: DRM/IntelAssignee: Intel GFX Bugs mailing list <intel-gfx-bugs>
Status: CLOSED WORKSFORME QA Contact: Intel GFX Bugs mailing list <intel-gfx-bugs>
Severity: normal    
Priority: medium CC: genpur, intel-gfx-bugs
Version: XOrg git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: SNB i915 features: display/DP
Attachments:
Description Flags
dmesg_kernel-4.16.0-041600-generic.log
none
dmesg_kernel-4.13.0-38-generic.log
none
EDID of monitor iiyama ProLite E1900S
none
EDID of TV Panasonic
none
dmesg_Problematical_monitor.log
none
dmesg_Non-problematical_PanasonicTV.log none

Description genpur 2018-04-04 21:23:36 UTC
Created attachment 138602 [details]
dmesg_kernel-4.16.0-041600-generic.log

Overview :
Connection from miniDP port (Intel HD Graphics 3000) to DVI-D input of external monitor (iiyama ProLite E1900S) via miniDP to HDMI/DVI/DP adapter (LogiLink CV0045A).

Laptop specification:
Dell XPS L502x with Optimus combo

lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 525M] (rev ff)

Operating system:
Lubuntu 17.10 64-bit with latest kernels :
a) 4.13.0-38-generic - from official ubuntu repositories (sudo apt-get dist-upgrade)
b) 4.16.0-041600-generic - from http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16/

Steps to Reproduce:
1) connect like described above in overview

2a) start laptop with kernel (4.13.0-38-generic) with parameters :
    drm.debug=14 video=HDMI-A-1:1280x1024-16@75D drm_kms_helper.edid_firmware=HDMI-A-1:edid/monitor.bin

OR

2b) start laptop with kernel (4.16.0-041600-generic) with parameters :
    drm.debug=14 video=HDMI-A-1:1280x1024-16@75D drm.edid_firmware=HDMI-A-1:edid/monitor.bin


Actual Results:
1) Blank display of external monitor
2) error : [drm:drm_dp_dual_mode_detect [drm_kms_helper]] DP dual mode HDMI ID:  (err -6)

Expected Results:
Display activated

Additional Information:
When X server has started, I checked some parameters :

cat /sys/class/drm/card1-HDMI-A-1/enabled
enabled

cat /sys/class/drm/card1-HDMI-A-1/status
connected

cat /sys/class/drm/card1-HDMI-A-1/modes
1280x1024
1280x1024
1280x960
1152x864
1024x768
1024x768
1024x768
832x624
800x600
800x600
800x600
800x600
640x480
640x480
640x480
640x480
720x400

------

Before I tried to connect iiyama monitor, I have tried to connect Panasonic-TV via the same adapter without any extra kernel parameters(just normal launch) and TV was working correctly. I have got :
[drm:drm_dp_dual_mode_detect [drm_kms_helper]] DP dual mode HDMI ID: DP-HDMI ADAPTOR\004 (err 0)
instead of
[drm:drm_dp_dual_mode_detect [drm_kms_helper]] DP dual mode HDMI ID:  (err -6)

This is only difference I saw, when display was activated (err 0) and not activated (err -6).

I supposed that problem might be that EDID is not read corectly from iiyama monitor via miniDP/HDMI adapter.
So, I saved EDID from this monitor when I have connected to another computer. I saved EDID of Panasonic-TV, too. I verified both of them and checksum was correct.
Next I have stored EDID into initramfs. I played with kernel parameters (drm.edid_firmware=... , video=... ) on connection with Panasonic TV just to be sure, that I'm using EDID builded-in initram. Display of Panasonic TV seems to work according to those parameters.

Finally, I have connected iiyama monitor and I tried to force state "on" of HDMI-A-1 connector but display was not activated.
Comment 1 genpur 2018-04-04 21:25:52 UTC
Created attachment 138604 [details]
dmesg_kernel-4.13.0-38-generic.log
Comment 2 genpur 2018-04-04 21:27:07 UTC
Created attachment 138605 [details]
EDID of monitor iiyama ProLite E1900S
Comment 3 genpur 2018-04-04 21:27:55 UTC
Created attachment 138606 [details]
EDID of TV Panasonic
Comment 4 Ville Syrjala 2018-04-05 12:46:45 UTC
Not sure I managed to parse the underlying problem correctly. Is is that the EDID read fails with the troublesome monitor+dongle combination?

Please boot with the troublesome monitor+dongle combination without any extra parameters on the kernel cmdline except drm.debug=0xe.
Comment 5 genpur 2018-04-05 17:11:56 UTC
Created attachment 138625 [details]
dmesg_Problematical_monitor.log
Comment 6 genpur 2018-04-05 17:14:54 UTC
Created attachment 138626 [details]
dmesg_Non-problematical_PanasonicTV.log

"Is that the EDID read fails with the troublesome monitor+dongle combination?"

I don't know what is the real cause that problematical monitor is not activated. This is my main problem. First idea was to connect other device to dongle instead of problematical monitor, so I connected TV. TV has been detected without any problem, display was active, everything was working.

Later on, I have found on internet that when people trying to connect some monitors (esspecially via KVM switch or some video adapters) there can be a problem with reading EDID from connected display.
So, I ASSUMED that this can be the reason... To avoid situation that my laptop (because of any reason) can't read EDID properly, I decided to try putting EDID directly (into kernel parameters on boot stage in grub2 or put into initram image). I have expected that in this case my integrated Intel grapics card should force output of miniDP port to desired parameters, like "video=HDMI-A-1:1280x1024-16@75D drm.edid_firmware=HDMI-A-1:edid/monitor.bin". Result was the same - blank monitor - but parameters /sys/class/drm/card1-HDMI-A-1/{modes,enabled,status,edid} where correct.

My conclusion was that EDID has been read "locally" from initram image properly, but it's not enough to activate problematic monitor.

Then I have compared log files of problematical monitor and non-problematical TV. I saw that only difference is here : [drm:drm_dp_dual_mode_detect [drm_kms_helper]]

a) when display was activated
DP dual mode HDMI ID: DP-HDMI ADAPTOR\004 (err 0)

b) when display was not activated
DP dual mode HDMI ID:  (err -6)

I know generally there can be a possibility that EDID is corrupted. But if this will be the case, this problematical monitor should not work with other computer (in my opinion only). But it works.
So I focus on err=-6 right now and ask experts like you for help.

I have attached 2 log files (both are dmesg with drm.debug=0xe extra kernel parameter only)

attachment 1 [details] [review]:
Dongle + Problematical monitor combination

attachment 2 [details] [review]:
Dongle + Non-problematical TV combination
Comment 7 Ville Syrjala 2018-04-05 17:34:44 UTC
Somehow the entire dongle seems to disappear when you plug it into the bad monitor. That's causing the drm_dp_dual_mode_detect() difference. Also it seems to affect the DP AUX channel somehow as the timeouts that I would expect to see are no longer there.

So my theory is that somehow the dongle does not detect your bad monitor and defaults into some kind of DP passthrough mode instead. The dongle has a DP output also right? That could perhaps explain why nothing is detected, and also why no picture goes through when you override the EDID.

Did you try different cables between the dongle and the display? Also trying both the DVI and HDMI oputputs of the dongle is worth a shot. And if the monitor has multiple DVI/HDMI inputs you should also try all of them. If none of that helps then I'm afraid it looks like you need to either get another dongle, or another display.
Comment 8 Jani Saarinen 2018-04-20 19:16:08 UTC
Reporter, can you answer this question made by Ville?
Comment 9 genpur 2018-04-25 12:41:15 UTC
Next days I will try with other dongle. I will give a feedback.
Comment 10 Jani Saarinen 2018-05-04 12:32:55 UTC
Closing, please re-open if occurs again.

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.