Fix monitor resolution on linux with nvidia GPU because the monitor EDID information is unavailable.
This fix assume we are using multiple monitor setup with the same monitor, so we can grab the EDID information of the monitor, from the other monitor attached to another output port (D-SUB
, DVI
, HDMI
, DisplayPort
)
In my setup, I have 3 Dell S2415H attached to D-SUB
, HDMI
, and DVI
port.
The monitor which was attached to the D-SUB
port (VGA-0
), doesn't has any EDID information available, thus I was unable to use the native 1920x1080 resolution.
Step to overcome the situation:
- install nvidia driver
- dump binary monitor EDID data using
nvidia-settings
:- run the
nvidia-settings
app - choose monitor which has correct EDID information (I selected
DVI-D0
monitor) - on the right bottom corner, there is a
Acquire EDID...
button - save the EDID in binary format to some location (ie: /etc/X11/dell-s2415h-edid.bin)
- run the
- get the display name of the monitor which doesn't has the EDID information:
- use
nvidia-xconfig --query-gpu-info
command - it will show my
Display Device 0 (CRT-0)
doesn't has any EDID information available - the
CRT-0
will be the display name of the monitor which we will use when updating thexorg.conf
- use
- if we don't have any
xorg.conf
yet in/etc/X11/xorg.conf
, we can generate one usingnvidia-settings
from theXServer Display Configuration
page - edit the
xorg.conf
, and on theDevice
section, add this lineOption "CustomEDID" "CRT-0:/etc/X11/dell-s2415h-edid.bin"
The final xorg.conf
will have something like this:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GT 710"
Option "CustomEDID" "CRT-0:/etc/X11/dell-s2415h-edid.bin"
EndSection
Reference: