Monitor information not properly detected. 1600x900 is highest

The proprietary nvidia driver on linux doesn’t detect my second monitor properly. It puts it to 1600x900@60hz max. The the nouveau and windows drivers detects the monitor properly, can show the model name and can use the 1920x1080@60hz resolution.

I think this is a very similar problem to this thread Can't set resolution higher than 1600x900 but I don’t quite understand what they did to fix it.

The monitor is connected through HDMI. I’m on nvidia driver version 470.74 but I don’t know a driver version where this problem wasn’t a thing. The monitor shows as “DFP-2” in nvidia x server settings

nvidia-bug-report.log.gz (417.8 KB)

The EDID from the monitor can’t be read so it’s falling back to (driver dependant) safe defaults. Did you already try another hdmi-cable, in case it’s just broken?

Yes I have

Noveau and the windows driver are also able to read the monitor’s model name correctly

Is it conected directly to a hdmi output on the gpu or are you using a dp2hdmi adapter?

Yes it is plugged into my 2070S. HDMI<->HDMI connection

Odd. Please try setting kernel parameter

It still exhibits the same problem.

Also, should I remove the parameter?

You can leave it or remove it, as you like. Shouldn’t do any harm.
To at least create a work-around, please use read-edid to fetch the edid from the monitor, possibly using nouveau. Save it in e.g. /etc/X11/dfp2edid.bin and create the file /etc/X11/xorg.conf.d/10-nvidia-dfp2-edid.conf containing

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "CustomEDID" "DFP-2:/etc/X11/dfp2edid.bin"
1 Like

I’m not sure if I did this correctly. I couldn’t get read-edit to work, or at least I don’t know how to use it and it seemed to give errors so I did some searching and grabbed the file at /sys/devices/pci0000:00/0000:00:03.1/0000:26:00.0/drm/card0/card0-HDMI-A-1/edid

The below is what I got, does this seem like what i’m supposed to use?
dfp2edid.bin (256 Bytes)
I used the bless editor to check and it gave the model number of the monitor nvidia couldn’t recognise properly so i just assumed that it is the right file.

I used that as the edid file and did the rest as instructed, copy pasting that stuff into the conf file but it doesn’t seem like it did anything after rebooting

The edid file looks fine. Please create a new nvidia-bug-report.log to check what’s going wrong.

The attachment includes the report after adding the custom edid conf and rebooting.

nvidia-bug-report.log.gz (253.0 KB)

Ok, I rechecked the edid and it simply has a wrong checksum so it’s ignored by the driver. Please change your xorg.conf to this:

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "IgnoreEDIDChecksum" "DFP-2"
1 Like

Alright this worked. Do you think this is a bug with the driver or it’s something to do with my setup?

If it’s the former, is there an issue tracker anywhere?

It’s a problem with your monitor’s edid, it’s slightly broken. While any other driver like nouveau uses it anyway, the nvidia driver per default ignores it. With earlier driver versions, there was a warning printed in the logs by the driver but this was obviously dropped unless put into modedebug.
Conclusion: monitor beginning to break.

ohh. I assume the windows driver is different to linux’ in this regard then

Yes, after WinXP, the win drivers have no safety checks. The Linux driver is behaving veeery conservatively.

Btw, do you know how I would do this when Nvidia GBM (for wayland) comes around on their standard driver release. The file path and conf name seem to suggest that this would only work on X11.

I know nothing, but I guess this will be handled solely by the compositor due to direct drm access. Though I don’t know how to fiddle with modes when really no edid is available. So no driver settings needed but compositor settings.

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