Laptop Ubuntu 20.04 Only nativ screen turns black, when nvidia card takes over, missing EDID?

TLDR Problem:
The nativ screen of my laptop turns black after the graphics card takes over after boot. Other connected screen work fine.

Prerequisits:

  • Hardware
    • Laptop: XMG P507 Pro
    • Graphics Card: Geforce GTX 1070 Mobile
    • CPU: Intel i7 with on board GPU
    • Nativ screen: Resolution Full HD
    • Attached screen via HDMI for debugging
  • Software
    • Ubuntu 20.04.1 (5.13.0-30-generic)
    • tried nvidia-driver-(390,430,470,515)(-server)

Problem description:
On boot the nativ screen just works fine with BIOS and GRUB. After the nvidia GPU takes over in the boot process of Ubuntu the nativ screen turns black. I can debug the computer by attaching a screen using HDMI, when using nvidia drivers.

Analysis
xrandr tells me that the screen has a resolution of 640x480 and it is activated:

DP-0 connected 640x480+2560+0 (0x1d6) normal (normal left inverted right x axis y axis) 0mm x 0mm
    Identifier: 0x1d8
    Timestamp:  109907
    Subpixel:   unknown
    Gamma:      1.0:1.0:1.0
    Brightness: 1.0
    Clones:    
    CRTC:       1
    CRTCs:      1 0 2 3
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 
    _MUTTER_PRESENTATION_OUTPUT: 0 
    CTM: 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 
        0 1 
    CscMatrix: 65536 0 0 0 0 65536 0 0 0 0 65536 0 
    Backlight: 100 
        range: (0, 100)
    EDID: 
        00ffffffffffff003ac4000000000000
        0000010495000078ee91a3544c99260f
        50540020000001010101010101010101
        01010101010100000000000000000000
        00000000000000000000000000000000
        00000000000000000000000000000000
        00000000000000000000000000000000
        00000000000000000000000000000092
    BorderDimensions: 4 
        supported: 4
    Border: 0 0 0 0 
        range: (0, 65535)
    SignalFormat: DisplayPort 
        supported: DisplayPort
    ConnectorType: Panel 
    ConnectorNumber: 3 
    _ConnectorLocation: 3 
    non-desktop: 0 
        supported: 0, 1

This hints that there is something wrong with the EDID. So when I disconnect the screen and run: sudo get-edid | parse-edid

This is read-edid version 3.0.2. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 2
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
Looks like no busses have an EDID. Sorry!
Attempting to use the classical VBE interface
mmap /dev/zero: Operation not permitted
error initialising realmode interface
do you have full superuser (root) permissions?
I'm sorry nothing was successful. Maybe try some other arguments
if you played with them, or send an email to Matthew Kern <pyrophobicman@gmail.com>.

When activating intel for the dispaly, the nativ screen works fine. But the HMDI connected screen is not recognized. xrandr gives me the following:

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected primary 1920x1080+0+0 (0x526) normal (normal) 0mm x 0mm
    Identifier: 0x525
    Timestamp:  31131
    Subpixel:   unknown
    Clones:    
    CRTC:       0
    CRTCs:      0
    Transform:  1.000000 0.000000 0.000000
                0.000000 1.000000 0.000000
                0.000000 0.000000 1.000000
               filter: 
    _MUTTER_PRESENTATION_OUTPUT: 0 
    non-desktop: 0 
        supported: 0, 1
  1920x1080 (0x526) 159.667MHz *current
        h: width  1920 start    0 end    0 total 1920 skew    0 clock  83.16KHz
        v: height 1080 start    0 end    0 total 1080           clock  77.00Hz

With intel get-edid also can’t find an edid.

When booting into Windows, the nvidia card works fine. I can also retrieve the information from the edid there.
When switching to nouveau, booth nativ and HDMI screen turn black.
data (1.7 MB)

You’re running into a bug of the nvidia driver with the display’s firmware resulting in some incorrect EDID.
Please see this thread for a workaround:
https://forums.developer.nvidia.com/t/rtx-2080-super-gigabyte-aorus-fi27q-driver-510-54-maximum-screen-resolution-640x480-via-dp-0/210786/2?u=generix

Basically downgrade to 470, extract edid, upgrade to latest driver then use CustomEDID option.

Dear Generix,
The solution you proposed. Did not work for me. This problem exists with any available driver version from 390 to 515. So changing to 470 did not enabled me to read the need EDID.
However I get the screen running, when I use the Option “UseEdid” “False” and some modifications.
An idea I had was reading the EDID using Windows, however there I’m no root so I’m little stuck.

Actually, I don’t think you’ll get an edid from Windows either. Please check the Device Manager, if it’s displaying something like “standard pnp monitor” there’s no edid but a standard resolution is used instead, like with the intel gpu on linux.
If not, DumpEDID should be able to extract the edid from the registry without administrator privileges.

Yes, this is how it just is. It’s a standard pnp monitor and I don’t get any information from DumpEDID.
So I fixed the problem, similar to the post you send earlier: adding a /etx/X11/xorg.conf and add

    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 75.0

to Section "Monitor",

    Option         "metamodes" "1920x1080_60 +0+0"

to Section "Screen" and

    Option “UseEdid” “False”

to Section "Device".
So do you have an idea, why it just stopped working on linux? Because nvidia worked out of the box until the end of last year… Just stopped at some minor updates.

I suspect the flash-rom containing the edid on the panel broke. The nvidia linux driver is very stubborn when it comes to missing/broken edid.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.